Bug 716439; using mask layers in OGL. r=BenWa

This commit is contained in:
Nicholas Cameron
2012-03-19 09:08:53 +13:00
parent 7d0c43e3f3
commit 02609626e6
4 changed files with 30 additions and 7 deletions

View File

@@ -249,7 +249,9 @@ CanvasLayerOGL::RenderLayer(int aPreviousDestination,
if (useGLContext) {
gl()->BindTex2DOffscreen(mCanvasGLContext);
program = mOGLManager->GetBasicLayerProgram(CanUseOpaqueSurface(), true);
program = mOGLManager->GetBasicLayerProgram(CanUseOpaqueSurface(),
true,
GetMaskLayer() ? Mask2d : MaskNone);
} else if (mDelayedUpdates) {
NS_ABORT_IF_FALSE(mCanvasSurface || mDrawTarget, "WebGL canvases should always be using full texture upload");
@@ -269,7 +271,7 @@ CanvasLayerOGL::RenderLayer(int aPreviousDestination,
}
if (!program) {
program = mOGLManager->GetProgram(mLayerProgram);
program = mOGLManager->GetProgram(mLayerProgram, GetMaskLayer());
}
#if defined(MOZ_WIDGET_GTK2) && !defined(MOZ_PLATFORM_MAEMO)
@@ -286,6 +288,7 @@ CanvasLayerOGL::RenderLayer(int aPreviousDestination,
program->SetLayerOpacity(GetEffectiveOpacity());
program->SetRenderOffset(aOffset);
program->SetTextureUnit(0);
program->LoadMask(GetMaskLayer());
if (gl()->CanUploadNonPowerOfTwo()) {
mOGLManager->BindAndDrawQuad(program, mNeedsYFlip ? true : false);
@@ -394,6 +397,7 @@ ShadowCanvasLayerOGL::RenderLayer(int aPreviousFrameBuffer,
{
mOGLManager->MakeCurrent();
//TODO[nrc] shadow layer masking?
ShaderProgramOGL *program =
mOGLManager->GetProgram(mTexImage->GetShaderProgramType());