Commit dc3477f3 by Le Hoang Quyen Committed by Commit Bot

Separate GLES1's state enum switch code from GLES2+

Some enum values such as GLES1's GL_CLIP_PLANE0 and GLES2+'s GL_CLIP_DISTANCE0_EXT have the same value. Thus, the enum switch code has to be separated for GLES1 & GLES2+ Bug: angleproject:4481 Change-Id: I2fcb95f3f75f1fe683a072bee02e797a95686480 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2145284 Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarJonah Ryan-Davis <jonahr@google.com>
parent 8c67c079
...@@ -1100,60 +1100,66 @@ void State::setEnableFeature(GLenum feature, bool enabled) ...@@ -1100,60 +1100,66 @@ void State::setEnableFeature(GLenum feature, bool enabled)
{ {
case GL_MULTISAMPLE_EXT: case GL_MULTISAMPLE_EXT:
setMultisampling(enabled); setMultisampling(enabled);
break; return;
case GL_SAMPLE_ALPHA_TO_ONE_EXT: case GL_SAMPLE_ALPHA_TO_ONE_EXT:
setSampleAlphaToOne(enabled); setSampleAlphaToOne(enabled);
break; return;
case GL_CULL_FACE: case GL_CULL_FACE:
setCullFace(enabled); setCullFace(enabled);
break; return;
case GL_POLYGON_OFFSET_FILL: case GL_POLYGON_OFFSET_FILL:
setPolygonOffsetFill(enabled); setPolygonOffsetFill(enabled);
break; return;
case GL_SAMPLE_ALPHA_TO_COVERAGE: case GL_SAMPLE_ALPHA_TO_COVERAGE:
setSampleAlphaToCoverage(enabled); setSampleAlphaToCoverage(enabled);
break; return;
case GL_SAMPLE_COVERAGE: case GL_SAMPLE_COVERAGE:
setSampleCoverage(enabled); setSampleCoverage(enabled);
break; return;
case GL_SCISSOR_TEST: case GL_SCISSOR_TEST:
setScissorTest(enabled); setScissorTest(enabled);
break; return;
case GL_STENCIL_TEST: case GL_STENCIL_TEST:
setStencilTest(enabled); setStencilTest(enabled);
break; return;
case GL_DEPTH_TEST: case GL_DEPTH_TEST:
setDepthTest(enabled); setDepthTest(enabled);
break; return;
case GL_BLEND: case GL_BLEND:
setBlend(enabled); setBlend(enabled);
break; return;
case GL_DITHER: case GL_DITHER:
setDither(enabled); setDither(enabled);
break; return;
case GL_PRIMITIVE_RESTART_FIXED_INDEX: case GL_PRIMITIVE_RESTART_FIXED_INDEX:
setPrimitiveRestart(enabled); setPrimitiveRestart(enabled);
break; return;
case GL_RASTERIZER_DISCARD: case GL_RASTERIZER_DISCARD:
setRasterizerDiscard(enabled); setRasterizerDiscard(enabled);
break; return;
case GL_SAMPLE_MASK: case GL_SAMPLE_MASK:
setSampleMaskEnabled(enabled); setSampleMaskEnabled(enabled);
break; return;
case GL_DEBUG_OUTPUT_SYNCHRONOUS: case GL_DEBUG_OUTPUT_SYNCHRONOUS:
mDebug.setOutputSynchronous(enabled); mDebug.setOutputSynchronous(enabled);
break; return;
case GL_DEBUG_OUTPUT: case GL_DEBUG_OUTPUT:
mDebug.setOutputEnabled(enabled); mDebug.setOutputEnabled(enabled);
break; return;
case GL_FRAMEBUFFER_SRGB_EXT: case GL_FRAMEBUFFER_SRGB_EXT:
setFramebufferSRGB(enabled); setFramebufferSRGB(enabled);
break; return;
case GL_TEXTURE_RECTANGLE_ANGLE: case GL_TEXTURE_RECTANGLE_ANGLE:
mTextureRectangleEnabled = enabled; mTextureRectangleEnabled = enabled;
break; return;
}
// GLES1 emulation ASSERT(mClientVersion.major == 1);
// GLES1 emulation. Need to separate from main switch due to some enums that
// could be conflicted between GLES1 & GLES2+
switch (feature)
{
case GL_ALPHA_TEST: case GL_ALPHA_TEST:
mGLES1State.mAlphaTestEnabled = enabled; mGLES1State.mAlphaTestEnabled = enabled;
break; break;
...@@ -1273,7 +1279,12 @@ bool State::getEnableFeature(GLenum feature) const ...@@ -1273,7 +1279,12 @@ bool State::getEnableFeature(GLenum feature) const
return mProgramBinaryCacheEnabled; return mProgramBinaryCacheEnabled;
case GL_TEXTURE_RECTANGLE_ANGLE: case GL_TEXTURE_RECTANGLE_ANGLE:
return mTextureRectangleEnabled; return mTextureRectangleEnabled;
}
ASSERT(mClientVersion.major == 1);
switch (feature)
{
// GLES1 emulation // GLES1 emulation
case GL_ALPHA_TEST: case GL_ALPHA_TEST:
return mGLES1State.mAlphaTestEnabled; return mGLES1State.mAlphaTestEnabled;
......
...@@ -665,7 +665,18 @@ bool ValidCap(const Context *context, GLenum cap, bool queryOnly) ...@@ -665,7 +665,18 @@ bool ValidCap(const Context *context, GLenum cap, bool queryOnly)
case GL_ROBUST_RESOURCE_INITIALIZATION_ANGLE: case GL_ROBUST_RESOURCE_INITIALIZATION_ANGLE:
return queryOnly && context->getExtensions().robustResourceInitialization; return queryOnly && context->getExtensions().robustResourceInitialization;
// GLES1 emulation: GLES1-specific caps case GL_TEXTURE_RECTANGLE_ANGLE:
return context->getExtensions().webglCompatibility;
}
// GLES1 emulation: GLES1-specific caps after this point
if (context->getClientVersion().major != 1)
{
return false;
}
switch (cap)
{
case GL_ALPHA_TEST: case GL_ALPHA_TEST:
case GL_VERTEX_ARRAY: case GL_VERTEX_ARRAY:
case GL_NORMAL_ARRAY: case GL_NORMAL_ARRAY:
...@@ -704,8 +715,6 @@ bool ValidCap(const Context *context, GLenum cap, bool queryOnly) ...@@ -704,8 +715,6 @@ bool ValidCap(const Context *context, GLenum cap, bool queryOnly)
case GL_POINT_SPRITE_OES: case GL_POINT_SPRITE_OES:
return context->getClientVersion() < Version(2, 0) && return context->getClientVersion() < Version(2, 0) &&
context->getExtensions().pointSpriteOES; context->getExtensions().pointSpriteOES;
case GL_TEXTURE_RECTANGLE_ANGLE:
return context->getExtensions().webglCompatibility;
default: default:
return false; return false;
} }
......
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