Commit 50cac57a by Geoff Lang Committed by Commit Bot

Make GL_EXT_blend_minmax enableable.

BUG=angleproject:1523 Change-Id: I73df8d9a23c3d22792abde44b495be7478abfc22 Reviewed-on: https://chromium-review.googlesource.com/685648 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
parent 8c7133ca
......@@ -653,7 +653,7 @@ const ExtensionInfoMap &GetExtensionInfoMap()
map["GL_EXT_disjoint_timer_query"] = esOnlyExtension(&Extensions::disjointTimerQuery);
map["GL_EXT_robustness"] = esOnlyExtension(&Extensions::robustness);
map["GL_KHR_robust_buffer_access_behavior"] = esOnlyExtension(&Extensions::robustBufferAccessBehavior);
map["GL_EXT_blend_minmax"] = esOnlyExtension(&Extensions::blendMinMax);
map["GL_EXT_blend_minmax"] = enableableExtension(&Extensions::blendMinMax);
map["GL_ANGLE_framebuffer_blit"] = esOnlyExtension(&Extensions::framebufferBlit);
map["GL_ANGLE_framebuffer_multisample"] = esOnlyExtension(&Extensions::framebufferMultisample);
map["GL_ANGLE_instanced_arrays"] = esOnlyExtension(&Extensions::instancedArrays);
......
......@@ -4398,16 +4398,18 @@ bool ValidateBindRenderbuffer(ValidationContext *context, GLenum target, GLuint
return true;
}
static bool ValidBlendEquationMode(GLenum mode)
static bool ValidBlendEquationMode(const ValidationContext *context, GLenum mode)
{
switch (mode)
{
case GL_FUNC_ADD:
case GL_FUNC_SUBTRACT:
case GL_FUNC_REVERSE_SUBTRACT:
return true;
case GL_MIN:
case GL_MAX:
return true;
return context->getClientVersion() >= ES_3_0 || context->getExtensions().blendMinMax;
default:
return false;
......@@ -4425,7 +4427,7 @@ bool ValidateBlendColor(ValidationContext *context,
bool ValidateBlendEquation(ValidationContext *context, GLenum mode)
{
if (!ValidBlendEquationMode(mode))
if (!ValidBlendEquationMode(context, mode))
{
ANGLE_VALIDATION_ERR(context, InvalidEnum(), InvalidBlendEquation);
return false;
......@@ -4436,13 +4438,13 @@ bool ValidateBlendEquation(ValidationContext *context, GLenum mode)
bool ValidateBlendEquationSeparate(ValidationContext *context, GLenum modeRGB, GLenum modeAlpha)
{
if (!ValidBlendEquationMode(modeRGB))
if (!ValidBlendEquationMode(context, modeRGB))
{
ANGLE_VALIDATION_ERR(context, InvalidEnum(), InvalidBlendEquation);
return false;
}
if (!ValidBlendEquationMode(modeAlpha))
if (!ValidBlendEquationMode(context, modeAlpha))
{
ANGLE_VALIDATION_ERR(context, InvalidEnum(), InvalidBlendEquation);
return false;
......
......@@ -552,6 +552,31 @@ TEST_P(WebGLCompatibilityTest, EnableRenderMipmapExtension)
}
}
// Test enabling the GL_EXT_blend_minmax extension
TEST_P(WebGLCompatibilityTest, EnableBlendMinMaxExtension)
{
EXPECT_FALSE(extensionEnabled("GL_EXT_blend_minmax"));
// This extensions become core in in ES3/WebGL2.
ANGLE_SKIP_TEST_IF(getClientMajorVersion() >= 3);
glBlendEquation(GL_MIN);
EXPECT_GL_ERROR(GL_INVALID_ENUM);
glBlendEquation(GL_MAX);
EXPECT_GL_ERROR(GL_INVALID_ENUM);
if (extensionRequestable("GL_EXT_blend_minmax"))
{
glRequestExtensionANGLE("GL_EXT_blend_minmax");
EXPECT_GL_NO_ERROR();
glBlendEquation(GL_MIN);
glBlendEquation(GL_MAX);
EXPECT_GL_NO_ERROR();
}
}
// Verify that the context generates the correct error when the framebuffer attachments are
// different sizes
TEST_P(WebGLCompatibilityTest, FramebufferAttachmentSizeMissmatch)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment