Index: gpu/command_buffer/service/context_state_impl_autogen.h |
diff --git a/gpu/command_buffer/service/context_state_impl_autogen.h b/gpu/command_buffer/service/context_state_impl_autogen.h |
index 5b3709c418348a1c6b9ea9497264c4fca3dd4d15..056a382d24db13b6734dc6766778fb234aa5c886 100644 |
--- a/gpu/command_buffer/service/context_state_impl_autogen.h |
+++ b/gpu/command_buffer/service/context_state_impl_autogen.h |
@@ -14,14 +14,23 @@ |
ContextState::EnableFlags::EnableFlags() |
: blend(false), |
+ cached_blend(false), |
cull_face(false), |
+ cached_cull_face(false), |
depth_test(false), |
+ cached_depth_test(false), |
dither(true), |
+ cached_dither(true), |
polygon_offset_fill(false), |
+ cached_polygon_offset_fill(false), |
sample_alpha_to_coverage(false), |
+ cached_sample_alpha_to_coverage(false), |
sample_coverage(false), |
+ cached_sample_coverage(false), |
scissor_test(false), |
- stencil_test(false) { |
+ cached_scissor_test(false), |
+ stencil_test(false), |
+ cached_stencil_test(false) { |
} |
void ContextState::Initialize() { |
@@ -42,12 +51,17 @@ void ContextState::Initialize() { |
depth_clear = 1.0f; |
stencil_clear = 0; |
color_mask_red = true; |
+ cached_color_mask_red = true; |
color_mask_green = true; |
+ cached_color_mask_green = true; |
color_mask_blue = true; |
+ cached_color_mask_blue = true; |
color_mask_alpha = true; |
+ cached_color_mask_alpha = true; |
cull_mode = GL_BACK; |
depth_func = GL_LESS; |
depth_mask = true; |
+ cached_depth_mask = true; |
z_near = 0.0f; |
z_far = 1.0f; |
front_face = GL_CCW; |
@@ -71,7 +85,9 @@ void ContextState::Initialize() { |
stencil_back_ref = 0; |
stencil_back_mask = 0xFFFFFFFFU; |
stencil_front_writemask = 0xFFFFFFFFU; |
+ cached_stencil_front_writemask = 0xFFFFFFFFU; |
stencil_back_writemask = 0xFFFFFFFFU; |
+ cached_stencil_back_writemask = 0xFFFFFFFFU; |
stencil_front_fail_op = GL_KEEP; |
stencil_front_z_fail_op = GL_KEEP; |
stencil_front_z_pass_op = GL_KEEP; |
@@ -86,39 +102,45 @@ void ContextState::Initialize() { |
void ContextState::InitCapabilities(const ContextState* prev_state) const { |
if (prev_state) { |
- if (prev_state->enable_flags.blend != enable_flags.blend) |
- EnableDisable(GL_BLEND, enable_flags.blend); |
- if (prev_state->enable_flags.cull_face != enable_flags.cull_face) |
- EnableDisable(GL_CULL_FACE, enable_flags.cull_face); |
- if (prev_state->enable_flags.depth_test != enable_flags.depth_test) |
- EnableDisable(GL_DEPTH_TEST, enable_flags.depth_test); |
- if (prev_state->enable_flags.dither != enable_flags.dither) |
- EnableDisable(GL_DITHER, enable_flags.dither); |
- if (prev_state->enable_flags.polygon_offset_fill != |
- enable_flags.polygon_offset_fill) |
- EnableDisable(GL_POLYGON_OFFSET_FILL, enable_flags.polygon_offset_fill); |
- if (prev_state->enable_flags.sample_alpha_to_coverage != |
- enable_flags.sample_alpha_to_coverage) |
+ if (prev_state->enable_flags.cached_blend != enable_flags.cached_blend) |
+ EnableDisable(GL_BLEND, enable_flags.cached_blend); |
+ if (prev_state->enable_flags.cached_cull_face != |
+ enable_flags.cached_cull_face) |
+ EnableDisable(GL_CULL_FACE, enable_flags.cached_cull_face); |
+ if (prev_state->enable_flags.cached_depth_test != |
+ enable_flags.cached_depth_test) |
+ EnableDisable(GL_DEPTH_TEST, enable_flags.cached_depth_test); |
+ if (prev_state->enable_flags.cached_dither != enable_flags.cached_dither) |
+ EnableDisable(GL_DITHER, enable_flags.cached_dither); |
+ if (prev_state->enable_flags.cached_polygon_offset_fill != |
+ enable_flags.cached_polygon_offset_fill) |
+ EnableDisable(GL_POLYGON_OFFSET_FILL, |
+ enable_flags.cached_polygon_offset_fill); |
+ if (prev_state->enable_flags.cached_sample_alpha_to_coverage != |
+ enable_flags.cached_sample_alpha_to_coverage) |
EnableDisable(GL_SAMPLE_ALPHA_TO_COVERAGE, |
- enable_flags.sample_alpha_to_coverage); |
- if (prev_state->enable_flags.sample_coverage != |
- enable_flags.sample_coverage) |
- EnableDisable(GL_SAMPLE_COVERAGE, enable_flags.sample_coverage); |
- if (prev_state->enable_flags.scissor_test != enable_flags.scissor_test) |
- EnableDisable(GL_SCISSOR_TEST, enable_flags.scissor_test); |
- if (prev_state->enable_flags.stencil_test != enable_flags.stencil_test) |
- EnableDisable(GL_STENCIL_TEST, enable_flags.stencil_test); |
+ enable_flags.cached_sample_alpha_to_coverage); |
+ if (prev_state->enable_flags.cached_sample_coverage != |
+ enable_flags.cached_sample_coverage) |
+ EnableDisable(GL_SAMPLE_COVERAGE, enable_flags.cached_sample_coverage); |
+ if (prev_state->enable_flags.cached_scissor_test != |
+ enable_flags.cached_scissor_test) |
+ EnableDisable(GL_SCISSOR_TEST, enable_flags.cached_scissor_test); |
+ if (prev_state->enable_flags.cached_stencil_test != |
+ enable_flags.cached_stencil_test) |
+ EnableDisable(GL_STENCIL_TEST, enable_flags.cached_stencil_test); |
} else { |
- EnableDisable(GL_BLEND, enable_flags.blend); |
- EnableDisable(GL_CULL_FACE, enable_flags.cull_face); |
- EnableDisable(GL_DEPTH_TEST, enable_flags.depth_test); |
- EnableDisable(GL_DITHER, enable_flags.dither); |
- EnableDisable(GL_POLYGON_OFFSET_FILL, enable_flags.polygon_offset_fill); |
+ EnableDisable(GL_BLEND, enable_flags.cached_blend); |
+ EnableDisable(GL_CULL_FACE, enable_flags.cached_cull_face); |
+ EnableDisable(GL_DEPTH_TEST, enable_flags.cached_depth_test); |
+ EnableDisable(GL_DITHER, enable_flags.cached_dither); |
+ EnableDisable(GL_POLYGON_OFFSET_FILL, |
+ enable_flags.cached_polygon_offset_fill); |
EnableDisable(GL_SAMPLE_ALPHA_TO_COVERAGE, |
- enable_flags.sample_alpha_to_coverage); |
- EnableDisable(GL_SAMPLE_COVERAGE, enable_flags.sample_coverage); |
- EnableDisable(GL_SCISSOR_TEST, enable_flags.scissor_test); |
- EnableDisable(GL_STENCIL_TEST, enable_flags.stencil_test); |
+ enable_flags.cached_sample_alpha_to_coverage); |
+ EnableDisable(GL_SAMPLE_COVERAGE, enable_flags.cached_sample_coverage); |
+ EnableDisable(GL_SCISSOR_TEST, enable_flags.cached_scissor_test); |
+ EnableDisable(GL_STENCIL_TEST, enable_flags.cached_stencil_test); |
} |
} |
@@ -155,18 +177,20 @@ void ContextState::InitState(const ContextState* prev_state) const { |
glClearDepth(depth_clear); |
if ((stencil_clear != prev_state->stencil_clear)) |
glClearStencil(stencil_clear); |
- if ((color_mask_red != prev_state->color_mask_red) || |
- (color_mask_green != prev_state->color_mask_green) || |
- (color_mask_blue != prev_state->color_mask_blue) || |
- (color_mask_alpha != prev_state->color_mask_alpha)) |
- glColorMask( |
- color_mask_red, color_mask_green, color_mask_blue, color_mask_alpha); |
+ if ((cached_color_mask_red != prev_state->cached_color_mask_red) || |
+ (cached_color_mask_green != prev_state->cached_color_mask_green) || |
+ (cached_color_mask_blue != prev_state->cached_color_mask_blue) || |
+ (cached_color_mask_alpha != prev_state->cached_color_mask_alpha)) |
+ glColorMask(cached_color_mask_red, |
+ cached_color_mask_green, |
+ cached_color_mask_blue, |
+ cached_color_mask_alpha); |
if ((cull_mode != prev_state->cull_mode)) |
glCullFace(cull_mode); |
if ((depth_func != prev_state->depth_func)) |
glDepthFunc(depth_func); |
- if ((depth_mask != prev_state->depth_mask)) |
- glDepthMask(depth_mask); |
+ if ((cached_depth_mask != prev_state->cached_depth_mask)) |
+ glDepthMask(cached_depth_mask); |
if ((z_near != prev_state->z_near) || (z_far != prev_state->z_far)) |
glDepthRange(z_near, z_far); |
if ((front_face != prev_state->front_face)) |
@@ -205,10 +229,12 @@ void ContextState::InitState(const ContextState* prev_state) const { |
(stencil_back_mask != prev_state->stencil_back_mask)) |
glStencilFuncSeparate( |
GL_BACK, stencil_back_func, stencil_back_ref, stencil_back_mask); |
- if ((stencil_front_writemask != prev_state->stencil_front_writemask)) |
- glStencilMaskSeparate(GL_FRONT, stencil_front_writemask); |
- if ((stencil_back_writemask != prev_state->stencil_back_writemask)) |
- glStencilMaskSeparate(GL_BACK, stencil_back_writemask); |
+ if ((cached_stencil_front_writemask != |
+ prev_state->cached_stencil_front_writemask)) |
+ glStencilMaskSeparate(GL_FRONT, cached_stencil_front_writemask); |
+ if ((cached_stencil_back_writemask != |
+ prev_state->cached_stencil_back_writemask)) |
+ glStencilMaskSeparate(GL_BACK, cached_stencil_back_writemask); |
if ((stencil_front_fail_op != prev_state->stencil_front_fail_op) || |
(stencil_front_z_fail_op != prev_state->stencil_front_z_fail_op) || |
(stencil_front_z_pass_op != prev_state->stencil_front_z_pass_op)) |
@@ -242,11 +268,13 @@ void ContextState::InitState(const ContextState* prev_state) const { |
color_clear_alpha); |
glClearDepth(depth_clear); |
glClearStencil(stencil_clear); |
- glColorMask( |
- color_mask_red, color_mask_green, color_mask_blue, color_mask_alpha); |
+ glColorMask(cached_color_mask_red, |
+ cached_color_mask_green, |
+ cached_color_mask_blue, |
+ cached_color_mask_alpha); |
glCullFace(cull_mode); |
glDepthFunc(depth_func); |
- glDepthMask(depth_mask); |
+ glDepthMask(cached_depth_mask); |
glDepthRange(z_near, z_far); |
glFrontFace(front_face); |
glHint(GL_GENERATE_MIPMAP_HINT, hint_generate_mipmap); |
@@ -263,8 +291,8 @@ void ContextState::InitState(const ContextState* prev_state) const { |
GL_FRONT, stencil_front_func, stencil_front_ref, stencil_front_mask); |
glStencilFuncSeparate( |
GL_BACK, stencil_back_func, stencil_back_ref, stencil_back_mask); |
- glStencilMaskSeparate(GL_FRONT, stencil_front_writemask); |
- glStencilMaskSeparate(GL_BACK, stencil_back_writemask); |
+ glStencilMaskSeparate(GL_FRONT, cached_stencil_front_writemask); |
+ glStencilMaskSeparate(GL_BACK, cached_stencil_back_writemask); |
glStencilOpSeparate(GL_FRONT, |
stencil_front_fail_op, |
stencil_front_z_fail_op, |