OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This file is auto-generated from | 5 // This file is auto-generated from |
6 // gpu/command_buffer/build_gles2_cmd_buffer.py | 6 // gpu/command_buffer/build_gles2_cmd_buffer.py |
7 // DO NOT EDIT! | 7 // DO NOT EDIT! |
8 | 8 |
9 // It is included by gles2_cmd_decoder.cc | 9 // It is included by gles2_cmd_decoder.cc |
10 #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ | 10 #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 return error::kNoError; | 87 return error::kNoError; |
88 } | 88 } |
89 | 89 |
90 error::Error GLES2DecoderImpl::HandleBlendEquation( | 90 error::Error GLES2DecoderImpl::HandleBlendEquation( |
91 uint32 immediate_data_size, const gles2::BlendEquation& c) { | 91 uint32 immediate_data_size, const gles2::BlendEquation& c) { |
92 GLenum mode = static_cast<GLenum>(c.mode); | 92 GLenum mode = static_cast<GLenum>(c.mode); |
93 if (!validators_->equation.IsValid(mode)) { | 93 if (!validators_->equation.IsValid(mode)) { |
94 SetGLErrorInvalidEnum("glBlendEquation", mode, "mode"); | 94 SetGLErrorInvalidEnum("glBlendEquation", mode, "mode"); |
95 return error::kNoError; | 95 return error::kNoError; |
96 } | 96 } |
97 DoBlendEquation(mode); | 97 state_.blend_equation_rgb = mode; |
| 98 state_.blend_equation_alpha = mode; |
| 99 glBlendEquation(mode); |
98 return error::kNoError; | 100 return error::kNoError; |
99 } | 101 } |
100 | 102 |
101 error::Error GLES2DecoderImpl::HandleBlendEquationSeparate( | 103 error::Error GLES2DecoderImpl::HandleBlendEquationSeparate( |
102 uint32 immediate_data_size, const gles2::BlendEquationSeparate& c) { | 104 uint32 immediate_data_size, const gles2::BlendEquationSeparate& c) { |
103 GLenum modeRGB = static_cast<GLenum>(c.modeRGB); | 105 GLenum modeRGB = static_cast<GLenum>(c.modeRGB); |
104 GLenum modeAlpha = static_cast<GLenum>(c.modeAlpha); | 106 GLenum modeAlpha = static_cast<GLenum>(c.modeAlpha); |
105 if (!validators_->equation.IsValid(modeRGB)) { | 107 if (!validators_->equation.IsValid(modeRGB)) { |
106 SetGLErrorInvalidEnum("glBlendEquationSeparate", modeRGB, "modeRGB"); | 108 SetGLErrorInvalidEnum("glBlendEquationSeparate", modeRGB, "modeRGB"); |
107 return error::kNoError; | 109 return error::kNoError; |
(...skipping 13 matching lines...) Expand all Loading... |
121 GLenum sfactor = static_cast<GLenum>(c.sfactor); | 123 GLenum sfactor = static_cast<GLenum>(c.sfactor); |
122 GLenum dfactor = static_cast<GLenum>(c.dfactor); | 124 GLenum dfactor = static_cast<GLenum>(c.dfactor); |
123 if (!validators_->src_blend_factor.IsValid(sfactor)) { | 125 if (!validators_->src_blend_factor.IsValid(sfactor)) { |
124 SetGLErrorInvalidEnum("glBlendFunc", sfactor, "sfactor"); | 126 SetGLErrorInvalidEnum("glBlendFunc", sfactor, "sfactor"); |
125 return error::kNoError; | 127 return error::kNoError; |
126 } | 128 } |
127 if (!validators_->dst_blend_factor.IsValid(dfactor)) { | 129 if (!validators_->dst_blend_factor.IsValid(dfactor)) { |
128 SetGLErrorInvalidEnum("glBlendFunc", dfactor, "dfactor"); | 130 SetGLErrorInvalidEnum("glBlendFunc", dfactor, "dfactor"); |
129 return error::kNoError; | 131 return error::kNoError; |
130 } | 132 } |
131 DoBlendFunc(sfactor, dfactor); | 133 state_.blend_source_rgb = sfactor; |
| 134 state_.blend_dest_rgb = dfactor; |
| 135 state_.blend_source_alpha = sfactor; |
| 136 state_.blend_dest_alpha = dfactor; |
| 137 glBlendFunc(sfactor, dfactor); |
132 return error::kNoError; | 138 return error::kNoError; |
133 } | 139 } |
134 | 140 |
135 error::Error GLES2DecoderImpl::HandleBlendFuncSeparate( | 141 error::Error GLES2DecoderImpl::HandleBlendFuncSeparate( |
136 uint32 immediate_data_size, const gles2::BlendFuncSeparate& c) { | 142 uint32 immediate_data_size, const gles2::BlendFuncSeparate& c) { |
137 GLenum srcRGB = static_cast<GLenum>(c.srcRGB); | 143 GLenum srcRGB = static_cast<GLenum>(c.srcRGB); |
138 GLenum dstRGB = static_cast<GLenum>(c.dstRGB); | 144 GLenum dstRGB = static_cast<GLenum>(c.dstRGB); |
139 GLenum srcAlpha = static_cast<GLenum>(c.srcAlpha); | 145 GLenum srcAlpha = static_cast<GLenum>(c.srcAlpha); |
140 GLenum dstAlpha = static_cast<GLenum>(c.dstAlpha); | 146 GLenum dstAlpha = static_cast<GLenum>(c.dstAlpha); |
141 if (!validators_->src_blend_factor.IsValid(srcRGB)) { | 147 if (!validators_->src_blend_factor.IsValid(srcRGB)) { |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 error::Error GLES2DecoderImpl::HandleColorMask( | 264 error::Error GLES2DecoderImpl::HandleColorMask( |
259 uint32 immediate_data_size, const gles2::ColorMask& c) { | 265 uint32 immediate_data_size, const gles2::ColorMask& c) { |
260 GLboolean red = static_cast<GLboolean>(c.red); | 266 GLboolean red = static_cast<GLboolean>(c.red); |
261 GLboolean green = static_cast<GLboolean>(c.green); | 267 GLboolean green = static_cast<GLboolean>(c.green); |
262 GLboolean blue = static_cast<GLboolean>(c.blue); | 268 GLboolean blue = static_cast<GLboolean>(c.blue); |
263 GLboolean alpha = static_cast<GLboolean>(c.alpha); | 269 GLboolean alpha = static_cast<GLboolean>(c.alpha); |
264 state_.color_mask_red = red; | 270 state_.color_mask_red = red; |
265 state_.color_mask_green = green; | 271 state_.color_mask_green = green; |
266 state_.color_mask_blue = blue; | 272 state_.color_mask_blue = blue; |
267 state_.color_mask_alpha = alpha; | 273 state_.color_mask_alpha = alpha; |
268 clear_state_dirty_ = true; | |
269 return error::kNoError; | 274 return error::kNoError; |
270 } | 275 } |
271 | 276 |
272 error::Error GLES2DecoderImpl::HandleCompileShader( | 277 error::Error GLES2DecoderImpl::HandleCompileShader( |
273 uint32 immediate_data_size, const gles2::CompileShader& c) { | 278 uint32 immediate_data_size, const gles2::CompileShader& c) { |
274 GLuint shader = c.shader; | 279 GLuint shader = c.shader; |
275 DoCompileShader(shader); | 280 DoCompileShader(shader); |
276 return error::kNoError; | 281 return error::kNoError; |
277 } | 282 } |
278 | 283 |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
593 } | 598 } |
594 state_.depth_func = func; | 599 state_.depth_func = func; |
595 glDepthFunc(func); | 600 glDepthFunc(func); |
596 return error::kNoError; | 601 return error::kNoError; |
597 } | 602 } |
598 | 603 |
599 error::Error GLES2DecoderImpl::HandleDepthMask( | 604 error::Error GLES2DecoderImpl::HandleDepthMask( |
600 uint32 immediate_data_size, const gles2::DepthMask& c) { | 605 uint32 immediate_data_size, const gles2::DepthMask& c) { |
601 GLboolean flag = static_cast<GLboolean>(c.flag); | 606 GLboolean flag = static_cast<GLboolean>(c.flag); |
602 state_.depth_mask = flag; | 607 state_.depth_mask = flag; |
603 clear_state_dirty_ = true; | |
604 return error::kNoError; | 608 return error::kNoError; |
605 } | 609 } |
606 | 610 |
607 error::Error GLES2DecoderImpl::HandleDepthRangef( | 611 error::Error GLES2DecoderImpl::HandleDepthRangef( |
608 uint32 immediate_data_size, const gles2::DepthRangef& c) { | 612 uint32 immediate_data_size, const gles2::DepthRangef& c) { |
609 GLclampf zNear = static_cast<GLclampf>(c.zNear); | 613 GLclampf zNear = static_cast<GLclampf>(c.zNear); |
610 GLclampf zFar = static_cast<GLclampf>(c.zFar); | 614 GLclampf zFar = static_cast<GLclampf>(c.zFar); |
611 DoDepthRangef(zNear, zFar); | 615 DoDepthRangef(zNear, zFar); |
612 return error::kNoError; | 616 return error::kNoError; |
613 } | 617 } |
(...skipping 893 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1507 | 1511 |
1508 error::Error GLES2DecoderImpl::HandleStencilFunc( | 1512 error::Error GLES2DecoderImpl::HandleStencilFunc( |
1509 uint32 immediate_data_size, const gles2::StencilFunc& c) { | 1513 uint32 immediate_data_size, const gles2::StencilFunc& c) { |
1510 GLenum func = static_cast<GLenum>(c.func); | 1514 GLenum func = static_cast<GLenum>(c.func); |
1511 GLint ref = static_cast<GLint>(c.ref); | 1515 GLint ref = static_cast<GLint>(c.ref); |
1512 GLuint mask = static_cast<GLuint>(c.mask); | 1516 GLuint mask = static_cast<GLuint>(c.mask); |
1513 if (!validators_->cmp_function.IsValid(func)) { | 1517 if (!validators_->cmp_function.IsValid(func)) { |
1514 SetGLErrorInvalidEnum("glStencilFunc", func, "func"); | 1518 SetGLErrorInvalidEnum("glStencilFunc", func, "func"); |
1515 return error::kNoError; | 1519 return error::kNoError; |
1516 } | 1520 } |
1517 DoStencilFunc(func, ref, mask); | 1521 glStencilFunc(func, ref, mask); |
1518 return error::kNoError; | 1522 return error::kNoError; |
1519 } | 1523 } |
1520 | 1524 |
1521 error::Error GLES2DecoderImpl::HandleStencilFuncSeparate( | 1525 error::Error GLES2DecoderImpl::HandleStencilFuncSeparate( |
1522 uint32 immediate_data_size, const gles2::StencilFuncSeparate& c) { | 1526 uint32 immediate_data_size, const gles2::StencilFuncSeparate& c) { |
1523 GLenum face = static_cast<GLenum>(c.face); | 1527 GLenum face = static_cast<GLenum>(c.face); |
1524 GLenum func = static_cast<GLenum>(c.func); | 1528 GLenum func = static_cast<GLenum>(c.func); |
1525 GLint ref = static_cast<GLint>(c.ref); | 1529 GLint ref = static_cast<GLint>(c.ref); |
1526 GLuint mask = static_cast<GLuint>(c.mask); | 1530 GLuint mask = static_cast<GLuint>(c.mask); |
1527 if (!validators_->face_type.IsValid(face)) { | 1531 if (!validators_->face_type.IsValid(face)) { |
1528 SetGLErrorInvalidEnum("glStencilFuncSeparate", face, "face"); | 1532 SetGLErrorInvalidEnum("glStencilFuncSeparate", face, "face"); |
1529 return error::kNoError; | 1533 return error::kNoError; |
1530 } | 1534 } |
1531 if (!validators_->cmp_function.IsValid(func)) { | 1535 if (!validators_->cmp_function.IsValid(func)) { |
1532 SetGLErrorInvalidEnum("glStencilFuncSeparate", func, "func"); | 1536 SetGLErrorInvalidEnum("glStencilFuncSeparate", func, "func"); |
1533 return error::kNoError; | 1537 return error::kNoError; |
1534 } | 1538 } |
1535 DoStencilFuncSeparate(face, func, ref, mask); | 1539 glStencilFuncSeparate(face, func, ref, mask); |
1536 return error::kNoError; | 1540 return error::kNoError; |
1537 } | 1541 } |
1538 | 1542 |
1539 error::Error GLES2DecoderImpl::HandleStencilMask( | 1543 error::Error GLES2DecoderImpl::HandleStencilMask( |
1540 uint32 immediate_data_size, const gles2::StencilMask& c) { | 1544 uint32 immediate_data_size, const gles2::StencilMask& c) { |
1541 GLuint mask = static_cast<GLuint>(c.mask); | 1545 GLuint mask = static_cast<GLuint>(c.mask); |
1542 DoStencilMask(mask); | 1546 state_.stencil_front_writemask = mask; |
| 1547 state_.stencil_back_writemask = mask; |
| 1548 clear_state_dirty_ = true; |
1543 return error::kNoError; | 1549 return error::kNoError; |
1544 } | 1550 } |
1545 | 1551 |
1546 error::Error GLES2DecoderImpl::HandleStencilMaskSeparate( | 1552 error::Error GLES2DecoderImpl::HandleStencilMaskSeparate( |
1547 uint32 immediate_data_size, const gles2::StencilMaskSeparate& c) { | 1553 uint32 immediate_data_size, const gles2::StencilMaskSeparate& c) { |
1548 GLenum face = static_cast<GLenum>(c.face); | 1554 GLenum face = static_cast<GLenum>(c.face); |
1549 GLuint mask = static_cast<GLuint>(c.mask); | 1555 GLuint mask = static_cast<GLuint>(c.mask); |
1550 if (!validators_->face_type.IsValid(face)) { | 1556 if (!validators_->face_type.IsValid(face)) { |
1551 SetGLErrorInvalidEnum("glStencilMaskSeparate", face, "face"); | 1557 SetGLErrorInvalidEnum("glStencilMaskSeparate", face, "face"); |
1552 return error::kNoError; | 1558 return error::kNoError; |
1553 } | 1559 } |
1554 DoStencilMaskSeparate(face, mask); | 1560 if (face == GL_FRONT || face == GL_FRONT_AND_BACK) { |
| 1561 state_.stencil_front_writemask = mask; |
| 1562 } |
| 1563 if (face == GL_BACK || face == GL_FRONT_AND_BACK) { |
| 1564 state_.stencil_back_writemask = mask; |
| 1565 } |
| 1566 clear_state_dirty_ = true; |
1555 return error::kNoError; | 1567 return error::kNoError; |
1556 } | 1568 } |
1557 | 1569 |
1558 error::Error GLES2DecoderImpl::HandleStencilOp( | 1570 error::Error GLES2DecoderImpl::HandleStencilOp( |
1559 uint32 immediate_data_size, const gles2::StencilOp& c) { | 1571 uint32 immediate_data_size, const gles2::StencilOp& c) { |
1560 GLenum fail = static_cast<GLenum>(c.fail); | 1572 GLenum fail = static_cast<GLenum>(c.fail); |
1561 GLenum zfail = static_cast<GLenum>(c.zfail); | 1573 GLenum zfail = static_cast<GLenum>(c.zfail); |
1562 GLenum zpass = static_cast<GLenum>(c.zpass); | 1574 GLenum zpass = static_cast<GLenum>(c.zpass); |
1563 if (!validators_->stencil_op.IsValid(fail)) { | 1575 if (!validators_->stencil_op.IsValid(fail)) { |
1564 SetGLErrorInvalidEnum("glStencilOp", fail, "fail"); | 1576 SetGLErrorInvalidEnum("glStencilOp", fail, "fail"); |
1565 return error::kNoError; | 1577 return error::kNoError; |
1566 } | 1578 } |
1567 if (!validators_->stencil_op.IsValid(zfail)) { | 1579 if (!validators_->stencil_op.IsValid(zfail)) { |
1568 SetGLErrorInvalidEnum("glStencilOp", zfail, "zfail"); | 1580 SetGLErrorInvalidEnum("glStencilOp", zfail, "zfail"); |
1569 return error::kNoError; | 1581 return error::kNoError; |
1570 } | 1582 } |
1571 if (!validators_->stencil_op.IsValid(zpass)) { | 1583 if (!validators_->stencil_op.IsValid(zpass)) { |
1572 SetGLErrorInvalidEnum("glStencilOp", zpass, "zpass"); | 1584 SetGLErrorInvalidEnum("glStencilOp", zpass, "zpass"); |
1573 return error::kNoError; | 1585 return error::kNoError; |
1574 } | 1586 } |
1575 DoStencilOp(fail, zfail, zpass); | 1587 state_.stencil_front_fail_op = fail; |
| 1588 state_.stencil_front_z_fail_op = zfail; |
| 1589 state_.stencil_front_z_pass_op = zpass; |
| 1590 state_.stencil_back_fail_op = fail; |
| 1591 state_.stencil_back_z_fail_op = zfail; |
| 1592 state_.stencil_back_z_pass_op = zpass; |
| 1593 glStencilOp(fail, zfail, zpass); |
1576 return error::kNoError; | 1594 return error::kNoError; |
1577 } | 1595 } |
1578 | 1596 |
1579 error::Error GLES2DecoderImpl::HandleStencilOpSeparate( | 1597 error::Error GLES2DecoderImpl::HandleStencilOpSeparate( |
1580 uint32 immediate_data_size, const gles2::StencilOpSeparate& c) { | 1598 uint32 immediate_data_size, const gles2::StencilOpSeparate& c) { |
1581 GLenum face = static_cast<GLenum>(c.face); | 1599 GLenum face = static_cast<GLenum>(c.face); |
1582 GLenum fail = static_cast<GLenum>(c.fail); | 1600 GLenum fail = static_cast<GLenum>(c.fail); |
1583 GLenum zfail = static_cast<GLenum>(c.zfail); | 1601 GLenum zfail = static_cast<GLenum>(c.zfail); |
1584 GLenum zpass = static_cast<GLenum>(c.zpass); | 1602 GLenum zpass = static_cast<GLenum>(c.zpass); |
1585 if (!validators_->face_type.IsValid(face)) { | 1603 if (!validators_->face_type.IsValid(face)) { |
1586 SetGLErrorInvalidEnum("glStencilOpSeparate", face, "face"); | 1604 SetGLErrorInvalidEnum("glStencilOpSeparate", face, "face"); |
1587 return error::kNoError; | 1605 return error::kNoError; |
1588 } | 1606 } |
1589 if (!validators_->stencil_op.IsValid(fail)) { | 1607 if (!validators_->stencil_op.IsValid(fail)) { |
1590 SetGLErrorInvalidEnum("glStencilOpSeparate", fail, "fail"); | 1608 SetGLErrorInvalidEnum("glStencilOpSeparate", fail, "fail"); |
1591 return error::kNoError; | 1609 return error::kNoError; |
1592 } | 1610 } |
1593 if (!validators_->stencil_op.IsValid(zfail)) { | 1611 if (!validators_->stencil_op.IsValid(zfail)) { |
1594 SetGLErrorInvalidEnum("glStencilOpSeparate", zfail, "zfail"); | 1612 SetGLErrorInvalidEnum("glStencilOpSeparate", zfail, "zfail"); |
1595 return error::kNoError; | 1613 return error::kNoError; |
1596 } | 1614 } |
1597 if (!validators_->stencil_op.IsValid(zpass)) { | 1615 if (!validators_->stencil_op.IsValid(zpass)) { |
1598 SetGLErrorInvalidEnum("glStencilOpSeparate", zpass, "zpass"); | 1616 SetGLErrorInvalidEnum("glStencilOpSeparate", zpass, "zpass"); |
1599 return error::kNoError; | 1617 return error::kNoError; |
1600 } | 1618 } |
1601 DoStencilOpSeparate(face, fail, zfail, zpass); | 1619 if (face == GL_FRONT || face == GL_FRONT_AND_BACK) { |
| 1620 state_.stencil_front_fail_op = fail; |
| 1621 state_.stencil_front_z_fail_op = zfail; |
| 1622 state_.stencil_front_z_pass_op = zpass; |
| 1623 } |
| 1624 if (face == GL_BACK || face == GL_FRONT_AND_BACK) { |
| 1625 state_.stencil_back_fail_op = fail; |
| 1626 state_.stencil_back_z_fail_op = zfail; |
| 1627 state_.stencil_back_z_pass_op = zpass; |
| 1628 } |
| 1629 glStencilOpSeparate(face, fail, zfail, zpass); |
1602 return error::kNoError; | 1630 return error::kNoError; |
1603 } | 1631 } |
1604 | 1632 |
1605 error::Error GLES2DecoderImpl::HandleTexParameterf( | 1633 error::Error GLES2DecoderImpl::HandleTexParameterf( |
1606 uint32 immediate_data_size, const gles2::TexParameterf& c) { | 1634 uint32 immediate_data_size, const gles2::TexParameterf& c) { |
1607 GLenum target = static_cast<GLenum>(c.target); | 1635 GLenum target = static_cast<GLenum>(c.target); |
1608 GLenum pname = static_cast<GLenum>(c.pname); | 1636 GLenum pname = static_cast<GLenum>(c.pname); |
1609 GLfloat param = static_cast<GLfloat>(c.param); | 1637 GLfloat param = static_cast<GLfloat>(c.param); |
1610 if (!validators_->texture_bind_target.IsValid(target)) { | 1638 if (!validators_->texture_bind_target.IsValid(target)) { |
1611 SetGLErrorInvalidEnum("glTexParameterf", target, "target"); | 1639 SetGLErrorInvalidEnum("glTexParameterf", target, "target"); |
(...skipping 1319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2931 GLenum target = static_cast<GLenum>(c.target); | 2959 GLenum target = static_cast<GLenum>(c.target); |
2932 GLint imageId = static_cast<GLint>(c.imageId); | 2960 GLint imageId = static_cast<GLint>(c.imageId); |
2933 if (!validators_->texture_bind_target.IsValid(target)) { | 2961 if (!validators_->texture_bind_target.IsValid(target)) { |
2934 SetGLErrorInvalidEnum("glReleaseTexImage2DCHROMIUM", target, "target"); | 2962 SetGLErrorInvalidEnum("glReleaseTexImage2DCHROMIUM", target, "target"); |
2935 return error::kNoError; | 2963 return error::kNoError; |
2936 } | 2964 } |
2937 DoReleaseTexImage2DCHROMIUM(target, imageId); | 2965 DoReleaseTexImage2DCHROMIUM(target, imageId); |
2938 return error::kNoError; | 2966 return error::kNoError; |
2939 } | 2967 } |
2940 | 2968 |
| 2969 |
| 2970 bool GLES2DecoderImpl::SetCapabilityState(GLenum cap, bool enabled) { |
| 2971 switch (cap) { |
| 2972 case GL_BLEND: |
| 2973 state_.enable_flags.blend = enabled; |
| 2974 return true; |
| 2975 case GL_CULL_FACE: |
| 2976 state_.enable_flags.cull_face = enabled; |
| 2977 return true; |
| 2978 case GL_DEPTH_TEST: |
| 2979 if (state_.enable_flags.depth_test != enabled) { |
| 2980 state_.enable_flags.depth_test = enabled; |
| 2981 clear_state_dirty_ = true; |
| 2982 } |
| 2983 return false; |
| 2984 case GL_DITHER: |
| 2985 state_.enable_flags.dither = enabled; |
| 2986 return true; |
| 2987 case GL_POLYGON_OFFSET_FILL: |
| 2988 state_.enable_flags.polygon_offset_fill = enabled; |
| 2989 return true; |
| 2990 case GL_SAMPLE_ALPHA_TO_COVERAGE: |
| 2991 state_.enable_flags.sample_alpha_to_coverage = enabled; |
| 2992 return true; |
| 2993 case GL_SAMPLE_COVERAGE: |
| 2994 state_.enable_flags.sample_coverage = enabled; |
| 2995 return true; |
| 2996 case GL_SCISSOR_TEST: |
| 2997 state_.enable_flags.scissor_test = enabled; |
| 2998 return true; |
| 2999 case GL_STENCIL_TEST: |
| 3000 if (state_.enable_flags.stencil_test != enabled) { |
| 3001 state_.enable_flags.stencil_test = enabled; |
| 3002 clear_state_dirty_ = true; |
| 3003 } |
| 3004 return false; |
| 3005 default: |
| 3006 NOTREACHED(); |
| 3007 return false; |
| 3008 } |
| 3009 } |
| 3010 |
| 3011 bool GLES2DecoderImpl::DoIsEnabled(GLenum cap) { |
| 3012 switch (cap) { |
| 3013 case GL_BLEND: |
| 3014 return state_.enable_flags.blend; |
| 3015 case GL_CULL_FACE: |
| 3016 return state_.enable_flags.cull_face; |
| 3017 case GL_DEPTH_TEST: |
| 3018 return state_.enable_flags.depth_test; |
| 3019 case GL_DITHER: |
| 3020 return state_.enable_flags.dither; |
| 3021 case GL_POLYGON_OFFSET_FILL: |
| 3022 return state_.enable_flags.polygon_offset_fill; |
| 3023 case GL_SAMPLE_ALPHA_TO_COVERAGE: |
| 3024 return state_.enable_flags.sample_alpha_to_coverage; |
| 3025 case GL_SAMPLE_COVERAGE: |
| 3026 return state_.enable_flags.sample_coverage; |
| 3027 case GL_SCISSOR_TEST: |
| 3028 return state_.enable_flags.scissor_test; |
| 3029 case GL_STENCIL_TEST: |
| 3030 return state_.enable_flags.stencil_test; |
| 3031 default: |
| 3032 NOTREACHED(); |
| 3033 return false; |
| 3034 } |
| 3035 } |
| 3036 |
| 3037 bool GLES2DecoderImpl::GetState( |
| 3038 GLenum pname, GLint* params, GLsizei* num_written) { |
| 3039 switch (pname) { |
| 3040 case GL_VIEWPORT: |
| 3041 *num_written = 4; |
| 3042 if (params) { |
| 3043 params[0] = state_.viewport_x; |
| 3044 params[1] = state_.viewport_y; |
| 3045 params[2] = state_.viewport_width; |
| 3046 params[3] = state_.viewport_height; |
| 3047 } |
| 3048 return true; |
| 3049 case GL_BLEND_SRC_RGB: |
| 3050 *num_written = 1; |
| 3051 if (params) { |
| 3052 params[0] = state_.blend_source_rgb; |
| 3053 } |
| 3054 return true; |
| 3055 case GL_BLEND_DST_RGB: |
| 3056 *num_written = 1; |
| 3057 if (params) { |
| 3058 params[0] = state_.blend_dest_rgb; |
| 3059 } |
| 3060 return true; |
| 3061 case GL_BLEND_SRC_ALPHA: |
| 3062 *num_written = 1; |
| 3063 if (params) { |
| 3064 params[0] = state_.blend_source_alpha; |
| 3065 } |
| 3066 return true; |
| 3067 case GL_BLEND_DST_ALPHA: |
| 3068 *num_written = 1; |
| 3069 if (params) { |
| 3070 params[0] = state_.blend_dest_alpha; |
| 3071 } |
| 3072 return true; |
| 3073 case GL_LINE_WIDTH: |
| 3074 *num_written = 1; |
| 3075 if (params) { |
| 3076 params[0] = state_.line_width; |
| 3077 } |
| 3078 return true; |
| 3079 case GL_BLEND_COLOR: |
| 3080 *num_written = 4; |
| 3081 if (params) { |
| 3082 params[0] = state_.blend_color_red; |
| 3083 params[1] = state_.blend_color_green; |
| 3084 params[2] = state_.blend_color_blue; |
| 3085 params[3] = state_.blend_color_alpha; |
| 3086 } |
| 3087 return true; |
| 3088 case GL_STENCIL_CLEAR_VALUE: |
| 3089 *num_written = 1; |
| 3090 if (params) { |
| 3091 params[0] = state_.stencil_clear; |
| 3092 } |
| 3093 return true; |
| 3094 case GL_COLOR_WRITEMASK: |
| 3095 *num_written = 4; |
| 3096 if (params) { |
| 3097 params[0] = state_.color_mask_red; |
| 3098 params[1] = state_.color_mask_green; |
| 3099 params[2] = state_.color_mask_blue; |
| 3100 params[3] = state_.color_mask_alpha; |
| 3101 } |
| 3102 return true; |
| 3103 case GL_COLOR_CLEAR_VALUE: |
| 3104 *num_written = 4; |
| 3105 if (params) { |
| 3106 params[0] = state_.color_clear_red; |
| 3107 params[1] = state_.color_clear_green; |
| 3108 params[2] = state_.color_clear_blue; |
| 3109 params[3] = state_.color_clear_alpha; |
| 3110 } |
| 3111 return true; |
| 3112 case GL_DEPTH_RANGE: |
| 3113 *num_written = 2; |
| 3114 if (params) { |
| 3115 params[0] = state_.z_near; |
| 3116 params[1] = state_.z_far; |
| 3117 } |
| 3118 return true; |
| 3119 case GL_DEPTH_CLEAR_VALUE: |
| 3120 *num_written = 1; |
| 3121 if (params) { |
| 3122 params[0] = state_.depth_clear; |
| 3123 } |
| 3124 return true; |
| 3125 case GL_STENCIL_FAIL: |
| 3126 *num_written = 1; |
| 3127 if (params) { |
| 3128 params[0] = state_.stencil_front_fail_op; |
| 3129 } |
| 3130 return true; |
| 3131 case GL_STENCIL_PASS_DEPTH_FAIL: |
| 3132 *num_written = 1; |
| 3133 if (params) { |
| 3134 params[0] = state_.stencil_front_z_fail_op; |
| 3135 } |
| 3136 return true; |
| 3137 case GL_STENCIL_PASS_DEPTH_PASS: |
| 3138 *num_written = 1; |
| 3139 if (params) { |
| 3140 params[0] = state_.stencil_front_z_pass_op; |
| 3141 } |
| 3142 return true; |
| 3143 case GL_STENCIL_BACK_FAIL: |
| 3144 *num_written = 1; |
| 3145 if (params) { |
| 3146 params[0] = state_.stencil_back_fail_op; |
| 3147 } |
| 3148 return true; |
| 3149 case GL_STENCIL_BACK_PASS_DEPTH_FAIL: |
| 3150 *num_written = 1; |
| 3151 if (params) { |
| 3152 params[0] = state_.stencil_back_z_fail_op; |
| 3153 } |
| 3154 return true; |
| 3155 case GL_STENCIL_BACK_PASS_DEPTH_PASS: |
| 3156 *num_written = 1; |
| 3157 if (params) { |
| 3158 params[0] = state_.stencil_back_z_pass_op; |
| 3159 } |
| 3160 return true; |
| 3161 case GL_SCISSOR_BOX: |
| 3162 *num_written = 4; |
| 3163 if (params) { |
| 3164 params[0] = state_.scissor_x; |
| 3165 params[1] = state_.scissor_y; |
| 3166 params[2] = state_.scissor_width; |
| 3167 params[3] = state_.scissor_height; |
| 3168 } |
| 3169 return true; |
| 3170 case GL_FRONT_FACE: |
| 3171 *num_written = 1; |
| 3172 if (params) { |
| 3173 params[0] = state_.front_face; |
| 3174 } |
| 3175 return true; |
| 3176 case GL_SAMPLE_COVERAGE_VALUE: |
| 3177 *num_written = 1; |
| 3178 if (params) { |
| 3179 params[0] = state_.sample_coverage_value; |
| 3180 } |
| 3181 return true; |
| 3182 case GL_SAMPLE_COVERAGE_INVERT: |
| 3183 *num_written = 1; |
| 3184 if (params) { |
| 3185 params[0] = state_.sample_coverage_invert; |
| 3186 } |
| 3187 return true; |
| 3188 case GL_POLYGON_OFFSET_FACTOR: |
| 3189 *num_written = 1; |
| 3190 if (params) { |
| 3191 params[0] = state_.polygon_offset_factor; |
| 3192 } |
| 3193 return true; |
| 3194 case GL_POLYGON_OFFSET_UNITS: |
| 3195 *num_written = 1; |
| 3196 if (params) { |
| 3197 params[0] = state_.polygon_offset_units; |
| 3198 } |
| 3199 return true; |
| 3200 case GL_CULL_FACE_MODE: |
| 3201 *num_written = 1; |
| 3202 if (params) { |
| 3203 params[0] = state_.cull_mode; |
| 3204 } |
| 3205 return true; |
| 3206 case GL_DEPTH_FUNC: |
| 3207 *num_written = 1; |
| 3208 if (params) { |
| 3209 params[0] = state_.depth_func; |
| 3210 } |
| 3211 return true; |
| 3212 case GL_STENCIL_FUNC: |
| 3213 *num_written = 1; |
| 3214 if (params) { |
| 3215 params[0] = state_.stencil_front_func; |
| 3216 } |
| 3217 return true; |
| 3218 case GL_STENCIL_REF: |
| 3219 *num_written = 1; |
| 3220 if (params) { |
| 3221 params[0] = state_.stencil_front_ref; |
| 3222 } |
| 3223 return true; |
| 3224 case GL_STENCIL_VALUE_MASK: |
| 3225 *num_written = 1; |
| 3226 if (params) { |
| 3227 params[0] = state_.stencil_front_mask; |
| 3228 } |
| 3229 return true; |
| 3230 case GL_STENCIL_BACK_FUNC: |
| 3231 *num_written = 1; |
| 3232 if (params) { |
| 3233 params[0] = state_.stencil_back_func; |
| 3234 } |
| 3235 return true; |
| 3236 case GL_STENCIL_BACK_REF: |
| 3237 *num_written = 1; |
| 3238 if (params) { |
| 3239 params[0] = state_.stencil_back_ref; |
| 3240 } |
| 3241 return true; |
| 3242 case GL_STENCIL_BACK_VALUE_MASK: |
| 3243 *num_written = 1; |
| 3244 if (params) { |
| 3245 params[0] = state_.stencil_back_mask; |
| 3246 } |
| 3247 return true; |
| 3248 case GL_DEPTH_WRITEMASK: |
| 3249 *num_written = 1; |
| 3250 if (params) { |
| 3251 params[0] = state_.depth_mask; |
| 3252 } |
| 3253 return true; |
| 3254 case GL_BLEND_EQUATION_RGB: |
| 3255 *num_written = 1; |
| 3256 if (params) { |
| 3257 params[0] = state_.blend_equation_rgb; |
| 3258 } |
| 3259 return true; |
| 3260 case GL_BLEND_EQUATION_ALPHA: |
| 3261 *num_written = 1; |
| 3262 if (params) { |
| 3263 params[0] = state_.blend_equation_alpha; |
| 3264 } |
| 3265 return true; |
| 3266 case GL_STENCIL_WRITEMASK: |
| 3267 *num_written = 1; |
| 3268 if (params) { |
| 3269 params[0] = state_.stencil_front_writemask; |
| 3270 } |
| 3271 return true; |
| 3272 case GL_STENCIL_BACK_WRITEMASK: |
| 3273 *num_written = 1; |
| 3274 if (params) { |
| 3275 params[0] = state_.stencil_back_writemask; |
| 3276 } |
| 3277 return true; |
| 3278 case GL_BLEND: |
| 3279 *num_written = 1; |
| 3280 if (params) { |
| 3281 params[0] = state_.enable_flags.blend; |
| 3282 } |
| 3283 return true; |
| 3284 case GL_CULL_FACE: |
| 3285 *num_written = 1; |
| 3286 if (params) { |
| 3287 params[0] = state_.enable_flags.cull_face; |
| 3288 } |
| 3289 return true; |
| 3290 case GL_DEPTH_TEST: |
| 3291 *num_written = 1; |
| 3292 if (params) { |
| 3293 params[0] = state_.enable_flags.depth_test; |
| 3294 } |
| 3295 return true; |
| 3296 case GL_DITHER: |
| 3297 *num_written = 1; |
| 3298 if (params) { |
| 3299 params[0] = state_.enable_flags.dither; |
| 3300 } |
| 3301 return true; |
| 3302 case GL_POLYGON_OFFSET_FILL: |
| 3303 *num_written = 1; |
| 3304 if (params) { |
| 3305 params[0] = state_.enable_flags.polygon_offset_fill; |
| 3306 } |
| 3307 return true; |
| 3308 case GL_SAMPLE_ALPHA_TO_COVERAGE: |
| 3309 *num_written = 1; |
| 3310 if (params) { |
| 3311 params[0] = state_.enable_flags.sample_alpha_to_coverage; |
| 3312 } |
| 3313 return true; |
| 3314 case GL_SAMPLE_COVERAGE: |
| 3315 *num_written = 1; |
| 3316 if (params) { |
| 3317 params[0] = state_.enable_flags.sample_coverage; |
| 3318 } |
| 3319 return true; |
| 3320 case GL_SCISSOR_TEST: |
| 3321 *num_written = 1; |
| 3322 if (params) { |
| 3323 params[0] = state_.enable_flags.scissor_test; |
| 3324 } |
| 3325 return true; |
| 3326 case GL_STENCIL_TEST: |
| 3327 *num_written = 1; |
| 3328 if (params) { |
| 3329 params[0] = state_.enable_flags.stencil_test; |
| 3330 } |
| 3331 return true; |
| 3332 default: |
| 3333 return false; |
| 3334 } |
| 3335 } |
2941 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ | 3336 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ |
2942 | 3337 |
OLD | NEW |