Bug 1055585 - Support OP_SOURCE blend mode in CompositorOGL. r=mattwoodrow

This commit is contained in:
Markus Stange 2014-08-20 17:23:57 +02:00
Родитель e7720a7604
Коммит 956961d1a3
2 изменённых файлов: 7 добавлений и 6 удалений

Просмотреть файл

@ -976,8 +976,8 @@ static bool SetBlendMode(GLContext* aGL, gfx::CompositionOp aBlendMode, bool aIs
GLenum srcBlend;
GLenum dstBlend;
GLenum srcColorBlend = LOCAL_GL_ONE;
GLenum dstColorBlend = LOCAL_GL_ONE;
GLenum srcAlphaBlend = LOCAL_GL_ONE;
GLenum dstAlphaBlend = LOCAL_GL_ONE;
switch (aBlendMode) {
case gfx::CompositionOp::OP_OVER:
@ -996,10 +996,10 @@ static bool SetBlendMode(GLContext* aGL, gfx::CompositionOp aBlendMode, bool aIs
dstBlend = LOCAL_GL_ONE_MINUS_SRC_ALPHA;
break;
case gfx::CompositionOp::OP_SOURCE:
srcBlend = LOCAL_GL_ONE;
srcBlend = aIsPremultiplied ? LOCAL_GL_ONE : LOCAL_GL_SRC_ALPHA;
dstBlend = LOCAL_GL_ZERO;
srcColorBlend = LOCAL_GL_ONE;
dstColorBlend = LOCAL_GL_ZERO;
srcAlphaBlend = LOCAL_GL_ONE;
dstAlphaBlend = LOCAL_GL_ZERO;
break;
default:
MOZ_ASSERT_UNREACHABLE("Unsupported blend mode!");
@ -1007,7 +1007,7 @@ static bool SetBlendMode(GLContext* aGL, gfx::CompositionOp aBlendMode, bool aIs
}
aGL->fBlendFuncSeparate(srcBlend, dstBlend,
srcColorBlend, dstColorBlend);
srcAlphaBlend, dstAlphaBlend);
return true;
}

Просмотреть файл

@ -186,6 +186,7 @@ public:
SupportsPartialTextureUpdate());
result.mSupportedBlendModes += gfx::CompositionOp::OP_SCREEN;
result.mSupportedBlendModes += gfx::CompositionOp::OP_MULTIPLY;
result.mSupportedBlendModes += gfx::CompositionOp::OP_SOURCE;
return result;
}