Index: gpu/command_buffer/service/gles2_cmd_decoder_autogen.h |
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h |
index 9512a793e7bd64ab6fb1b5b84f455858e143edec..4a8d2a7418e24b88060bdaa3c8003ec3d075b083 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h |
@@ -79,11 +79,16 @@ error::Error GLES2DecoderImpl::HandleBlendColor( |
GLclampf green = static_cast<GLclampf>(c.green); |
GLclampf blue = static_cast<GLclampf>(c.blue); |
GLclampf alpha = static_cast<GLclampf>(c.alpha); |
- state_.blend_color_red = red; |
- state_.blend_color_green = green; |
- state_.blend_color_blue = blue; |
- state_.blend_color_alpha = alpha; |
- glBlendColor(red, green, blue, alpha); |
+ if (state_.blend_color_red != red || |
+ state_.blend_color_green != green || |
+ state_.blend_color_blue != blue || |
+ state_.blend_color_alpha != alpha) { |
+ state_.blend_color_red = red; |
+ state_.blend_color_green = green; |
+ state_.blend_color_blue = blue; |
+ state_.blend_color_alpha = alpha; |
+ glBlendColor(red, green, blue, alpha); |
+ } |
return error::kNoError; |
} |
@@ -94,9 +99,12 @@ error::Error GLES2DecoderImpl::HandleBlendEquation( |
SetGLErrorInvalidEnum("glBlendEquation", mode, "mode"); |
return error::kNoError; |
} |
- state_.blend_equation_rgb = mode; |
- state_.blend_equation_alpha = mode; |
- glBlendEquation(mode); |
+ if (state_.blend_equation_rgb != mode || |
+ state_.blend_equation_alpha != mode) { |
+ state_.blend_equation_rgb = mode; |
+ state_.blend_equation_alpha = mode; |
+ glBlendEquation(mode); |
+ } |
return error::kNoError; |
} |
@@ -112,9 +120,12 @@ error::Error GLES2DecoderImpl::HandleBlendEquationSeparate( |
SetGLErrorInvalidEnum("glBlendEquationSeparate", modeAlpha, "modeAlpha"); |
return error::kNoError; |
} |
- state_.blend_equation_rgb = modeRGB; |
- state_.blend_equation_alpha = modeAlpha; |
- glBlendEquationSeparate(modeRGB, modeAlpha); |
+ if (state_.blend_equation_rgb != modeRGB || |
+ state_.blend_equation_alpha != modeAlpha) { |
+ state_.blend_equation_rgb = modeRGB; |
+ state_.blend_equation_alpha = modeAlpha; |
+ glBlendEquationSeparate(modeRGB, modeAlpha); |
+ } |
return error::kNoError; |
} |
@@ -130,11 +141,16 @@ error::Error GLES2DecoderImpl::HandleBlendFunc( |
SetGLErrorInvalidEnum("glBlendFunc", dfactor, "dfactor"); |
return error::kNoError; |
} |
- state_.blend_source_rgb = sfactor; |
- state_.blend_dest_rgb = dfactor; |
- state_.blend_source_alpha = sfactor; |
- state_.blend_dest_alpha = dfactor; |
- glBlendFunc(sfactor, dfactor); |
+ if (state_.blend_source_rgb != sfactor || |
+ state_.blend_dest_rgb != dfactor || |
+ state_.blend_source_alpha != sfactor || |
+ state_.blend_dest_alpha != dfactor) { |
+ state_.blend_source_rgb = sfactor; |
+ state_.blend_dest_rgb = dfactor; |
+ state_.blend_source_alpha = sfactor; |
+ state_.blend_dest_alpha = dfactor; |
+ glBlendFunc(sfactor, dfactor); |
+ } |
return error::kNoError; |
} |
@@ -160,11 +176,16 @@ error::Error GLES2DecoderImpl::HandleBlendFuncSeparate( |
SetGLErrorInvalidEnum("glBlendFuncSeparate", dstAlpha, "dstAlpha"); |
return error::kNoError; |
} |
- state_.blend_source_rgb = srcRGB; |
- state_.blend_dest_rgb = dstRGB; |
- state_.blend_source_alpha = srcAlpha; |
- state_.blend_dest_alpha = dstAlpha; |
- glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha); |
+ if (state_.blend_source_rgb != srcRGB || |
+ state_.blend_dest_rgb != dstRGB || |
+ state_.blend_source_alpha != srcAlpha || |
+ state_.blend_dest_alpha != dstAlpha) { |
+ state_.blend_source_rgb = srcRGB; |
+ state_.blend_dest_rgb = dstRGB; |
+ state_.blend_source_alpha = srcAlpha; |
+ state_.blend_dest_alpha = dstAlpha; |
+ glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha); |
+ } |
return error::kNoError; |
} |
@@ -237,27 +258,36 @@ error::Error GLES2DecoderImpl::HandleClearColor( |
GLclampf green = static_cast<GLclampf>(c.green); |
GLclampf blue = static_cast<GLclampf>(c.blue); |
GLclampf alpha = static_cast<GLclampf>(c.alpha); |
- state_.color_clear_red = red; |
- state_.color_clear_green = green; |
- state_.color_clear_blue = blue; |
- state_.color_clear_alpha = alpha; |
- glClearColor(red, green, blue, alpha); |
+ if (state_.color_clear_red != red || |
+ state_.color_clear_green != green || |
+ state_.color_clear_blue != blue || |
+ state_.color_clear_alpha != alpha) { |
+ state_.color_clear_red = red; |
+ state_.color_clear_green = green; |
+ state_.color_clear_blue = blue; |
+ state_.color_clear_alpha = alpha; |
+ glClearColor(red, green, blue, alpha); |
+ } |
return error::kNoError; |
} |
error::Error GLES2DecoderImpl::HandleClearDepthf( |
uint32 immediate_data_size, const gles2::ClearDepthf& c) { |
GLclampf depth = static_cast<GLclampf>(c.depth); |
- state_.depth_clear = depth; |
- glClearDepth(depth); |
+ if (state_.depth_clear != depth) { |
+ state_.depth_clear = depth; |
+ glClearDepth(depth); |
+ } |
return error::kNoError; |
} |
error::Error GLES2DecoderImpl::HandleClearStencil( |
uint32 immediate_data_size, const gles2::ClearStencil& c) { |
GLint s = static_cast<GLint>(c.s); |
- state_.stencil_clear = s; |
- glClearStencil(s); |
+ if (state_.stencil_clear != s) { |
+ state_.stencil_clear = s; |
+ glClearStencil(s); |
+ } |
return error::kNoError; |
} |
@@ -267,11 +297,16 @@ error::Error GLES2DecoderImpl::HandleColorMask( |
GLboolean green = static_cast<GLboolean>(c.green); |
GLboolean blue = static_cast<GLboolean>(c.blue); |
GLboolean alpha = static_cast<GLboolean>(c.alpha); |
- state_.color_mask_red = red; |
- state_.color_mask_green = green; |
- state_.color_mask_blue = blue; |
- state_.color_mask_alpha = alpha; |
- clear_state_dirty_ = true; |
+ if (state_.color_mask_red != red || |
+ state_.color_mask_green != green || |
+ state_.color_mask_blue != blue || |
+ state_.color_mask_alpha != alpha) { |
+ state_.color_mask_red = red; |
+ state_.color_mask_green = green; |
+ state_.color_mask_blue = blue; |
+ state_.color_mask_alpha = alpha; |
+ clear_state_dirty_ = true; |
+ } |
return error::kNoError; |
} |
@@ -457,8 +492,10 @@ error::Error GLES2DecoderImpl::HandleCullFace( |
SetGLErrorInvalidEnum("glCullFace", mode, "mode"); |
return error::kNoError; |
} |
- state_.cull_mode = mode; |
- glCullFace(mode); |
+ if (state_.cull_mode != mode) { |
+ state_.cull_mode = mode; |
+ glCullFace(mode); |
+ } |
return error::kNoError; |
} |
@@ -597,16 +634,20 @@ error::Error GLES2DecoderImpl::HandleDepthFunc( |
SetGLErrorInvalidEnum("glDepthFunc", func, "func"); |
return error::kNoError; |
} |
- state_.depth_func = func; |
- glDepthFunc(func); |
+ if (state_.depth_func != func) { |
+ state_.depth_func = func; |
+ glDepthFunc(func); |
+ } |
return error::kNoError; |
} |
error::Error GLES2DecoderImpl::HandleDepthMask( |
uint32 immediate_data_size, const gles2::DepthMask& c) { |
GLboolean flag = static_cast<GLboolean>(c.flag); |
- state_.depth_mask = flag; |
- clear_state_dirty_ = true; |
+ if (state_.depth_mask != flag) { |
+ state_.depth_mask = flag; |
+ clear_state_dirty_ = true; |
+ } |
return error::kNoError; |
} |
@@ -734,8 +775,10 @@ error::Error GLES2DecoderImpl::HandleFrontFace( |
SetGLErrorInvalidEnum("glFrontFace", mode, "mode"); |
return error::kNoError; |
} |
- state_.front_face = mode; |
- glFrontFace(mode); |
+ if (state_.front_face != mode) { |
+ state_.front_face = mode; |
+ glFrontFace(mode); |
+ } |
return error::kNoError; |
} |
@@ -1430,8 +1473,10 @@ error::Error GLES2DecoderImpl::HandleIsTexture( |
error::Error GLES2DecoderImpl::HandleLineWidth( |
uint32 immediate_data_size, const gles2::LineWidth& c) { |
GLfloat width = static_cast<GLfloat>(c.width); |
- state_.line_width = width; |
- glLineWidth(width); |
+ if (state_.line_width != width) { |
+ state_.line_width = width; |
+ glLineWidth(width); |
+ } |
return error::kNoError; |
} |
@@ -1446,9 +1491,12 @@ error::Error GLES2DecoderImpl::HandlePolygonOffset( |
uint32 immediate_data_size, const gles2::PolygonOffset& c) { |
GLfloat factor = static_cast<GLfloat>(c.factor); |
GLfloat units = static_cast<GLfloat>(c.units); |
- state_.polygon_offset_factor = factor; |
- state_.polygon_offset_units = units; |
- glPolygonOffset(factor, units); |
+ if (state_.polygon_offset_factor != factor || |
+ state_.polygon_offset_units != units) { |
+ state_.polygon_offset_factor = factor; |
+ state_.polygon_offset_units = units; |
+ glPolygonOffset(factor, units); |
+ } |
return error::kNoError; |
} |
@@ -1507,11 +1555,16 @@ error::Error GLES2DecoderImpl::HandleScissor( |
SetGLError(GL_INVALID_VALUE, "glScissor", "height < 0"); |
return error::kNoError; |
} |
- state_.scissor_x = x; |
- state_.scissor_y = y; |
- state_.scissor_width = width; |
- state_.scissor_height = height; |
- glScissor(x, y, width, height); |
+ if (state_.scissor_x != x || |
+ state_.scissor_y != y || |
+ state_.scissor_width != width || |
+ state_.scissor_height != height) { |
+ state_.scissor_x = x; |
+ state_.scissor_y = y; |
+ state_.scissor_width = width; |
+ state_.scissor_height = height; |
+ glScissor(x, y, width, height); |
+ } |
return error::kNoError; |
} |
@@ -1524,7 +1577,20 @@ error::Error GLES2DecoderImpl::HandleStencilFunc( |
SetGLErrorInvalidEnum("glStencilFunc", func, "func"); |
return error::kNoError; |
} |
- glStencilFunc(func, ref, mask); |
+ if (state_.stencil_front_func != func || |
+ state_.stencil_front_ref != ref || |
+ state_.stencil_front_mask != mask || |
+ state_.stencil_back_func != func || |
+ state_.stencil_back_ref != ref || |
+ state_.stencil_back_mask != mask) { |
+ state_.stencil_front_func = func; |
+ state_.stencil_front_ref = ref; |
+ state_.stencil_front_mask = mask; |
+ state_.stencil_back_func = func; |
+ state_.stencil_back_ref = ref; |
+ state_.stencil_back_mask = mask; |
+ glStencilFunc(func, ref, mask); |
+ } |
return error::kNoError; |
} |
@@ -1542,16 +1608,42 @@ error::Error GLES2DecoderImpl::HandleStencilFuncSeparate( |
SetGLErrorInvalidEnum("glStencilFuncSeparate", func, "func"); |
return error::kNoError; |
} |
- glStencilFuncSeparate(face, func, ref, mask); |
+ bool changed = false; |
+ if (face == GL_FRONT || face == GL_FRONT_AND_BACK) { |
+ changed |= state_.stencil_front_func != func || |
+ state_.stencil_front_ref != ref || |
+ state_.stencil_front_mask != mask; |
+ } |
+ if (face == GL_BACK || face == GL_FRONT_AND_BACK) { |
+ changed |= state_.stencil_back_func != func || |
+ state_.stencil_back_ref != ref || |
+ state_.stencil_back_mask != mask; |
+ } |
+ if (changed) { |
+ if (face == GL_FRONT || face == GL_FRONT_AND_BACK) { |
+ state_.stencil_front_func = func; |
+ state_.stencil_front_ref = ref; |
+ state_.stencil_front_mask = mask; |
+ } |
+ if (face == GL_BACK || face == GL_FRONT_AND_BACK) { |
+ state_.stencil_back_func = func; |
+ state_.stencil_back_ref = ref; |
+ state_.stencil_back_mask = mask; |
+ } |
+ glStencilFuncSeparate(face, func, ref, mask); |
+ } |
return error::kNoError; |
} |
error::Error GLES2DecoderImpl::HandleStencilMask( |
uint32 immediate_data_size, const gles2::StencilMask& c) { |
GLuint mask = static_cast<GLuint>(c.mask); |
- state_.stencil_front_writemask = mask; |
- state_.stencil_back_writemask = mask; |
- clear_state_dirty_ = true; |
+ if (state_.stencil_front_writemask != mask || |
+ state_.stencil_back_writemask != mask) { |
+ state_.stencil_front_writemask = mask; |
+ state_.stencil_back_writemask = mask; |
+ clear_state_dirty_ = true; |
+ } |
return error::kNoError; |
} |
@@ -1563,13 +1655,22 @@ error::Error GLES2DecoderImpl::HandleStencilMaskSeparate( |
SetGLErrorInvalidEnum("glStencilMaskSeparate", face, "face"); |
return error::kNoError; |
} |
+ bool changed = false; |
if (face == GL_FRONT || face == GL_FRONT_AND_BACK) { |
- state_.stencil_front_writemask = mask; |
+ changed |= state_.stencil_front_writemask != mask; |
} |
if (face == GL_BACK || face == GL_FRONT_AND_BACK) { |
- state_.stencil_back_writemask = mask; |
+ changed |= state_.stencil_back_writemask != mask; |
+ } |
+ if (changed) { |
+ if (face == GL_FRONT || face == GL_FRONT_AND_BACK) { |
+ state_.stencil_front_writemask = mask; |
+ } |
+ if (face == GL_BACK || face == GL_FRONT_AND_BACK) { |
+ state_.stencil_back_writemask = mask; |
+ } |
+ clear_state_dirty_ = true; |
} |
- clear_state_dirty_ = true; |
return error::kNoError; |
} |
@@ -1590,13 +1691,20 @@ error::Error GLES2DecoderImpl::HandleStencilOp( |
SetGLErrorInvalidEnum("glStencilOp", zpass, "zpass"); |
return error::kNoError; |
} |
- state_.stencil_front_fail_op = fail; |
- state_.stencil_front_z_fail_op = zfail; |
- state_.stencil_front_z_pass_op = zpass; |
- state_.stencil_back_fail_op = fail; |
- state_.stencil_back_z_fail_op = zfail; |
- state_.stencil_back_z_pass_op = zpass; |
- glStencilOp(fail, zfail, zpass); |
+ if (state_.stencil_front_fail_op != fail || |
+ state_.stencil_front_z_fail_op != zfail || |
+ state_.stencil_front_z_pass_op != zpass || |
+ state_.stencil_back_fail_op != fail || |
+ state_.stencil_back_z_fail_op != zfail || |
+ state_.stencil_back_z_pass_op != zpass) { |
+ state_.stencil_front_fail_op = fail; |
+ state_.stencil_front_z_fail_op = zfail; |
+ state_.stencil_front_z_pass_op = zpass; |
+ state_.stencil_back_fail_op = fail; |
+ state_.stencil_back_z_fail_op = zfail; |
+ state_.stencil_back_z_pass_op = zpass; |
+ glStencilOp(fail, zfail, zpass); |
+ } |
return error::kNoError; |
} |
@@ -1622,17 +1730,30 @@ error::Error GLES2DecoderImpl::HandleStencilOpSeparate( |
SetGLErrorInvalidEnum("glStencilOpSeparate", zpass, "zpass"); |
return error::kNoError; |
} |
+ bool changed = false; |
if (face == GL_FRONT || face == GL_FRONT_AND_BACK) { |
- state_.stencil_front_fail_op = fail; |
- state_.stencil_front_z_fail_op = zfail; |
- state_.stencil_front_z_pass_op = zpass; |
+ changed |= state_.stencil_front_fail_op != fail || |
+ state_.stencil_front_z_fail_op != zfail || |
+ state_.stencil_front_z_pass_op != zpass; |
} |
if (face == GL_BACK || face == GL_FRONT_AND_BACK) { |
- state_.stencil_back_fail_op = fail; |
- state_.stencil_back_z_fail_op = zfail; |
- state_.stencil_back_z_pass_op = zpass; |
+ changed |= state_.stencil_back_fail_op != fail || |
+ state_.stencil_back_z_fail_op != zfail || |
+ state_.stencil_back_z_pass_op != zpass; |
+ } |
+ if (changed) { |
+ if (face == GL_FRONT || face == GL_FRONT_AND_BACK) { |
+ state_.stencil_front_fail_op = fail; |
+ state_.stencil_front_z_fail_op = zfail; |
+ state_.stencil_front_z_pass_op = zpass; |
+ } |
+ if (face == GL_BACK || face == GL_FRONT_AND_BACK) { |
+ state_.stencil_back_fail_op = fail; |
+ state_.stencil_back_z_fail_op = zfail; |
+ state_.stencil_back_z_pass_op = zpass; |
+ } |
+ glStencilOpSeparate(face, fail, zfail, zpass); |
} |
- glStencilOpSeparate(face, fail, zfail, zpass); |
return error::kNoError; |
} |
@@ -3000,8 +3121,11 @@ bool GLES2DecoderImpl::SetCapabilityState(GLenum cap, bool enabled) { |
state_.enable_flags.sample_coverage = enabled; |
return true; |
case GL_SCISSOR_TEST: |
- state_.enable_flags.scissor_test = enabled; |
- return true; |
+ if (state_.enable_flags.scissor_test != enabled) { |
+ state_.enable_flags.scissor_test = enabled; |
+ clear_state_dirty_ = true; |
+ } |
+ return false; |
case GL_STENCIL_TEST: |
if (state_.enable_flags.stencil_test != enabled) { |
state_.enable_flags.stencil_test = enabled; |
@@ -3013,635 +3137,5 @@ bool GLES2DecoderImpl::SetCapabilityState(GLenum cap, bool enabled) { |
return false; |
} |
} |
- |
-bool GLES2DecoderImpl::DoIsEnabled(GLenum cap) { |
- switch (cap) { |
- case GL_BLEND: |
- return state_.enable_flags.blend; |
- case GL_CULL_FACE: |
- return state_.enable_flags.cull_face; |
- case GL_DEPTH_TEST: |
- return state_.enable_flags.depth_test; |
- case GL_DITHER: |
- return state_.enable_flags.dither; |
- case GL_POLYGON_OFFSET_FILL: |
- return state_.enable_flags.polygon_offset_fill; |
- case GL_SAMPLE_ALPHA_TO_COVERAGE: |
- return state_.enable_flags.sample_alpha_to_coverage; |
- case GL_SAMPLE_COVERAGE: |
- return state_.enable_flags.sample_coverage; |
- case GL_SCISSOR_TEST: |
- return state_.enable_flags.scissor_test; |
- case GL_STENCIL_TEST: |
- return state_.enable_flags.stencil_test; |
- default: |
- NOTREACHED(); |
- return false; |
- } |
-} |
- |
-bool GLES2DecoderImpl::GetStateAsGLint( |
- GLenum pname, GLint* params, GLsizei* num_written) { |
- switch (pname) { |
- case GL_VIEWPORT: |
- *num_written = 4; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.viewport_x); |
- params[1] = static_cast<GLint>(state_.viewport_y); |
- params[2] = static_cast<GLint>(state_.viewport_width); |
- params[3] = static_cast<GLint>(state_.viewport_height); |
- } |
- return true; |
- case GL_BLEND_SRC_RGB: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.blend_source_rgb); |
- } |
- return true; |
- case GL_BLEND_DST_RGB: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.blend_dest_rgb); |
- } |
- return true; |
- case GL_BLEND_SRC_ALPHA: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.blend_source_alpha); |
- } |
- return true; |
- case GL_BLEND_DST_ALPHA: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.blend_dest_alpha); |
- } |
- return true; |
- case GL_LINE_WIDTH: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.line_width); |
- } |
- return true; |
- case GL_BLEND_COLOR: |
- *num_written = 4; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.blend_color_red); |
- params[1] = static_cast<GLint>(state_.blend_color_green); |
- params[2] = static_cast<GLint>(state_.blend_color_blue); |
- params[3] = static_cast<GLint>(state_.blend_color_alpha); |
- } |
- return true; |
- case GL_STENCIL_CLEAR_VALUE: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.stencil_clear); |
- } |
- return true; |
- case GL_COLOR_WRITEMASK: |
- *num_written = 4; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.color_mask_red); |
- params[1] = static_cast<GLint>(state_.color_mask_green); |
- params[2] = static_cast<GLint>(state_.color_mask_blue); |
- params[3] = static_cast<GLint>(state_.color_mask_alpha); |
- } |
- return true; |
- case GL_COLOR_CLEAR_VALUE: |
- *num_written = 4; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.color_clear_red); |
- params[1] = static_cast<GLint>(state_.color_clear_green); |
- params[2] = static_cast<GLint>(state_.color_clear_blue); |
- params[3] = static_cast<GLint>(state_.color_clear_alpha); |
- } |
- return true; |
- case GL_DEPTH_RANGE: |
- *num_written = 2; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.z_near); |
- params[1] = static_cast<GLint>(state_.z_far); |
- } |
- return true; |
- case GL_DEPTH_CLEAR_VALUE: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.depth_clear); |
- } |
- return true; |
- case GL_STENCIL_FAIL: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.stencil_front_fail_op); |
- } |
- return true; |
- case GL_STENCIL_PASS_DEPTH_FAIL: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.stencil_front_z_fail_op); |
- } |
- return true; |
- case GL_STENCIL_PASS_DEPTH_PASS: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.stencil_front_z_pass_op); |
- } |
- return true; |
- case GL_STENCIL_BACK_FAIL: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.stencil_back_fail_op); |
- } |
- return true; |
- case GL_STENCIL_BACK_PASS_DEPTH_FAIL: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.stencil_back_z_fail_op); |
- } |
- return true; |
- case GL_STENCIL_BACK_PASS_DEPTH_PASS: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.stencil_back_z_pass_op); |
- } |
- return true; |
- case GL_SCISSOR_BOX: |
- *num_written = 4; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.scissor_x); |
- params[1] = static_cast<GLint>(state_.scissor_y); |
- params[2] = static_cast<GLint>(state_.scissor_width); |
- params[3] = static_cast<GLint>(state_.scissor_height); |
- } |
- return true; |
- case GL_FRONT_FACE: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.front_face); |
- } |
- return true; |
- case GL_SAMPLE_COVERAGE_VALUE: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.sample_coverage_value); |
- } |
- return true; |
- case GL_SAMPLE_COVERAGE_INVERT: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.sample_coverage_invert); |
- } |
- return true; |
- case GL_POLYGON_OFFSET_FACTOR: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.polygon_offset_factor); |
- } |
- return true; |
- case GL_POLYGON_OFFSET_UNITS: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.polygon_offset_units); |
- } |
- return true; |
- case GL_CULL_FACE_MODE: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.cull_mode); |
- } |
- return true; |
- case GL_DEPTH_FUNC: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.depth_func); |
- } |
- return true; |
- case GL_STENCIL_FUNC: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.stencil_front_func); |
- } |
- return true; |
- case GL_STENCIL_REF: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.stencil_front_ref); |
- } |
- return true; |
- case GL_STENCIL_VALUE_MASK: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.stencil_front_mask); |
- } |
- return true; |
- case GL_STENCIL_BACK_FUNC: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.stencil_back_func); |
- } |
- return true; |
- case GL_STENCIL_BACK_REF: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.stencil_back_ref); |
- } |
- return true; |
- case GL_STENCIL_BACK_VALUE_MASK: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.stencil_back_mask); |
- } |
- return true; |
- case GL_DEPTH_WRITEMASK: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.depth_mask); |
- } |
- return true; |
- case GL_BLEND_EQUATION_RGB: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.blend_equation_rgb); |
- } |
- return true; |
- case GL_BLEND_EQUATION_ALPHA: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.blend_equation_alpha); |
- } |
- return true; |
- case GL_STENCIL_WRITEMASK: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.stencil_front_writemask); |
- } |
- return true; |
- case GL_STENCIL_BACK_WRITEMASK: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.stencil_back_writemask); |
- } |
- return true; |
- case GL_BLEND: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.enable_flags.blend); |
- } |
- return true; |
- case GL_CULL_FACE: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.enable_flags.cull_face); |
- } |
- return true; |
- case GL_DEPTH_TEST: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.enable_flags.depth_test); |
- } |
- return true; |
- case GL_DITHER: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.enable_flags.dither); |
- } |
- return true; |
- case GL_POLYGON_OFFSET_FILL: |
- *num_written = 1; |
- if (params) { |
- params[0] = |
- static_cast<GLint>(state_.enable_flags.polygon_offset_fill); |
- } |
- return true; |
- case GL_SAMPLE_ALPHA_TO_COVERAGE: |
- *num_written = 1; |
- if (params) { |
- params[0] = |
- static_cast<GLint>(state_.enable_flags.sample_alpha_to_coverage); |
- } |
- return true; |
- case GL_SAMPLE_COVERAGE: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.enable_flags.sample_coverage); |
- } |
- return true; |
- case GL_SCISSOR_TEST: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.enable_flags.scissor_test); |
- } |
- return true; |
- case GL_STENCIL_TEST: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLint>(state_.enable_flags.stencil_test); |
- } |
- return true; |
- default: |
- return false; |
- } |
-} |
- |
-bool GLES2DecoderImpl::GetStateAsGLfloat( |
- GLenum pname, GLfloat* params, GLsizei* num_written) { |
- switch (pname) { |
- case GL_VIEWPORT: |
- *num_written = 4; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.viewport_x); |
- params[1] = static_cast<GLfloat>(state_.viewport_y); |
- params[2] = static_cast<GLfloat>(state_.viewport_width); |
- params[3] = static_cast<GLfloat>(state_.viewport_height); |
- } |
- return true; |
- case GL_BLEND_SRC_RGB: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.blend_source_rgb); |
- } |
- return true; |
- case GL_BLEND_DST_RGB: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.blend_dest_rgb); |
- } |
- return true; |
- case GL_BLEND_SRC_ALPHA: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.blend_source_alpha); |
- } |
- return true; |
- case GL_BLEND_DST_ALPHA: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.blend_dest_alpha); |
- } |
- return true; |
- case GL_LINE_WIDTH: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.line_width); |
- } |
- return true; |
- case GL_BLEND_COLOR: |
- *num_written = 4; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.blend_color_red); |
- params[1] = static_cast<GLfloat>(state_.blend_color_green); |
- params[2] = static_cast<GLfloat>(state_.blend_color_blue); |
- params[3] = static_cast<GLfloat>(state_.blend_color_alpha); |
- } |
- return true; |
- case GL_STENCIL_CLEAR_VALUE: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.stencil_clear); |
- } |
- return true; |
- case GL_COLOR_WRITEMASK: |
- *num_written = 4; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.color_mask_red); |
- params[1] = static_cast<GLfloat>(state_.color_mask_green); |
- params[2] = static_cast<GLfloat>(state_.color_mask_blue); |
- params[3] = static_cast<GLfloat>(state_.color_mask_alpha); |
- } |
- return true; |
- case GL_COLOR_CLEAR_VALUE: |
- *num_written = 4; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.color_clear_red); |
- params[1] = static_cast<GLfloat>(state_.color_clear_green); |
- params[2] = static_cast<GLfloat>(state_.color_clear_blue); |
- params[3] = static_cast<GLfloat>(state_.color_clear_alpha); |
- } |
- return true; |
- case GL_DEPTH_RANGE: |
- *num_written = 2; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.z_near); |
- params[1] = static_cast<GLfloat>(state_.z_far); |
- } |
- return true; |
- case GL_DEPTH_CLEAR_VALUE: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.depth_clear); |
- } |
- return true; |
- case GL_STENCIL_FAIL: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.stencil_front_fail_op); |
- } |
- return true; |
- case GL_STENCIL_PASS_DEPTH_FAIL: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.stencil_front_z_fail_op); |
- } |
- return true; |
- case GL_STENCIL_PASS_DEPTH_PASS: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.stencil_front_z_pass_op); |
- } |
- return true; |
- case GL_STENCIL_BACK_FAIL: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.stencil_back_fail_op); |
- } |
- return true; |
- case GL_STENCIL_BACK_PASS_DEPTH_FAIL: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.stencil_back_z_fail_op); |
- } |
- return true; |
- case GL_STENCIL_BACK_PASS_DEPTH_PASS: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.stencil_back_z_pass_op); |
- } |
- return true; |
- case GL_SCISSOR_BOX: |
- *num_written = 4; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.scissor_x); |
- params[1] = static_cast<GLfloat>(state_.scissor_y); |
- params[2] = static_cast<GLfloat>(state_.scissor_width); |
- params[3] = static_cast<GLfloat>(state_.scissor_height); |
- } |
- return true; |
- case GL_FRONT_FACE: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.front_face); |
- } |
- return true; |
- case GL_SAMPLE_COVERAGE_VALUE: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.sample_coverage_value); |
- } |
- return true; |
- case GL_SAMPLE_COVERAGE_INVERT: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.sample_coverage_invert); |
- } |
- return true; |
- case GL_POLYGON_OFFSET_FACTOR: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.polygon_offset_factor); |
- } |
- return true; |
- case GL_POLYGON_OFFSET_UNITS: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.polygon_offset_units); |
- } |
- return true; |
- case GL_CULL_FACE_MODE: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.cull_mode); |
- } |
- return true; |
- case GL_DEPTH_FUNC: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.depth_func); |
- } |
- return true; |
- case GL_STENCIL_FUNC: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.stencil_front_func); |
- } |
- return true; |
- case GL_STENCIL_REF: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.stencil_front_ref); |
- } |
- return true; |
- case GL_STENCIL_VALUE_MASK: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.stencil_front_mask); |
- } |
- return true; |
- case GL_STENCIL_BACK_FUNC: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.stencil_back_func); |
- } |
- return true; |
- case GL_STENCIL_BACK_REF: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.stencil_back_ref); |
- } |
- return true; |
- case GL_STENCIL_BACK_VALUE_MASK: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.stencil_back_mask); |
- } |
- return true; |
- case GL_DEPTH_WRITEMASK: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.depth_mask); |
- } |
- return true; |
- case GL_BLEND_EQUATION_RGB: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.blend_equation_rgb); |
- } |
- return true; |
- case GL_BLEND_EQUATION_ALPHA: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.blend_equation_alpha); |
- } |
- return true; |
- case GL_STENCIL_WRITEMASK: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.stencil_front_writemask); |
- } |
- return true; |
- case GL_STENCIL_BACK_WRITEMASK: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.stencil_back_writemask); |
- } |
- return true; |
- case GL_BLEND: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.enable_flags.blend); |
- } |
- return true; |
- case GL_CULL_FACE: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.enable_flags.cull_face); |
- } |
- return true; |
- case GL_DEPTH_TEST: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.enable_flags.depth_test); |
- } |
- return true; |
- case GL_DITHER: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.enable_flags.dither); |
- } |
- return true; |
- case GL_POLYGON_OFFSET_FILL: |
- *num_written = 1; |
- if (params) { |
- params[0] = |
- static_cast<GLfloat>(state_.enable_flags.polygon_offset_fill); |
- } |
- return true; |
- case GL_SAMPLE_ALPHA_TO_COVERAGE: |
- *num_written = 1; |
- if (params) { |
- params[0] = |
- static_cast<GLfloat>(state_.enable_flags.sample_alpha_to_coverage); |
- } |
- return true; |
- case GL_SAMPLE_COVERAGE: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.enable_flags.sample_coverage); |
- } |
- return true; |
- case GL_SCISSOR_TEST: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.enable_flags.scissor_test); |
- } |
- return true; |
- case GL_STENCIL_TEST: |
- *num_written = 1; |
- if (params) { |
- params[0] = static_cast<GLfloat>(state_.enable_flags.stencil_test); |
- } |
- return true; |
- default: |
- return false; |
- } |
-} |
#endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ |