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 037ac6c1a0bd96d1b767158e35d498cd77155cb3..467f1cec7e18dcb1106df7257cb3c68dac25134d 100644 |
--- a/gpu/command_buffer/service/context_state_impl_autogen.h |
+++ b/gpu/command_buffer/service/context_state_impl_autogen.h |
@@ -30,7 +30,9 @@ ContextState::EnableFlags::EnableFlags() |
scissor_test(false), |
cached_scissor_test(false), |
stencil_test(false), |
- cached_stencil_test(false) { |
+ cached_stencil_test(false), |
+ rasterizer_discard(false), |
+ cached_rasterizer_discard(false) { |
} |
void ContextState::Initialize() { |
@@ -134,33 +136,49 @@ void ContextState::Initialize() { |
void ContextState::InitCapabilities(const ContextState* prev_state) const { |
if (prev_state) { |
- if (prev_state->enable_flags.cached_blend != enable_flags.cached_blend) |
+ 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) |
+ 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) |
+ 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) |
+ } |
+ 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) |
+ 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) |
+ enable_flags.cached_sample_alpha_to_coverage) { |
EnableDisable(GL_SAMPLE_ALPHA_TO_COVERAGE, |
enable_flags.cached_sample_alpha_to_coverage); |
+ } |
if (prev_state->enable_flags.cached_sample_coverage != |
- 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) |
+ 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) |
+ enable_flags.cached_stencil_test) { |
EnableDisable(GL_STENCIL_TEST, enable_flags.cached_stencil_test); |
+ } |
+ if (feature_info_->IsES3Capable()) { |
+ if (prev_state->enable_flags.cached_rasterizer_discard != |
+ enable_flags.cached_rasterizer_discard) { |
+ EnableDisable(GL_RASTERIZER_DISCARD, |
+ enable_flags.cached_rasterizer_discard); |
+ } |
+ } |
} else { |
EnableDisable(GL_BLEND, enable_flags.cached_blend); |
EnableDisable(GL_CULL_FACE, enable_flags.cached_cull_face); |
@@ -173,6 +191,10 @@ void ContextState::InitCapabilities(const ContextState* prev_state) const { |
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); |
+ if (feature_info_->IsES3Capable()) { |
+ EnableDisable(GL_RASTERIZER_DISCARD, |
+ enable_flags.cached_rasterizer_discard); |
+ } |
} |
} |
@@ -358,6 +380,8 @@ bool ContextState::GetEnabled(GLenum cap) const { |
return enable_flags.scissor_test; |
case GL_STENCIL_TEST: |
return enable_flags.stencil_test; |
+ case GL_RASTERIZER_DISCARD: |
+ return enable_flags.rasterizer_discard; |
default: |
NOTREACHED(); |
return false; |
@@ -700,6 +724,12 @@ bool ContextState::GetStateAsGLint(GLenum pname, |
params[0] = static_cast<GLint>(enable_flags.stencil_test); |
} |
return true; |
+ case GL_RASTERIZER_DISCARD: |
+ *num_written = 1; |
+ if (params) { |
+ params[0] = static_cast<GLint>(enable_flags.rasterizer_discard); |
+ } |
+ return true; |
default: |
return false; |
} |
@@ -1037,6 +1067,12 @@ bool ContextState::GetStateAsGLfloat(GLenum pname, |
params[0] = static_cast<GLfloat>(enable_flags.stencil_test); |
} |
return true; |
+ case GL_RASTERIZER_DISCARD: |
+ *num_written = 1; |
+ if (params) { |
+ params[0] = static_cast<GLfloat>(enable_flags.rasterizer_discard); |
+ } |
+ return true; |
default: |
return false; |
} |