| Index: gpu/command_buffer/service/context_state_autogen.h
|
| diff --git a/gpu/command_buffer/service/context_state_autogen.h b/gpu/command_buffer/service/context_state_autogen.h
|
| index 6e408a34476362c4b069d4114f30c8f7cf43db4d..309301f1b2810cfc73b1d55cb1fa6d0ffdca5cca 100644
|
| --- a/gpu/command_buffer/service/context_state_autogen.h
|
| +++ b/gpu/command_buffer/service/context_state_autogen.h
|
| @@ -15,14 +15,23 @@
|
| struct EnableFlags {
|
| EnableFlags();
|
| bool blend;
|
| + bool cached_blend;
|
| bool cull_face;
|
| + bool cached_cull_face;
|
| bool depth_test;
|
| + bool cached_depth_test;
|
| bool dither;
|
| + bool cached_dither;
|
| bool polygon_offset_fill;
|
| + bool cached_polygon_offset_fill;
|
| bool sample_alpha_to_coverage;
|
| + bool cached_sample_alpha_to_coverage;
|
| bool sample_coverage;
|
| + bool cached_sample_coverage;
|
| bool scissor_test;
|
| + bool cached_scissor_test;
|
| bool stencil_test;
|
| + bool cached_stencil_test;
|
| };
|
|
|
| GLfloat blend_color_red;
|
| @@ -42,12 +51,17 @@ GLfloat color_clear_alpha;
|
| GLclampf depth_clear;
|
| GLint stencil_clear;
|
| GLboolean color_mask_red;
|
| +GLboolean cached_color_mask_red;
|
| GLboolean color_mask_green;
|
| +GLboolean cached_color_mask_green;
|
| GLboolean color_mask_blue;
|
| +GLboolean cached_color_mask_blue;
|
| GLboolean color_mask_alpha;
|
| +GLboolean cached_color_mask_alpha;
|
| GLenum cull_mode;
|
| GLenum depth_func;
|
| GLboolean depth_mask;
|
| +GLboolean cached_depth_mask;
|
| GLclampf z_near;
|
| GLclampf z_far;
|
| GLenum front_face;
|
| @@ -71,7 +85,9 @@ GLenum stencil_back_func;
|
| GLint stencil_back_ref;
|
| GLuint stencil_back_mask;
|
| GLuint stencil_front_writemask;
|
| +GLuint cached_stencil_front_writemask;
|
| GLuint stencil_back_writemask;
|
| +GLuint cached_stencil_back_writemask;
|
| GLenum stencil_front_fail_op;
|
| GLenum stencil_front_z_fail_op;
|
| GLenum stencil_front_z_pass_op;
|
| @@ -83,4 +99,62 @@ GLint viewport_y;
|
| GLsizei viewport_width;
|
| GLsizei viewport_height;
|
|
|
| +inline void SetDeviceCapabilityState(GLenum cap, bool enable) {
|
| + switch (cap) {
|
| + case GL_BLEND:
|
| + if (enable_flags.cached_blend == enable && !ignore_cached_state)
|
| + return;
|
| + enable_flags.cached_blend = enable;
|
| + break;
|
| + case GL_CULL_FACE:
|
| + if (enable_flags.cached_cull_face == enable && !ignore_cached_state)
|
| + return;
|
| + enable_flags.cached_cull_face = enable;
|
| + break;
|
| + case GL_DEPTH_TEST:
|
| + if (enable_flags.cached_depth_test == enable && !ignore_cached_state)
|
| + return;
|
| + enable_flags.cached_depth_test = enable;
|
| + break;
|
| + case GL_DITHER:
|
| + if (enable_flags.cached_dither == enable && !ignore_cached_state)
|
| + return;
|
| + enable_flags.cached_dither = enable;
|
| + break;
|
| + case GL_POLYGON_OFFSET_FILL:
|
| + if (enable_flags.cached_polygon_offset_fill == enable &&
|
| + !ignore_cached_state)
|
| + return;
|
| + enable_flags.cached_polygon_offset_fill = enable;
|
| + break;
|
| + case GL_SAMPLE_ALPHA_TO_COVERAGE:
|
| + if (enable_flags.cached_sample_alpha_to_coverage == enable &&
|
| + !ignore_cached_state)
|
| + return;
|
| + enable_flags.cached_sample_alpha_to_coverage = enable;
|
| + break;
|
| + case GL_SAMPLE_COVERAGE:
|
| + if (enable_flags.cached_sample_coverage == enable && !ignore_cached_state)
|
| + return;
|
| + enable_flags.cached_sample_coverage = enable;
|
| + break;
|
| + case GL_SCISSOR_TEST:
|
| + if (enable_flags.cached_scissor_test == enable && !ignore_cached_state)
|
| + return;
|
| + enable_flags.cached_scissor_test = enable;
|
| + break;
|
| + case GL_STENCIL_TEST:
|
| + if (enable_flags.cached_stencil_test == enable && !ignore_cached_state)
|
| + return;
|
| + enable_flags.cached_stencil_test = enable;
|
| + break;
|
| + default:
|
| + NOTREACHED();
|
| + return;
|
| + }
|
| + if (enable)
|
| + glEnable(cap);
|
| + else
|
| + glDisable(cap);
|
| +}
|
| #endif // GPU_COMMAND_BUFFER_SERVICE_CONTEXT_STATE_AUTOGEN_H_
|
|
|