// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // This file is auto-generated from // gpu/command_buffer/build_gles2_cmd_buffer.py // It's formatted by clang-format using chromium coding style: // clang-format -i -style=chromium filename // DO NOT EDIT! // It is included by context_state.cc #ifndef GPU_COMMAND_BUFFER_SERVICE_CONTEXT_STATE_IMPL_AUTOGEN_H_ #define GPU_COMMAND_BUFFER_SERVICE_CONTEXT_STATE_IMPL_AUTOGEN_H_ 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), cached_scissor_test(false), stencil_test(false), cached_stencil_test(false), rasterizer_discard(false), cached_rasterizer_discard(false), primitive_restart_fixed_index(false), cached_primitive_restart_fixed_index(false) {} void ContextState::Initialize() { blend_color_red = 0.0f; blend_color_green = 0.0f; blend_color_blue = 0.0f; blend_color_alpha = 0.0f; blend_equation_rgb = GL_FUNC_ADD; blend_equation_alpha = GL_FUNC_ADD; blend_source_rgb = GL_ONE; blend_dest_rgb = GL_ZERO; blend_source_alpha = GL_ONE; blend_dest_alpha = GL_ZERO; color_clear_red = 0.0f; color_clear_green = 0.0f; color_clear_blue = 0.0f; color_clear_alpha = 0.0f; 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; hint_generate_mipmap = GL_DONT_CARE; hint_fragment_shader_derivative = GL_DONT_CARE; line_width = 1.0f; modelview_matrix[0] = 1.0f; modelview_matrix[1] = 0.0f; modelview_matrix[2] = 0.0f; modelview_matrix[3] = 0.0f; modelview_matrix[4] = 0.0f; modelview_matrix[5] = 1.0f; modelview_matrix[6] = 0.0f; modelview_matrix[7] = 0.0f; modelview_matrix[8] = 0.0f; modelview_matrix[9] = 0.0f; modelview_matrix[10] = 1.0f; modelview_matrix[11] = 0.0f; modelview_matrix[12] = 0.0f; modelview_matrix[13] = 0.0f; modelview_matrix[14] = 0.0f; modelview_matrix[15] = 1.0f; projection_matrix[0] = 1.0f; projection_matrix[1] = 0.0f; projection_matrix[2] = 0.0f; projection_matrix[3] = 0.0f; projection_matrix[4] = 0.0f; projection_matrix[5] = 1.0f; projection_matrix[6] = 0.0f; projection_matrix[7] = 0.0f; projection_matrix[8] = 0.0f; projection_matrix[9] = 0.0f; projection_matrix[10] = 1.0f; projection_matrix[11] = 0.0f; projection_matrix[12] = 0.0f; projection_matrix[13] = 0.0f; projection_matrix[14] = 0.0f; projection_matrix[15] = 1.0f; stencil_path_func = GL_ALWAYS; stencil_path_ref = 0; stencil_path_mask = 0xFFFFFFFFU; pack_alignment = 4; unpack_alignment = 4; polygon_offset_factor = 0.0f; polygon_offset_units = 0.0f; sample_coverage_value = 1.0f; sample_coverage_invert = false; scissor_x = 0; scissor_y = 0; scissor_width = 1; scissor_height = 1; stencil_front_func = GL_ALWAYS; stencil_front_ref = 0; stencil_front_mask = 0xFFFFFFFFU; stencil_back_func = GL_ALWAYS; 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; stencil_back_fail_op = GL_KEEP; stencil_back_z_fail_op = GL_KEEP; stencil_back_z_pass_op = GL_KEEP; viewport_x = 0; viewport_y = 0; viewport_width = 1; viewport_height = 1; } void ContextState::InitCapabilities(const ContextState* prev_state) const { if (prev_state) { 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.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); } 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); } if (prev_state->enable_flags.cached_primitive_restart_fixed_index != enable_flags.cached_primitive_restart_fixed_index) { EnableDisable(GL_PRIMITIVE_RESTART_FIXED_INDEX, enable_flags.cached_primitive_restart_fixed_index); } } } else { 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.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); if (feature_info_->IsES3Capable()) { EnableDisable(GL_RASTERIZER_DISCARD, enable_flags.cached_rasterizer_discard); EnableDisable(GL_PRIMITIVE_RESTART_FIXED_INDEX, enable_flags.cached_primitive_restart_fixed_index); } } } void ContextState::InitState(const ContextState* prev_state) const { if (prev_state) { if ((blend_color_red != prev_state->blend_color_red) || (blend_color_green != prev_state->blend_color_green) || (blend_color_blue != prev_state->blend_color_blue) || (blend_color_alpha != prev_state->blend_color_alpha)) glBlendColor(blend_color_red, blend_color_green, blend_color_blue, blend_color_alpha); if ((blend_equation_rgb != prev_state->blend_equation_rgb) || (blend_equation_alpha != prev_state->blend_equation_alpha)) glBlendEquationSeparate(blend_equation_rgb, blend_equation_alpha); if ((blend_source_rgb != prev_state->blend_source_rgb) || (blend_dest_rgb != prev_state->blend_dest_rgb) || (blend_source_alpha != prev_state->blend_source_alpha) || (blend_dest_alpha != prev_state->blend_dest_alpha)) glBlendFuncSeparate(blend_source_rgb, blend_dest_rgb, blend_source_alpha, blend_dest_alpha); if ((color_clear_red != prev_state->color_clear_red) || (color_clear_green != prev_state->color_clear_green) || (color_clear_blue != prev_state->color_clear_blue) || (color_clear_alpha != prev_state->color_clear_alpha)) glClearColor(color_clear_red, color_clear_green, color_clear_blue, color_clear_alpha); if ((depth_clear != prev_state->depth_clear)) glClearDepth(depth_clear); if ((stencil_clear != prev_state->stencil_clear)) glClearStencil(stencil_clear); 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 ((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)) glFrontFace(front_face); if (prev_state->hint_generate_mipmap != hint_generate_mipmap) { if (!feature_info_->gl_version_info().is_desktop_core_profile) { glHint(GL_GENERATE_MIPMAP_HINT, hint_generate_mipmap); } } if (feature_info_->feature_flags().oes_standard_derivatives) { if (prev_state->hint_fragment_shader_derivative != hint_fragment_shader_derivative) { glHint(GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES, hint_fragment_shader_derivative); } } if ((line_width != prev_state->line_width)) glLineWidth(line_width); if (feature_info_->feature_flags().chromium_path_rendering) { if (memcmp(prev_state->modelview_matrix, modelview_matrix, sizeof(GLfloat) * 16)) { glMatrixLoadfEXT(GL_PATH_MODELVIEW_CHROMIUM, modelview_matrix); } } if (feature_info_->feature_flags().chromium_path_rendering) { if (memcmp(prev_state->projection_matrix, projection_matrix, sizeof(GLfloat) * 16)) { glMatrixLoadfEXT(GL_PATH_PROJECTION_CHROMIUM, projection_matrix); } } if (feature_info_->feature_flags().chromium_path_rendering) if ((stencil_path_func != prev_state->stencil_path_func) || (stencil_path_ref != prev_state->stencil_path_ref) || (stencil_path_mask != prev_state->stencil_path_mask)) glPathStencilFuncNV(stencil_path_func, stencil_path_ref, stencil_path_mask); if (prev_state->pack_alignment != pack_alignment) { glPixelStorei(GL_PACK_ALIGNMENT, pack_alignment); } if (prev_state->unpack_alignment != unpack_alignment) { glPixelStorei(GL_UNPACK_ALIGNMENT, unpack_alignment); } if ((polygon_offset_factor != prev_state->polygon_offset_factor) || (polygon_offset_units != prev_state->polygon_offset_units)) glPolygonOffset(polygon_offset_factor, polygon_offset_units); if ((sample_coverage_value != prev_state->sample_coverage_value) || (sample_coverage_invert != prev_state->sample_coverage_invert)) glSampleCoverage(sample_coverage_value, sample_coverage_invert); if ((scissor_x != prev_state->scissor_x) || (scissor_y != prev_state->scissor_y) || (scissor_width != prev_state->scissor_width) || (scissor_height != prev_state->scissor_height)) glScissor(scissor_x, scissor_y, scissor_width, scissor_height); if ((stencil_front_func != prev_state->stencil_front_func) || (stencil_front_ref != prev_state->stencil_front_ref) || (stencil_front_mask != prev_state->stencil_front_mask)) glStencilFuncSeparate(GL_FRONT, stencil_front_func, stencil_front_ref, stencil_front_mask); if ((stencil_back_func != prev_state->stencil_back_func) || (stencil_back_ref != prev_state->stencil_back_ref) || (stencil_back_mask != prev_state->stencil_back_mask)) glStencilFuncSeparate(GL_BACK, stencil_back_func, stencil_back_ref, stencil_back_mask); 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)) glStencilOpSeparate(GL_FRONT, stencil_front_fail_op, stencil_front_z_fail_op, stencil_front_z_pass_op); if ((stencil_back_fail_op != prev_state->stencil_back_fail_op) || (stencil_back_z_fail_op != prev_state->stencil_back_z_fail_op) || (stencil_back_z_pass_op != prev_state->stencil_back_z_pass_op)) glStencilOpSeparate(GL_BACK, stencil_back_fail_op, stencil_back_z_fail_op, stencil_back_z_pass_op); if ((viewport_x != prev_state->viewport_x) || (viewport_y != prev_state->viewport_y) || (viewport_width != prev_state->viewport_width) || (viewport_height != prev_state->viewport_height)) glViewport(viewport_x, viewport_y, viewport_width, viewport_height); } else { glBlendColor(blend_color_red, blend_color_green, blend_color_blue, blend_color_alpha); glBlendEquationSeparate(blend_equation_rgb, blend_equation_alpha); glBlendFuncSeparate(blend_source_rgb, blend_dest_rgb, blend_source_alpha, blend_dest_alpha); glClearColor(color_clear_red, color_clear_green, color_clear_blue, color_clear_alpha); glClearDepth(depth_clear); glClearStencil(stencil_clear); glColorMask(cached_color_mask_red, cached_color_mask_green, cached_color_mask_blue, cached_color_mask_alpha); glCullFace(cull_mode); glDepthFunc(depth_func); glDepthMask(cached_depth_mask); glDepthRange(z_near, z_far); glFrontFace(front_face); if (!feature_info_->gl_version_info().is_desktop_core_profile) { glHint(GL_GENERATE_MIPMAP_HINT, hint_generate_mipmap); } if (feature_info_->feature_flags().oes_standard_derivatives) { glHint(GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES, hint_fragment_shader_derivative); } glLineWidth(line_width); if (feature_info_->feature_flags().chromium_path_rendering) { glMatrixLoadfEXT(GL_PATH_MODELVIEW_CHROMIUM, modelview_matrix); } if (feature_info_->feature_flags().chromium_path_rendering) { glMatrixLoadfEXT(GL_PATH_PROJECTION_CHROMIUM, projection_matrix); } if (feature_info_->feature_flags().chromium_path_rendering) glPathStencilFuncNV(stencil_path_func, stencil_path_ref, stencil_path_mask); glPixelStorei(GL_PACK_ALIGNMENT, pack_alignment); glPixelStorei(GL_UNPACK_ALIGNMENT, unpack_alignment); glPolygonOffset(polygon_offset_factor, polygon_offset_units); glSampleCoverage(sample_coverage_value, sample_coverage_invert); glScissor(scissor_x, scissor_y, scissor_width, scissor_height); glStencilFuncSeparate(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, cached_stencil_front_writemask); glStencilMaskSeparate(GL_BACK, cached_stencil_back_writemask); glStencilOpSeparate(GL_FRONT, stencil_front_fail_op, stencil_front_z_fail_op, stencil_front_z_pass_op); glStencilOpSeparate(GL_BACK, stencil_back_fail_op, stencil_back_z_fail_op, stencil_back_z_pass_op); glViewport(viewport_x, viewport_y, viewport_width, viewport_height); } } bool ContextState::GetEnabled(GLenum cap) const { switch (cap) { case GL_BLEND: return enable_flags.blend; case GL_CULL_FACE: return enable_flags.cull_face; case GL_DEPTH_TEST: return enable_flags.depth_test; case GL_DITHER: return enable_flags.dither; case GL_POLYGON_OFFSET_FILL: return enable_flags.polygon_offset_fill; case GL_SAMPLE_ALPHA_TO_COVERAGE: return enable_flags.sample_alpha_to_coverage; case GL_SAMPLE_COVERAGE: return enable_flags.sample_coverage; case GL_SCISSOR_TEST: return enable_flags.scissor_test; case GL_STENCIL_TEST: return enable_flags.stencil_test; case GL_RASTERIZER_DISCARD: return enable_flags.rasterizer_discard; case GL_PRIMITIVE_RESTART_FIXED_INDEX: return enable_flags.primitive_restart_fixed_index; default: NOTREACHED(); return false; } } bool ContextState::GetStateAsGLint(GLenum pname, GLint* params, GLsizei* num_written) const { switch (pname) { case GL_BLEND_COLOR: *num_written = 4; if (params) { params[0] = static_cast(blend_color_red); params[1] = static_cast(blend_color_green); params[2] = static_cast(blend_color_blue); params[3] = static_cast(blend_color_alpha); } return true; case GL_BLEND_EQUATION_RGB: *num_written = 1; if (params) { params[0] = static_cast(blend_equation_rgb); } return true; case GL_BLEND_EQUATION_ALPHA: *num_written = 1; if (params) { params[0] = static_cast(blend_equation_alpha); } return true; case GL_BLEND_SRC_RGB: *num_written = 1; if (params) { params[0] = static_cast(blend_source_rgb); } return true; case GL_BLEND_DST_RGB: *num_written = 1; if (params) { params[0] = static_cast(blend_dest_rgb); } return true; case GL_BLEND_SRC_ALPHA: *num_written = 1; if (params) { params[0] = static_cast(blend_source_alpha); } return true; case GL_BLEND_DST_ALPHA: *num_written = 1; if (params) { params[0] = static_cast(blend_dest_alpha); } return true; case GL_COLOR_CLEAR_VALUE: *num_written = 4; if (params) { params[0] = static_cast(color_clear_red); params[1] = static_cast(color_clear_green); params[2] = static_cast(color_clear_blue); params[3] = static_cast(color_clear_alpha); } return true; case GL_DEPTH_CLEAR_VALUE: *num_written = 1; if (params) { params[0] = static_cast(depth_clear); } return true; case GL_STENCIL_CLEAR_VALUE: *num_written = 1; if (params) { params[0] = static_cast(stencil_clear); } return true; case GL_COLOR_WRITEMASK: *num_written = 4; if (params) { params[0] = static_cast(color_mask_red); params[1] = static_cast(color_mask_green); params[2] = static_cast(color_mask_blue); params[3] = static_cast(color_mask_alpha); } return true; case GL_CULL_FACE_MODE: *num_written = 1; if (params) { params[0] = static_cast(cull_mode); } return true; case GL_DEPTH_FUNC: *num_written = 1; if (params) { params[0] = static_cast(depth_func); } return true; case GL_DEPTH_WRITEMASK: *num_written = 1; if (params) { params[0] = static_cast(depth_mask); } return true; case GL_DEPTH_RANGE: *num_written = 2; if (params) { params[0] = static_cast(z_near); params[1] = static_cast(z_far); } return true; case GL_FRONT_FACE: *num_written = 1; if (params) { params[0] = static_cast(front_face); } return true; case GL_GENERATE_MIPMAP_HINT: *num_written = 1; if (params) { params[0] = static_cast(hint_generate_mipmap); } return true; case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES: *num_written = 1; if (params) { params[0] = static_cast(hint_fragment_shader_derivative); } return true; case GL_LINE_WIDTH: *num_written = 1; if (params) { params[0] = static_cast(line_width); } return true; case GL_PATH_MODELVIEW_MATRIX_CHROMIUM: *num_written = 16; if (params) { for (size_t i = 0; i < 16; ++i) { params[i] = static_cast(round(modelview_matrix[i])); } } return true; case GL_PATH_PROJECTION_MATRIX_CHROMIUM: *num_written = 16; if (params) { for (size_t i = 0; i < 16; ++i) { params[i] = static_cast(round(projection_matrix[i])); } } return true; case GL_PATH_STENCIL_FUNC_CHROMIUM: *num_written = 1; if (params) { params[0] = static_cast(stencil_path_func); } return true; case GL_PATH_STENCIL_REF_CHROMIUM: *num_written = 1; if (params) { params[0] = static_cast(stencil_path_ref); } return true; case GL_PATH_STENCIL_VALUE_MASK_CHROMIUM: *num_written = 1; if (params) { params[0] = static_cast(stencil_path_mask); } return true; case GL_PACK_ALIGNMENT: *num_written = 1; if (params) { params[0] = static_cast(pack_alignment); } return true; case GL_UNPACK_ALIGNMENT: *num_written = 1; if (params) { params[0] = static_cast(unpack_alignment); } return true; case GL_POLYGON_OFFSET_FACTOR: *num_written = 1; if (params) { params[0] = static_cast(round(polygon_offset_factor)); } return true; case GL_POLYGON_OFFSET_UNITS: *num_written = 1; if (params) { params[0] = static_cast(round(polygon_offset_units)); } return true; case GL_SAMPLE_COVERAGE_VALUE: *num_written = 1; if (params) { params[0] = static_cast(sample_coverage_value); } return true; case GL_SAMPLE_COVERAGE_INVERT: *num_written = 1; if (params) { params[0] = static_cast(sample_coverage_invert); } return true; case GL_SCISSOR_BOX: *num_written = 4; if (params) { params[0] = static_cast(scissor_x); params[1] = static_cast(scissor_y); params[2] = static_cast(scissor_width); params[3] = static_cast(scissor_height); } return true; case GL_STENCIL_FUNC: *num_written = 1; if (params) { params[0] = static_cast(stencil_front_func); } return true; case GL_STENCIL_REF: *num_written = 1; if (params) { params[0] = static_cast(stencil_front_ref); } return true; case GL_STENCIL_VALUE_MASK: *num_written = 1; if (params) { params[0] = static_cast(stencil_front_mask); } return true; case GL_STENCIL_BACK_FUNC: *num_written = 1; if (params) { params[0] = static_cast(stencil_back_func); } return true; case GL_STENCIL_BACK_REF: *num_written = 1; if (params) { params[0] = static_cast(stencil_back_ref); } return true; case GL_STENCIL_BACK_VALUE_MASK: *num_written = 1; if (params) { params[0] = static_cast(stencil_back_mask); } return true; case GL_STENCIL_WRITEMASK: *num_written = 1; if (params) { params[0] = static_cast(stencil_front_writemask); } return true; case GL_STENCIL_BACK_WRITEMASK: *num_written = 1; if (params) { params[0] = static_cast(stencil_back_writemask); } return true; case GL_STENCIL_FAIL: *num_written = 1; if (params) { params[0] = static_cast(stencil_front_fail_op); } return true; case GL_STENCIL_PASS_DEPTH_FAIL: *num_written = 1; if (params) { params[0] = static_cast(stencil_front_z_fail_op); } return true; case GL_STENCIL_PASS_DEPTH_PASS: *num_written = 1; if (params) { params[0] = static_cast(stencil_front_z_pass_op); } return true; case GL_STENCIL_BACK_FAIL: *num_written = 1; if (params) { params[0] = static_cast(stencil_back_fail_op); } return true; case GL_STENCIL_BACK_PASS_DEPTH_FAIL: *num_written = 1; if (params) { params[0] = static_cast(stencil_back_z_fail_op); } return true; case GL_STENCIL_BACK_PASS_DEPTH_PASS: *num_written = 1; if (params) { params[0] = static_cast(stencil_back_z_pass_op); } return true; case GL_VIEWPORT: *num_written = 4; if (params) { params[0] = static_cast(viewport_x); params[1] = static_cast(viewport_y); params[2] = static_cast(viewport_width); params[3] = static_cast(viewport_height); } return true; case GL_BLEND: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.blend); } return true; case GL_CULL_FACE: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.cull_face); } return true; case GL_DEPTH_TEST: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.depth_test); } return true; case GL_DITHER: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.dither); } return true; case GL_POLYGON_OFFSET_FILL: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.polygon_offset_fill); } return true; case GL_SAMPLE_ALPHA_TO_COVERAGE: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.sample_alpha_to_coverage); } return true; case GL_SAMPLE_COVERAGE: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.sample_coverage); } return true; case GL_SCISSOR_TEST: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.scissor_test); } return true; case GL_STENCIL_TEST: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.stencil_test); } return true; case GL_RASTERIZER_DISCARD: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.rasterizer_discard); } return true; case GL_PRIMITIVE_RESTART_FIXED_INDEX: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.primitive_restart_fixed_index); } return true; default: return false; } } bool ContextState::GetStateAsGLfloat(GLenum pname, GLfloat* params, GLsizei* num_written) const { switch (pname) { case GL_BLEND_COLOR: *num_written = 4; if (params) { params[0] = static_cast(blend_color_red); params[1] = static_cast(blend_color_green); params[2] = static_cast(blend_color_blue); params[3] = static_cast(blend_color_alpha); } return true; case GL_BLEND_EQUATION_RGB: *num_written = 1; if (params) { params[0] = static_cast(blend_equation_rgb); } return true; case GL_BLEND_EQUATION_ALPHA: *num_written = 1; if (params) { params[0] = static_cast(blend_equation_alpha); } return true; case GL_BLEND_SRC_RGB: *num_written = 1; if (params) { params[0] = static_cast(blend_source_rgb); } return true; case GL_BLEND_DST_RGB: *num_written = 1; if (params) { params[0] = static_cast(blend_dest_rgb); } return true; case GL_BLEND_SRC_ALPHA: *num_written = 1; if (params) { params[0] = static_cast(blend_source_alpha); } return true; case GL_BLEND_DST_ALPHA: *num_written = 1; if (params) { params[0] = static_cast(blend_dest_alpha); } return true; case GL_COLOR_CLEAR_VALUE: *num_written = 4; if (params) { params[0] = static_cast(color_clear_red); params[1] = static_cast(color_clear_green); params[2] = static_cast(color_clear_blue); params[3] = static_cast(color_clear_alpha); } return true; case GL_DEPTH_CLEAR_VALUE: *num_written = 1; if (params) { params[0] = static_cast(depth_clear); } return true; case GL_STENCIL_CLEAR_VALUE: *num_written = 1; if (params) { params[0] = static_cast(stencil_clear); } return true; case GL_COLOR_WRITEMASK: *num_written = 4; if (params) { params[0] = static_cast(color_mask_red); params[1] = static_cast(color_mask_green); params[2] = static_cast(color_mask_blue); params[3] = static_cast(color_mask_alpha); } return true; case GL_CULL_FACE_MODE: *num_written = 1; if (params) { params[0] = static_cast(cull_mode); } return true; case GL_DEPTH_FUNC: *num_written = 1; if (params) { params[0] = static_cast(depth_func); } return true; case GL_DEPTH_WRITEMASK: *num_written = 1; if (params) { params[0] = static_cast(depth_mask); } return true; case GL_DEPTH_RANGE: *num_written = 2; if (params) { params[0] = static_cast(z_near); params[1] = static_cast(z_far); } return true; case GL_FRONT_FACE: *num_written = 1; if (params) { params[0] = static_cast(front_face); } return true; case GL_GENERATE_MIPMAP_HINT: *num_written = 1; if (params) { params[0] = static_cast(hint_generate_mipmap); } return true; case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES: *num_written = 1; if (params) { params[0] = static_cast(hint_fragment_shader_derivative); } return true; case GL_LINE_WIDTH: *num_written = 1; if (params) { params[0] = static_cast(line_width); } return true; case GL_PATH_MODELVIEW_MATRIX_CHROMIUM: *num_written = 16; if (params) { memcpy(params, modelview_matrix, sizeof(GLfloat) * 16); } return true; case GL_PATH_PROJECTION_MATRIX_CHROMIUM: *num_written = 16; if (params) { memcpy(params, projection_matrix, sizeof(GLfloat) * 16); } return true; case GL_PATH_STENCIL_FUNC_CHROMIUM: *num_written = 1; if (params) { params[0] = static_cast(stencil_path_func); } return true; case GL_PATH_STENCIL_REF_CHROMIUM: *num_written = 1; if (params) { params[0] = static_cast(stencil_path_ref); } return true; case GL_PATH_STENCIL_VALUE_MASK_CHROMIUM: *num_written = 1; if (params) { params[0] = static_cast(stencil_path_mask); } return true; case GL_PACK_ALIGNMENT: *num_written = 1; if (params) { params[0] = static_cast(pack_alignment); } return true; case GL_UNPACK_ALIGNMENT: *num_written = 1; if (params) { params[0] = static_cast(unpack_alignment); } return true; case GL_POLYGON_OFFSET_FACTOR: *num_written = 1; if (params) { params[0] = static_cast(polygon_offset_factor); } return true; case GL_POLYGON_OFFSET_UNITS: *num_written = 1; if (params) { params[0] = static_cast(polygon_offset_units); } return true; case GL_SAMPLE_COVERAGE_VALUE: *num_written = 1; if (params) { params[0] = static_cast(sample_coverage_value); } return true; case GL_SAMPLE_COVERAGE_INVERT: *num_written = 1; if (params) { params[0] = static_cast(sample_coverage_invert); } return true; case GL_SCISSOR_BOX: *num_written = 4; if (params) { params[0] = static_cast(scissor_x); params[1] = static_cast(scissor_y); params[2] = static_cast(scissor_width); params[3] = static_cast(scissor_height); } return true; case GL_STENCIL_FUNC: *num_written = 1; if (params) { params[0] = static_cast(stencil_front_func); } return true; case GL_STENCIL_REF: *num_written = 1; if (params) { params[0] = static_cast(stencil_front_ref); } return true; case GL_STENCIL_VALUE_MASK: *num_written = 1; if (params) { params[0] = static_cast(stencil_front_mask); } return true; case GL_STENCIL_BACK_FUNC: *num_written = 1; if (params) { params[0] = static_cast(stencil_back_func); } return true; case GL_STENCIL_BACK_REF: *num_written = 1; if (params) { params[0] = static_cast(stencil_back_ref); } return true; case GL_STENCIL_BACK_VALUE_MASK: *num_written = 1; if (params) { params[0] = static_cast(stencil_back_mask); } return true; case GL_STENCIL_WRITEMASK: *num_written = 1; if (params) { params[0] = static_cast(stencil_front_writemask); } return true; case GL_STENCIL_BACK_WRITEMASK: *num_written = 1; if (params) { params[0] = static_cast(stencil_back_writemask); } return true; case GL_STENCIL_FAIL: *num_written = 1; if (params) { params[0] = static_cast(stencil_front_fail_op); } return true; case GL_STENCIL_PASS_DEPTH_FAIL: *num_written = 1; if (params) { params[0] = static_cast(stencil_front_z_fail_op); } return true; case GL_STENCIL_PASS_DEPTH_PASS: *num_written = 1; if (params) { params[0] = static_cast(stencil_front_z_pass_op); } return true; case GL_STENCIL_BACK_FAIL: *num_written = 1; if (params) { params[0] = static_cast(stencil_back_fail_op); } return true; case GL_STENCIL_BACK_PASS_DEPTH_FAIL: *num_written = 1; if (params) { params[0] = static_cast(stencil_back_z_fail_op); } return true; case GL_STENCIL_BACK_PASS_DEPTH_PASS: *num_written = 1; if (params) { params[0] = static_cast(stencil_back_z_pass_op); } return true; case GL_VIEWPORT: *num_written = 4; if (params) { params[0] = static_cast(viewport_x); params[1] = static_cast(viewport_y); params[2] = static_cast(viewport_width); params[3] = static_cast(viewport_height); } return true; case GL_BLEND: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.blend); } return true; case GL_CULL_FACE: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.cull_face); } return true; case GL_DEPTH_TEST: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.depth_test); } return true; case GL_DITHER: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.dither); } return true; case GL_POLYGON_OFFSET_FILL: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.polygon_offset_fill); } return true; case GL_SAMPLE_ALPHA_TO_COVERAGE: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.sample_alpha_to_coverage); } return true; case GL_SAMPLE_COVERAGE: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.sample_coverage); } return true; case GL_SCISSOR_TEST: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.scissor_test); } return true; case GL_STENCIL_TEST: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.stencil_test); } return true; case GL_RASTERIZER_DISCARD: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.rasterizer_discard); } return true; case GL_PRIMITIVE_RESTART_FIXED_INDEX: *num_written = 1; if (params) { params[0] = static_cast(enable_flags.primitive_restart_fixed_index); } return true; default: return false; } } #endif // GPU_COMMAND_BUFFER_SERVICE_CONTEXT_STATE_IMPL_AUTOGEN_H_