Add min and max blend modes.
TRAC #22836
Signed-off-by: Geoff Lang
Signed-off-by: Nicolas Capens
Author: Jamie Madill
git-svn-id: https://angleproject.googlecode.com/svn/branches/es3proto@2120 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 156562e..d01df47 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -559,12 +559,23 @@
try
{
+ gl::Context *context = gl::getNonLostContext();
+
switch (modeRGB)
{
case GL_FUNC_ADD:
case GL_FUNC_SUBTRACT:
case GL_FUNC_REVERSE_SUBTRACT:
break;
+
+ case GL_MIN:
+ case GL_MAX:
+ if (context && context->getClientVersion() < 3)
+ {
+ return gl::error(GL_INVALID_ENUM);
+ }
+ break;
+
default:
return gl::error(GL_INVALID_ENUM);
}
@@ -575,12 +586,19 @@
case GL_FUNC_SUBTRACT:
case GL_FUNC_REVERSE_SUBTRACT:
break;
+
+ case GL_MIN:
+ case GL_MAX:
+ if (context && context->getClientVersion() < 3)
+ {
+ return gl::error(GL_INVALID_ENUM);
+ }
+ break;
+
default:
return gl::error(GL_INVALID_ENUM);
}
- gl::Context *context = gl::getNonLostContext();
-
if (context)
{
context->setBlendEquation(modeRGB, modeAlpha);
diff --git a/src/libGLESv2/renderer/renderer11_utils.cpp b/src/libGLESv2/renderer/renderer11_utils.cpp
index 5f01dc1..0208194 100644
--- a/src/libGLESv2/renderer/renderer11_utils.cpp
+++ b/src/libGLESv2/renderer/renderer11_utils.cpp
@@ -51,6 +51,8 @@
case GL_FUNC_ADD: d3dBlendOp = D3D11_BLEND_OP_ADD; break;
case GL_FUNC_SUBTRACT: d3dBlendOp = D3D11_BLEND_OP_SUBTRACT; break;
case GL_FUNC_REVERSE_SUBTRACT: d3dBlendOp = D3D11_BLEND_OP_REV_SUBTRACT; break;
+ case GL_MIN: d3dBlendOp = D3D11_BLEND_OP_MIN; break;
+ case GL_MAX: d3dBlendOp = D3D11_BLEND_OP_MAX; break;
default: UNREACHABLE();
}