Home | History | Annotate | Download | only in service
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // This file is auto-generated from
      6 // gpu/command_buffer/build_gles2_cmd_buffer.py
      7 // It's formatted by clang-format using chromium coding style:
      8 //    clang-format -i -style=chromium filename
      9 // DO NOT EDIT!
     10 
     11 // It is included by context_state.cc
     12 #ifndef GPU_COMMAND_BUFFER_SERVICE_CONTEXT_STATE_IMPL_AUTOGEN_H_
     13 #define GPU_COMMAND_BUFFER_SERVICE_CONTEXT_STATE_IMPL_AUTOGEN_H_
     14 
     15 ContextState::EnableFlags::EnableFlags()
     16     : blend(false),
     17       cached_blend(false),
     18       cull_face(false),
     19       cached_cull_face(false),
     20       depth_test(false),
     21       cached_depth_test(false),
     22       dither(true),
     23       cached_dither(true),
     24       polygon_offset_fill(false),
     25       cached_polygon_offset_fill(false),
     26       sample_alpha_to_coverage(false),
     27       cached_sample_alpha_to_coverage(false),
     28       sample_coverage(false),
     29       cached_sample_coverage(false),
     30       scissor_test(false),
     31       cached_scissor_test(false),
     32       stencil_test(false),
     33       cached_stencil_test(false) {
     34 }
     35 
     36 void ContextState::Initialize() {
     37   blend_color_red = 0.0f;
     38   blend_color_green = 0.0f;
     39   blend_color_blue = 0.0f;
     40   blend_color_alpha = 0.0f;
     41   blend_equation_rgb = GL_FUNC_ADD;
     42   blend_equation_alpha = GL_FUNC_ADD;
     43   blend_source_rgb = GL_ONE;
     44   blend_dest_rgb = GL_ZERO;
     45   blend_source_alpha = GL_ONE;
     46   blend_dest_alpha = GL_ZERO;
     47   color_clear_red = 0.0f;
     48   color_clear_green = 0.0f;
     49   color_clear_blue = 0.0f;
     50   color_clear_alpha = 0.0f;
     51   depth_clear = 1.0f;
     52   stencil_clear = 0;
     53   color_mask_red = true;
     54   cached_color_mask_red = true;
     55   color_mask_green = true;
     56   cached_color_mask_green = true;
     57   color_mask_blue = true;
     58   cached_color_mask_blue = true;
     59   color_mask_alpha = true;
     60   cached_color_mask_alpha = true;
     61   cull_mode = GL_BACK;
     62   depth_func = GL_LESS;
     63   depth_mask = true;
     64   cached_depth_mask = true;
     65   z_near = 0.0f;
     66   z_far = 1.0f;
     67   front_face = GL_CCW;
     68   hint_generate_mipmap = GL_DONT_CARE;
     69   hint_fragment_shader_derivative = GL_DONT_CARE;
     70   line_width = 1.0f;
     71   pack_alignment = 4;
     72   unpack_alignment = 4;
     73   polygon_offset_factor = 0.0f;
     74   polygon_offset_units = 0.0f;
     75   sample_coverage_value = 1.0f;
     76   sample_coverage_invert = false;
     77   scissor_x = 0;
     78   scissor_y = 0;
     79   scissor_width = 1;
     80   scissor_height = 1;
     81   stencil_front_func = GL_ALWAYS;
     82   stencil_front_ref = 0;
     83   stencil_front_mask = 0xFFFFFFFFU;
     84   stencil_back_func = GL_ALWAYS;
     85   stencil_back_ref = 0;
     86   stencil_back_mask = 0xFFFFFFFFU;
     87   stencil_front_writemask = 0xFFFFFFFFU;
     88   cached_stencil_front_writemask = 0xFFFFFFFFU;
     89   stencil_back_writemask = 0xFFFFFFFFU;
     90   cached_stencil_back_writemask = 0xFFFFFFFFU;
     91   stencil_front_fail_op = GL_KEEP;
     92   stencil_front_z_fail_op = GL_KEEP;
     93   stencil_front_z_pass_op = GL_KEEP;
     94   stencil_back_fail_op = GL_KEEP;
     95   stencil_back_z_fail_op = GL_KEEP;
     96   stencil_back_z_pass_op = GL_KEEP;
     97   viewport_x = 0;
     98   viewport_y = 0;
     99   viewport_width = 1;
    100   viewport_height = 1;
    101 }
    102 
    103 void ContextState::InitCapabilities(const ContextState* prev_state) const {
    104   if (prev_state) {
    105     if (prev_state->enable_flags.cached_blend != enable_flags.cached_blend)
    106       EnableDisable(GL_BLEND, enable_flags.cached_blend);
    107     if (prev_state->enable_flags.cached_cull_face !=
    108         enable_flags.cached_cull_face)
    109       EnableDisable(GL_CULL_FACE, enable_flags.cached_cull_face);
    110     if (prev_state->enable_flags.cached_depth_test !=
    111         enable_flags.cached_depth_test)
    112       EnableDisable(GL_DEPTH_TEST, enable_flags.cached_depth_test);
    113     if (prev_state->enable_flags.cached_dither != enable_flags.cached_dither)
    114       EnableDisable(GL_DITHER, enable_flags.cached_dither);
    115     if (prev_state->enable_flags.cached_polygon_offset_fill !=
    116         enable_flags.cached_polygon_offset_fill)
    117       EnableDisable(GL_POLYGON_OFFSET_FILL,
    118                     enable_flags.cached_polygon_offset_fill);
    119     if (prev_state->enable_flags.cached_sample_alpha_to_coverage !=
    120         enable_flags.cached_sample_alpha_to_coverage)
    121       EnableDisable(GL_SAMPLE_ALPHA_TO_COVERAGE,
    122                     enable_flags.cached_sample_alpha_to_coverage);
    123     if (prev_state->enable_flags.cached_sample_coverage !=
    124         enable_flags.cached_sample_coverage)
    125       EnableDisable(GL_SAMPLE_COVERAGE, enable_flags.cached_sample_coverage);
    126     if (prev_state->enable_flags.cached_scissor_test !=
    127         enable_flags.cached_scissor_test)
    128       EnableDisable(GL_SCISSOR_TEST, enable_flags.cached_scissor_test);
    129     if (prev_state->enable_flags.cached_stencil_test !=
    130         enable_flags.cached_stencil_test)
    131       EnableDisable(GL_STENCIL_TEST, enable_flags.cached_stencil_test);
    132   } else {
    133     EnableDisable(GL_BLEND, enable_flags.cached_blend);
    134     EnableDisable(GL_CULL_FACE, enable_flags.cached_cull_face);
    135     EnableDisable(GL_DEPTH_TEST, enable_flags.cached_depth_test);
    136     EnableDisable(GL_DITHER, enable_flags.cached_dither);
    137     EnableDisable(GL_POLYGON_OFFSET_FILL,
    138                   enable_flags.cached_polygon_offset_fill);
    139     EnableDisable(GL_SAMPLE_ALPHA_TO_COVERAGE,
    140                   enable_flags.cached_sample_alpha_to_coverage);
    141     EnableDisable(GL_SAMPLE_COVERAGE, enable_flags.cached_sample_coverage);
    142     EnableDisable(GL_SCISSOR_TEST, enable_flags.cached_scissor_test);
    143     EnableDisable(GL_STENCIL_TEST, enable_flags.cached_stencil_test);
    144   }
    145 }
    146 
    147 void ContextState::InitState(const ContextState* prev_state) const {
    148   if (prev_state) {
    149     if ((blend_color_red != prev_state->blend_color_red) ||
    150         (blend_color_green != prev_state->blend_color_green) ||
    151         (blend_color_blue != prev_state->blend_color_blue) ||
    152         (blend_color_alpha != prev_state->blend_color_alpha))
    153       glBlendColor(blend_color_red,
    154                    blend_color_green,
    155                    blend_color_blue,
    156                    blend_color_alpha);
    157     if ((blend_equation_rgb != prev_state->blend_equation_rgb) ||
    158         (blend_equation_alpha != prev_state->blend_equation_alpha))
    159       glBlendEquationSeparate(blend_equation_rgb, blend_equation_alpha);
    160     if ((blend_source_rgb != prev_state->blend_source_rgb) ||
    161         (blend_dest_rgb != prev_state->blend_dest_rgb) ||
    162         (blend_source_alpha != prev_state->blend_source_alpha) ||
    163         (blend_dest_alpha != prev_state->blend_dest_alpha))
    164       glBlendFuncSeparate(blend_source_rgb,
    165                           blend_dest_rgb,
    166                           blend_source_alpha,
    167                           blend_dest_alpha);
    168     if ((color_clear_red != prev_state->color_clear_red) ||
    169         (color_clear_green != prev_state->color_clear_green) ||
    170         (color_clear_blue != prev_state->color_clear_blue) ||
    171         (color_clear_alpha != prev_state->color_clear_alpha))
    172       glClearColor(color_clear_red,
    173                    color_clear_green,
    174                    color_clear_blue,
    175                    color_clear_alpha);
    176     if ((depth_clear != prev_state->depth_clear))
    177       glClearDepth(depth_clear);
    178     if ((stencil_clear != prev_state->stencil_clear))
    179       glClearStencil(stencil_clear);
    180     if ((cached_color_mask_red != prev_state->cached_color_mask_red) ||
    181         (cached_color_mask_green != prev_state->cached_color_mask_green) ||
    182         (cached_color_mask_blue != prev_state->cached_color_mask_blue) ||
    183         (cached_color_mask_alpha != prev_state->cached_color_mask_alpha))
    184       glColorMask(cached_color_mask_red,
    185                   cached_color_mask_green,
    186                   cached_color_mask_blue,
    187                   cached_color_mask_alpha);
    188     if ((cull_mode != prev_state->cull_mode))
    189       glCullFace(cull_mode);
    190     if ((depth_func != prev_state->depth_func))
    191       glDepthFunc(depth_func);
    192     if ((cached_depth_mask != prev_state->cached_depth_mask))
    193       glDepthMask(cached_depth_mask);
    194     if ((z_near != prev_state->z_near) || (z_far != prev_state->z_far))
    195       glDepthRange(z_near, z_far);
    196     if ((front_face != prev_state->front_face))
    197       glFrontFace(front_face);
    198     if (prev_state->hint_generate_mipmap != hint_generate_mipmap)
    199       glHint(GL_GENERATE_MIPMAP_HINT, hint_generate_mipmap);
    200     if (feature_info_->feature_flags().oes_standard_derivatives)
    201       if (prev_state->hint_fragment_shader_derivative !=
    202           hint_fragment_shader_derivative)
    203         glHint(GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES,
    204                hint_fragment_shader_derivative);
    205     if ((line_width != prev_state->line_width))
    206       glLineWidth(line_width);
    207     if (prev_state->pack_alignment != pack_alignment)
    208       glPixelStorei(GL_PACK_ALIGNMENT, pack_alignment);
    209     if (prev_state->unpack_alignment != unpack_alignment)
    210       glPixelStorei(GL_UNPACK_ALIGNMENT, unpack_alignment);
    211     if ((polygon_offset_factor != prev_state->polygon_offset_factor) ||
    212         (polygon_offset_units != prev_state->polygon_offset_units))
    213       glPolygonOffset(polygon_offset_factor, polygon_offset_units);
    214     if ((sample_coverage_value != prev_state->sample_coverage_value) ||
    215         (sample_coverage_invert != prev_state->sample_coverage_invert))
    216       glSampleCoverage(sample_coverage_value, sample_coverage_invert);
    217     if ((scissor_x != prev_state->scissor_x) ||
    218         (scissor_y != prev_state->scissor_y) ||
    219         (scissor_width != prev_state->scissor_width) ||
    220         (scissor_height != prev_state->scissor_height))
    221       glScissor(scissor_x, scissor_y, scissor_width, scissor_height);
    222     if ((stencil_front_func != prev_state->stencil_front_func) ||
    223         (stencil_front_ref != prev_state->stencil_front_ref) ||
    224         (stencil_front_mask != prev_state->stencil_front_mask))
    225       glStencilFuncSeparate(
    226           GL_FRONT, stencil_front_func, stencil_front_ref, stencil_front_mask);
    227     if ((stencil_back_func != prev_state->stencil_back_func) ||
    228         (stencil_back_ref != prev_state->stencil_back_ref) ||
    229         (stencil_back_mask != prev_state->stencil_back_mask))
    230       glStencilFuncSeparate(
    231           GL_BACK, stencil_back_func, stencil_back_ref, stencil_back_mask);
    232     if ((cached_stencil_front_writemask !=
    233          prev_state->cached_stencil_front_writemask))
    234       glStencilMaskSeparate(GL_FRONT, cached_stencil_front_writemask);
    235     if ((cached_stencil_back_writemask !=
    236          prev_state->cached_stencil_back_writemask))
    237       glStencilMaskSeparate(GL_BACK, cached_stencil_back_writemask);
    238     if ((stencil_front_fail_op != prev_state->stencil_front_fail_op) ||
    239         (stencil_front_z_fail_op != prev_state->stencil_front_z_fail_op) ||
    240         (stencil_front_z_pass_op != prev_state->stencil_front_z_pass_op))
    241       glStencilOpSeparate(GL_FRONT,
    242                           stencil_front_fail_op,
    243                           stencil_front_z_fail_op,
    244                           stencil_front_z_pass_op);
    245     if ((stencil_back_fail_op != prev_state->stencil_back_fail_op) ||
    246         (stencil_back_z_fail_op != prev_state->stencil_back_z_fail_op) ||
    247         (stencil_back_z_pass_op != prev_state->stencil_back_z_pass_op))
    248       glStencilOpSeparate(GL_BACK,
    249                           stencil_back_fail_op,
    250                           stencil_back_z_fail_op,
    251                           stencil_back_z_pass_op);
    252     if ((viewport_x != prev_state->viewport_x) ||
    253         (viewport_y != prev_state->viewport_y) ||
    254         (viewport_width != prev_state->viewport_width) ||
    255         (viewport_height != prev_state->viewport_height))
    256       glViewport(viewport_x, viewport_y, viewport_width, viewport_height);
    257   } else {
    258     glBlendColor(blend_color_red,
    259                  blend_color_green,
    260                  blend_color_blue,
    261                  blend_color_alpha);
    262     glBlendEquationSeparate(blend_equation_rgb, blend_equation_alpha);
    263     glBlendFuncSeparate(
    264         blend_source_rgb, blend_dest_rgb, blend_source_alpha, blend_dest_alpha);
    265     glClearColor(color_clear_red,
    266                  color_clear_green,
    267                  color_clear_blue,
    268                  color_clear_alpha);
    269     glClearDepth(depth_clear);
    270     glClearStencil(stencil_clear);
    271     glColorMask(cached_color_mask_red,
    272                 cached_color_mask_green,
    273                 cached_color_mask_blue,
    274                 cached_color_mask_alpha);
    275     glCullFace(cull_mode);
    276     glDepthFunc(depth_func);
    277     glDepthMask(cached_depth_mask);
    278     glDepthRange(z_near, z_far);
    279     glFrontFace(front_face);
    280     glHint(GL_GENERATE_MIPMAP_HINT, hint_generate_mipmap);
    281     if (feature_info_->feature_flags().oes_standard_derivatives)
    282       glHint(GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES,
    283              hint_fragment_shader_derivative);
    284     glLineWidth(line_width);
    285     glPixelStorei(GL_PACK_ALIGNMENT, pack_alignment);
    286     glPixelStorei(GL_UNPACK_ALIGNMENT, unpack_alignment);
    287     glPolygonOffset(polygon_offset_factor, polygon_offset_units);
    288     glSampleCoverage(sample_coverage_value, sample_coverage_invert);
    289     glScissor(scissor_x, scissor_y, scissor_width, scissor_height);
    290     glStencilFuncSeparate(
    291         GL_FRONT, stencil_front_func, stencil_front_ref, stencil_front_mask);
    292     glStencilFuncSeparate(
    293         GL_BACK, stencil_back_func, stencil_back_ref, stencil_back_mask);
    294     glStencilMaskSeparate(GL_FRONT, cached_stencil_front_writemask);
    295     glStencilMaskSeparate(GL_BACK, cached_stencil_back_writemask);
    296     glStencilOpSeparate(GL_FRONT,
    297                         stencil_front_fail_op,
    298                         stencil_front_z_fail_op,
    299                         stencil_front_z_pass_op);
    300     glStencilOpSeparate(GL_BACK,
    301                         stencil_back_fail_op,
    302                         stencil_back_z_fail_op,
    303                         stencil_back_z_pass_op);
    304     glViewport(viewport_x, viewport_y, viewport_width, viewport_height);
    305   }
    306 }
    307 bool ContextState::GetEnabled(GLenum cap) const {
    308   switch (cap) {
    309     case GL_BLEND:
    310       return enable_flags.blend;
    311     case GL_CULL_FACE:
    312       return enable_flags.cull_face;
    313     case GL_DEPTH_TEST:
    314       return enable_flags.depth_test;
    315     case GL_DITHER:
    316       return enable_flags.dither;
    317     case GL_POLYGON_OFFSET_FILL:
    318       return enable_flags.polygon_offset_fill;
    319     case GL_SAMPLE_ALPHA_TO_COVERAGE:
    320       return enable_flags.sample_alpha_to_coverage;
    321     case GL_SAMPLE_COVERAGE:
    322       return enable_flags.sample_coverage;
    323     case GL_SCISSOR_TEST:
    324       return enable_flags.scissor_test;
    325     case GL_STENCIL_TEST:
    326       return enable_flags.stencil_test;
    327     default:
    328       NOTREACHED();
    329       return false;
    330   }
    331 }
    332 
    333 bool ContextState::GetStateAsGLint(GLenum pname,
    334                                    GLint* params,
    335                                    GLsizei* num_written) const {
    336   switch (pname) {
    337     case GL_BLEND_COLOR:
    338       *num_written = 4;
    339       if (params) {
    340         params[0] = static_cast<GLint>(blend_color_red);
    341         params[1] = static_cast<GLint>(blend_color_green);
    342         params[2] = static_cast<GLint>(blend_color_blue);
    343         params[3] = static_cast<GLint>(blend_color_alpha);
    344       }
    345       return true;
    346     case GL_BLEND_EQUATION_RGB:
    347       *num_written = 1;
    348       if (params) {
    349         params[0] = static_cast<GLint>(blend_equation_rgb);
    350       }
    351       return true;
    352     case GL_BLEND_EQUATION_ALPHA:
    353       *num_written = 1;
    354       if (params) {
    355         params[0] = static_cast<GLint>(blend_equation_alpha);
    356       }
    357       return true;
    358     case GL_BLEND_SRC_RGB:
    359       *num_written = 1;
    360       if (params) {
    361         params[0] = static_cast<GLint>(blend_source_rgb);
    362       }
    363       return true;
    364     case GL_BLEND_DST_RGB:
    365       *num_written = 1;
    366       if (params) {
    367         params[0] = static_cast<GLint>(blend_dest_rgb);
    368       }
    369       return true;
    370     case GL_BLEND_SRC_ALPHA:
    371       *num_written = 1;
    372       if (params) {
    373         params[0] = static_cast<GLint>(blend_source_alpha);
    374       }
    375       return true;
    376     case GL_BLEND_DST_ALPHA:
    377       *num_written = 1;
    378       if (params) {
    379         params[0] = static_cast<GLint>(blend_dest_alpha);
    380       }
    381       return true;
    382     case GL_COLOR_CLEAR_VALUE:
    383       *num_written = 4;
    384       if (params) {
    385         params[0] = static_cast<GLint>(color_clear_red);
    386         params[1] = static_cast<GLint>(color_clear_green);
    387         params[2] = static_cast<GLint>(color_clear_blue);
    388         params[3] = static_cast<GLint>(color_clear_alpha);
    389       }
    390       return true;
    391     case GL_DEPTH_CLEAR_VALUE:
    392       *num_written = 1;
    393       if (params) {
    394         params[0] = static_cast<GLint>(depth_clear);
    395       }
    396       return true;
    397     case GL_STENCIL_CLEAR_VALUE:
    398       *num_written = 1;
    399       if (params) {
    400         params[0] = static_cast<GLint>(stencil_clear);
    401       }
    402       return true;
    403     case GL_COLOR_WRITEMASK:
    404       *num_written = 4;
    405       if (params) {
    406         params[0] = static_cast<GLint>(color_mask_red);
    407         params[1] = static_cast<GLint>(color_mask_green);
    408         params[2] = static_cast<GLint>(color_mask_blue);
    409         params[3] = static_cast<GLint>(color_mask_alpha);
    410       }
    411       return true;
    412     case GL_CULL_FACE_MODE:
    413       *num_written = 1;
    414       if (params) {
    415         params[0] = static_cast<GLint>(cull_mode);
    416       }
    417       return true;
    418     case GL_DEPTH_FUNC:
    419       *num_written = 1;
    420       if (params) {
    421         params[0] = static_cast<GLint>(depth_func);
    422       }
    423       return true;
    424     case GL_DEPTH_WRITEMASK:
    425       *num_written = 1;
    426       if (params) {
    427         params[0] = static_cast<GLint>(depth_mask);
    428       }
    429       return true;
    430     case GL_DEPTH_RANGE:
    431       *num_written = 2;
    432       if (params) {
    433         params[0] = static_cast<GLint>(z_near);
    434         params[1] = static_cast<GLint>(z_far);
    435       }
    436       return true;
    437     case GL_FRONT_FACE:
    438       *num_written = 1;
    439       if (params) {
    440         params[0] = static_cast<GLint>(front_face);
    441       }
    442       return true;
    443     case GL_GENERATE_MIPMAP_HINT:
    444       *num_written = 1;
    445       if (params) {
    446         params[0] = static_cast<GLint>(hint_generate_mipmap);
    447       }
    448       return true;
    449     case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES:
    450       *num_written = 1;
    451       if (params) {
    452         params[0] = static_cast<GLint>(hint_fragment_shader_derivative);
    453       }
    454       return true;
    455     case GL_LINE_WIDTH:
    456       *num_written = 1;
    457       if (params) {
    458         params[0] = static_cast<GLint>(line_width);
    459       }
    460       return true;
    461     case GL_PACK_ALIGNMENT:
    462       *num_written = 1;
    463       if (params) {
    464         params[0] = static_cast<GLint>(pack_alignment);
    465       }
    466       return true;
    467     case GL_UNPACK_ALIGNMENT:
    468       *num_written = 1;
    469       if (params) {
    470         params[0] = static_cast<GLint>(unpack_alignment);
    471       }
    472       return true;
    473     case GL_POLYGON_OFFSET_FACTOR:
    474       *num_written = 1;
    475       if (params) {
    476         params[0] = static_cast<GLint>(polygon_offset_factor);
    477       }
    478       return true;
    479     case GL_POLYGON_OFFSET_UNITS:
    480       *num_written = 1;
    481       if (params) {
    482         params[0] = static_cast<GLint>(polygon_offset_units);
    483       }
    484       return true;
    485     case GL_SAMPLE_COVERAGE_VALUE:
    486       *num_written = 1;
    487       if (params) {
    488         params[0] = static_cast<GLint>(sample_coverage_value);
    489       }
    490       return true;
    491     case GL_SAMPLE_COVERAGE_INVERT:
    492       *num_written = 1;
    493       if (params) {
    494         params[0] = static_cast<GLint>(sample_coverage_invert);
    495       }
    496       return true;
    497     case GL_SCISSOR_BOX:
    498       *num_written = 4;
    499       if (params) {
    500         params[0] = static_cast<GLint>(scissor_x);
    501         params[1] = static_cast<GLint>(scissor_y);
    502         params[2] = static_cast<GLint>(scissor_width);
    503         params[3] = static_cast<GLint>(scissor_height);
    504       }
    505       return true;
    506     case GL_STENCIL_FUNC:
    507       *num_written = 1;
    508       if (params) {
    509         params[0] = static_cast<GLint>(stencil_front_func);
    510       }
    511       return true;
    512     case GL_STENCIL_REF:
    513       *num_written = 1;
    514       if (params) {
    515         params[0] = static_cast<GLint>(stencil_front_ref);
    516       }
    517       return true;
    518     case GL_STENCIL_VALUE_MASK:
    519       *num_written = 1;
    520       if (params) {
    521         params[0] = static_cast<GLint>(stencil_front_mask);
    522       }
    523       return true;
    524     case GL_STENCIL_BACK_FUNC:
    525       *num_written = 1;
    526       if (params) {
    527         params[0] = static_cast<GLint>(stencil_back_func);
    528       }
    529       return true;
    530     case GL_STENCIL_BACK_REF:
    531       *num_written = 1;
    532       if (params) {
    533         params[0] = static_cast<GLint>(stencil_back_ref);
    534       }
    535       return true;
    536     case GL_STENCIL_BACK_VALUE_MASK:
    537       *num_written = 1;
    538       if (params) {
    539         params[0] = static_cast<GLint>(stencil_back_mask);
    540       }
    541       return true;
    542     case GL_STENCIL_WRITEMASK:
    543       *num_written = 1;
    544       if (params) {
    545         params[0] = static_cast<GLint>(stencil_front_writemask);
    546       }
    547       return true;
    548     case GL_STENCIL_BACK_WRITEMASK:
    549       *num_written = 1;
    550       if (params) {
    551         params[0] = static_cast<GLint>(stencil_back_writemask);
    552       }
    553       return true;
    554     case GL_STENCIL_FAIL:
    555       *num_written = 1;
    556       if (params) {
    557         params[0] = static_cast<GLint>(stencil_front_fail_op);
    558       }
    559       return true;
    560     case GL_STENCIL_PASS_DEPTH_FAIL:
    561       *num_written = 1;
    562       if (params) {
    563         params[0] = static_cast<GLint>(stencil_front_z_fail_op);
    564       }
    565       return true;
    566     case GL_STENCIL_PASS_DEPTH_PASS:
    567       *num_written = 1;
    568       if (params) {
    569         params[0] = static_cast<GLint>(stencil_front_z_pass_op);
    570       }
    571       return true;
    572     case GL_STENCIL_BACK_FAIL:
    573       *num_written = 1;
    574       if (params) {
    575         params[0] = static_cast<GLint>(stencil_back_fail_op);
    576       }
    577       return true;
    578     case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
    579       *num_written = 1;
    580       if (params) {
    581         params[0] = static_cast<GLint>(stencil_back_z_fail_op);
    582       }
    583       return true;
    584     case GL_STENCIL_BACK_PASS_DEPTH_PASS:
    585       *num_written = 1;
    586       if (params) {
    587         params[0] = static_cast<GLint>(stencil_back_z_pass_op);
    588       }
    589       return true;
    590     case GL_VIEWPORT:
    591       *num_written = 4;
    592       if (params) {
    593         params[0] = static_cast<GLint>(viewport_x);
    594         params[1] = static_cast<GLint>(viewport_y);
    595         params[2] = static_cast<GLint>(viewport_width);
    596         params[3] = static_cast<GLint>(viewport_height);
    597       }
    598       return true;
    599     case GL_BLEND:
    600       *num_written = 1;
    601       if (params) {
    602         params[0] = static_cast<GLint>(enable_flags.blend);
    603       }
    604       return true;
    605     case GL_CULL_FACE:
    606       *num_written = 1;
    607       if (params) {
    608         params[0] = static_cast<GLint>(enable_flags.cull_face);
    609       }
    610       return true;
    611     case GL_DEPTH_TEST:
    612       *num_written = 1;
    613       if (params) {
    614         params[0] = static_cast<GLint>(enable_flags.depth_test);
    615       }
    616       return true;
    617     case GL_DITHER:
    618       *num_written = 1;
    619       if (params) {
    620         params[0] = static_cast<GLint>(enable_flags.dither);
    621       }
    622       return true;
    623     case GL_POLYGON_OFFSET_FILL:
    624       *num_written = 1;
    625       if (params) {
    626         params[0] = static_cast<GLint>(enable_flags.polygon_offset_fill);
    627       }
    628       return true;
    629     case GL_SAMPLE_ALPHA_TO_COVERAGE:
    630       *num_written = 1;
    631       if (params) {
    632         params[0] = static_cast<GLint>(enable_flags.sample_alpha_to_coverage);
    633       }
    634       return true;
    635     case GL_SAMPLE_COVERAGE:
    636       *num_written = 1;
    637       if (params) {
    638         params[0] = static_cast<GLint>(enable_flags.sample_coverage);
    639       }
    640       return true;
    641     case GL_SCISSOR_TEST:
    642       *num_written = 1;
    643       if (params) {
    644         params[0] = static_cast<GLint>(enable_flags.scissor_test);
    645       }
    646       return true;
    647     case GL_STENCIL_TEST:
    648       *num_written = 1;
    649       if (params) {
    650         params[0] = static_cast<GLint>(enable_flags.stencil_test);
    651       }
    652       return true;
    653     default:
    654       return false;
    655   }
    656 }
    657 
    658 bool ContextState::GetStateAsGLfloat(GLenum pname,
    659                                      GLfloat* params,
    660                                      GLsizei* num_written) const {
    661   switch (pname) {
    662     case GL_BLEND_COLOR:
    663       *num_written = 4;
    664       if (params) {
    665         params[0] = static_cast<GLfloat>(blend_color_red);
    666         params[1] = static_cast<GLfloat>(blend_color_green);
    667         params[2] = static_cast<GLfloat>(blend_color_blue);
    668         params[3] = static_cast<GLfloat>(blend_color_alpha);
    669       }
    670       return true;
    671     case GL_BLEND_EQUATION_RGB:
    672       *num_written = 1;
    673       if (params) {
    674         params[0] = static_cast<GLfloat>(blend_equation_rgb);
    675       }
    676       return true;
    677     case GL_BLEND_EQUATION_ALPHA:
    678       *num_written = 1;
    679       if (params) {
    680         params[0] = static_cast<GLfloat>(blend_equation_alpha);
    681       }
    682       return true;
    683     case GL_BLEND_SRC_RGB:
    684       *num_written = 1;
    685       if (params) {
    686         params[0] = static_cast<GLfloat>(blend_source_rgb);
    687       }
    688       return true;
    689     case GL_BLEND_DST_RGB:
    690       *num_written = 1;
    691       if (params) {
    692         params[0] = static_cast<GLfloat>(blend_dest_rgb);
    693       }
    694       return true;
    695     case GL_BLEND_SRC_ALPHA:
    696       *num_written = 1;
    697       if (params) {
    698         params[0] = static_cast<GLfloat>(blend_source_alpha);
    699       }
    700       return true;
    701     case GL_BLEND_DST_ALPHA:
    702       *num_written = 1;
    703       if (params) {
    704         params[0] = static_cast<GLfloat>(blend_dest_alpha);
    705       }
    706       return true;
    707     case GL_COLOR_CLEAR_VALUE:
    708       *num_written = 4;
    709       if (params) {
    710         params[0] = static_cast<GLfloat>(color_clear_red);
    711         params[1] = static_cast<GLfloat>(color_clear_green);
    712         params[2] = static_cast<GLfloat>(color_clear_blue);
    713         params[3] = static_cast<GLfloat>(color_clear_alpha);
    714       }
    715       return true;
    716     case GL_DEPTH_CLEAR_VALUE:
    717       *num_written = 1;
    718       if (params) {
    719         params[0] = static_cast<GLfloat>(depth_clear);
    720       }
    721       return true;
    722     case GL_STENCIL_CLEAR_VALUE:
    723       *num_written = 1;
    724       if (params) {
    725         params[0] = static_cast<GLfloat>(stencil_clear);
    726       }
    727       return true;
    728     case GL_COLOR_WRITEMASK:
    729       *num_written = 4;
    730       if (params) {
    731         params[0] = static_cast<GLfloat>(color_mask_red);
    732         params[1] = static_cast<GLfloat>(color_mask_green);
    733         params[2] = static_cast<GLfloat>(color_mask_blue);
    734         params[3] = static_cast<GLfloat>(color_mask_alpha);
    735       }
    736       return true;
    737     case GL_CULL_FACE_MODE:
    738       *num_written = 1;
    739       if (params) {
    740         params[0] = static_cast<GLfloat>(cull_mode);
    741       }
    742       return true;
    743     case GL_DEPTH_FUNC:
    744       *num_written = 1;
    745       if (params) {
    746         params[0] = static_cast<GLfloat>(depth_func);
    747       }
    748       return true;
    749     case GL_DEPTH_WRITEMASK:
    750       *num_written = 1;
    751       if (params) {
    752         params[0] = static_cast<GLfloat>(depth_mask);
    753       }
    754       return true;
    755     case GL_DEPTH_RANGE:
    756       *num_written = 2;
    757       if (params) {
    758         params[0] = static_cast<GLfloat>(z_near);
    759         params[1] = static_cast<GLfloat>(z_far);
    760       }
    761       return true;
    762     case GL_FRONT_FACE:
    763       *num_written = 1;
    764       if (params) {
    765         params[0] = static_cast<GLfloat>(front_face);
    766       }
    767       return true;
    768     case GL_GENERATE_MIPMAP_HINT:
    769       *num_written = 1;
    770       if (params) {
    771         params[0] = static_cast<GLfloat>(hint_generate_mipmap);
    772       }
    773       return true;
    774     case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES:
    775       *num_written = 1;
    776       if (params) {
    777         params[0] = static_cast<GLfloat>(hint_fragment_shader_derivative);
    778       }
    779       return true;
    780     case GL_LINE_WIDTH:
    781       *num_written = 1;
    782       if (params) {
    783         params[0] = static_cast<GLfloat>(line_width);
    784       }
    785       return true;
    786     case GL_PACK_ALIGNMENT:
    787       *num_written = 1;
    788       if (params) {
    789         params[0] = static_cast<GLfloat>(pack_alignment);
    790       }
    791       return true;
    792     case GL_UNPACK_ALIGNMENT:
    793       *num_written = 1;
    794       if (params) {
    795         params[0] = static_cast<GLfloat>(unpack_alignment);
    796       }
    797       return true;
    798     case GL_POLYGON_OFFSET_FACTOR:
    799       *num_written = 1;
    800       if (params) {
    801         params[0] = static_cast<GLfloat>(polygon_offset_factor);
    802       }
    803       return true;
    804     case GL_POLYGON_OFFSET_UNITS:
    805       *num_written = 1;
    806       if (params) {
    807         params[0] = static_cast<GLfloat>(polygon_offset_units);
    808       }
    809       return true;
    810     case GL_SAMPLE_COVERAGE_VALUE:
    811       *num_written = 1;
    812       if (params) {
    813         params[0] = static_cast<GLfloat>(sample_coverage_value);
    814       }
    815       return true;
    816     case GL_SAMPLE_COVERAGE_INVERT:
    817       *num_written = 1;
    818       if (params) {
    819         params[0] = static_cast<GLfloat>(sample_coverage_invert);
    820       }
    821       return true;
    822     case GL_SCISSOR_BOX:
    823       *num_written = 4;
    824       if (params) {
    825         params[0] = static_cast<GLfloat>(scissor_x);
    826         params[1] = static_cast<GLfloat>(scissor_y);
    827         params[2] = static_cast<GLfloat>(scissor_width);
    828         params[3] = static_cast<GLfloat>(scissor_height);
    829       }
    830       return true;
    831     case GL_STENCIL_FUNC:
    832       *num_written = 1;
    833       if (params) {
    834         params[0] = static_cast<GLfloat>(stencil_front_func);
    835       }
    836       return true;
    837     case GL_STENCIL_REF:
    838       *num_written = 1;
    839       if (params) {
    840         params[0] = static_cast<GLfloat>(stencil_front_ref);
    841       }
    842       return true;
    843     case GL_STENCIL_VALUE_MASK:
    844       *num_written = 1;
    845       if (params) {
    846         params[0] = static_cast<GLfloat>(stencil_front_mask);
    847       }
    848       return true;
    849     case GL_STENCIL_BACK_FUNC:
    850       *num_written = 1;
    851       if (params) {
    852         params[0] = static_cast<GLfloat>(stencil_back_func);
    853       }
    854       return true;
    855     case GL_STENCIL_BACK_REF:
    856       *num_written = 1;
    857       if (params) {
    858         params[0] = static_cast<GLfloat>(stencil_back_ref);
    859       }
    860       return true;
    861     case GL_STENCIL_BACK_VALUE_MASK:
    862       *num_written = 1;
    863       if (params) {
    864         params[0] = static_cast<GLfloat>(stencil_back_mask);
    865       }
    866       return true;
    867     case GL_STENCIL_WRITEMASK:
    868       *num_written = 1;
    869       if (params) {
    870         params[0] = static_cast<GLfloat>(stencil_front_writemask);
    871       }
    872       return true;
    873     case GL_STENCIL_BACK_WRITEMASK:
    874       *num_written = 1;
    875       if (params) {
    876         params[0] = static_cast<GLfloat>(stencil_back_writemask);
    877       }
    878       return true;
    879     case GL_STENCIL_FAIL:
    880       *num_written = 1;
    881       if (params) {
    882         params[0] = static_cast<GLfloat>(stencil_front_fail_op);
    883       }
    884       return true;
    885     case GL_STENCIL_PASS_DEPTH_FAIL:
    886       *num_written = 1;
    887       if (params) {
    888         params[0] = static_cast<GLfloat>(stencil_front_z_fail_op);
    889       }
    890       return true;
    891     case GL_STENCIL_PASS_DEPTH_PASS:
    892       *num_written = 1;
    893       if (params) {
    894         params[0] = static_cast<GLfloat>(stencil_front_z_pass_op);
    895       }
    896       return true;
    897     case GL_STENCIL_BACK_FAIL:
    898       *num_written = 1;
    899       if (params) {
    900         params[0] = static_cast<GLfloat>(stencil_back_fail_op);
    901       }
    902       return true;
    903     case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
    904       *num_written = 1;
    905       if (params) {
    906         params[0] = static_cast<GLfloat>(stencil_back_z_fail_op);
    907       }
    908       return true;
    909     case GL_STENCIL_BACK_PASS_DEPTH_PASS:
    910       *num_written = 1;
    911       if (params) {
    912         params[0] = static_cast<GLfloat>(stencil_back_z_pass_op);
    913       }
    914       return true;
    915     case GL_VIEWPORT:
    916       *num_written = 4;
    917       if (params) {
    918         params[0] = static_cast<GLfloat>(viewport_x);
    919         params[1] = static_cast<GLfloat>(viewport_y);
    920         params[2] = static_cast<GLfloat>(viewport_width);
    921         params[3] = static_cast<GLfloat>(viewport_height);
    922       }
    923       return true;
    924     case GL_BLEND:
    925       *num_written = 1;
    926       if (params) {
    927         params[0] = static_cast<GLfloat>(enable_flags.blend);
    928       }
    929       return true;
    930     case GL_CULL_FACE:
    931       *num_written = 1;
    932       if (params) {
    933         params[0] = static_cast<GLfloat>(enable_flags.cull_face);
    934       }
    935       return true;
    936     case GL_DEPTH_TEST:
    937       *num_written = 1;
    938       if (params) {
    939         params[0] = static_cast<GLfloat>(enable_flags.depth_test);
    940       }
    941       return true;
    942     case GL_DITHER:
    943       *num_written = 1;
    944       if (params) {
    945         params[0] = static_cast<GLfloat>(enable_flags.dither);
    946       }
    947       return true;
    948     case GL_POLYGON_OFFSET_FILL:
    949       *num_written = 1;
    950       if (params) {
    951         params[0] = static_cast<GLfloat>(enable_flags.polygon_offset_fill);
    952       }
    953       return true;
    954     case GL_SAMPLE_ALPHA_TO_COVERAGE:
    955       *num_written = 1;
    956       if (params) {
    957         params[0] = static_cast<GLfloat>(enable_flags.sample_alpha_to_coverage);
    958       }
    959       return true;
    960     case GL_SAMPLE_COVERAGE:
    961       *num_written = 1;
    962       if (params) {
    963         params[0] = static_cast<GLfloat>(enable_flags.sample_coverage);
    964       }
    965       return true;
    966     case GL_SCISSOR_TEST:
    967       *num_written = 1;
    968       if (params) {
    969         params[0] = static_cast<GLfloat>(enable_flags.scissor_test);
    970       }
    971       return true;
    972     case GL_STENCIL_TEST:
    973       *num_written = 1;
    974       if (params) {
    975         params[0] = static_cast<GLfloat>(enable_flags.stencil_test);
    976       }
    977       return true;
    978     default:
    979       return false;
    980   }
    981 }
    982 #endif  // GPU_COMMAND_BUFFER_SERVICE_CONTEXT_STATE_IMPL_AUTOGEN_H_
    983