EGLImageLayerCompositingThreadClient.cpp [plain text]
#include "config.h"
#include "EGLImageLayerCompositingThreadClient.h"
#if USE(ACCELERATED_COMPOSITING)
#include "LayerCompositingThread.h"
#include <BlackBerryPlatformGLES2Program.h>
#include <BlackBerryPlatformGLES2SharedTexture.h>
#include <BlackBerryPlatformGraphics.h>
#include <BlackBerryPlatformLog.h>
#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
using namespace BlackBerry::Platform::Graphics;
namespace WebCore {
EGLImageLayerCompositingThreadClient::~EGLImageLayerCompositingThreadClient()
{
ASSERT(!m_textureAccessor);
}
void EGLImageLayerCompositingThreadClient::uploadTexturesIfNeeded(LayerCompositingThread*)
{
}
void EGLImageLayerCompositingThreadClient::drawTextures(LayerCompositingThread* layer, const GLES2Program& program, double , const FloatRect& )
{
if (!m_textureAccessor || !m_textureAccessor->textureID())
return;
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glUseProgram(program.m_program);
glUniform1f(program.opacityLocation(), layer->drawOpacity());
glVertexAttribPointer(program.positionLocation(), 2, GL_FLOAT, GL_FALSE, 0, layer->transformedBounds().data());
glVertexAttribPointer(program.texCoordLocation(), 2, GL_FLOAT, GL_FALSE, 0, layer->textureCoordinates(LayerCompositingThread::UpsideDown).data());
glBindTexture(GL_TEXTURE_2D, m_textureAccessor->textureID());
glDrawArrays(GL_TRIANGLE_FAN, 0, layer->transformedBounds().size());
}
void EGLImageLayerCompositingThreadClient::deleteTextures(LayerCompositingThread*)
{
delete m_textureAccessor;
m_textureAccessor = 0;
}
void EGLImageLayerCompositingThreadClient::bindContentsTexture(LayerCompositingThread*)
{
if (m_textureAccessor)
glBindTexture(GL_TEXTURE_2D, m_textureAccessor->textureID());
}
void EGLImageLayerCompositingThreadClient::setTextureAccessor(GLES2SharedTextureAccessor* textureAccessor)
{
if (m_textureAccessor == textureAccessor)
return;
delete m_textureAccessor;
m_textureAccessor = textureAccessor;
}
}
#endif // USE(ACCELERATED_COMPOSITING)