| #!/usr/bin/env python |
| # Copyright (c) 2012 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. |
| |
| """code generator for GLES2 command buffers.""" |
| |
| import itertools |
| import os |
| import os.path |
| import sys |
| import re |
| import platform |
| from optparse import OptionParser |
| from subprocess import call |
| |
| _SIZE_OF_UINT32 = 4 |
| _SIZE_OF_COMMAND_HEADER = 4 |
| _FIRST_SPECIFIC_COMMAND_ID = 256 |
| |
| _LICENSE = """// 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. |
| |
| """ |
| |
| _DO_NOT_EDIT_WARNING = """// 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! |
| |
| """ |
| |
| # This string is copied directly out of the gl2.h file from GLES2.0 |
| # |
| # Edits: |
| # |
| # *) Any argument that is a resourceID has been changed to GLid<Type>. |
| # (not pointer arguments) and if it's allowed to be zero it's GLidZero<Type> |
| # If it's allowed to not exist it's GLidBind<Type> |
| # |
| # *) All GLenums have been changed to GLenumTypeOfEnum |
| # |
| _GL_TYPES = { |
| 'GLenum': 'unsigned int', |
| 'GLboolean': 'unsigned char', |
| 'GLbitfield': 'unsigned int', |
| 'GLbyte': 'signed char', |
| 'GLshort': 'short', |
| 'GLint': 'int', |
| 'GLsizei': 'int', |
| 'GLubyte': 'unsigned char', |
| 'GLushort': 'unsigned short', |
| 'GLuint': 'unsigned int', |
| 'GLfloat': 'float', |
| 'GLclampf': 'float', |
| 'GLvoid': 'void', |
| 'GLfixed': 'int', |
| 'GLclampx': 'int' |
| } |
| |
| _GL_TYPES_32 = { |
| 'GLintptr': 'long int', |
| 'GLsizeiptr': 'long int' |
| } |
| |
| _GL_TYPES_64 = { |
| 'GLintptr': 'long long int', |
| 'GLsizeiptr': 'long long int' |
| } |
| |
| # Capabilites selected with glEnable |
| _CAPABILITY_FLAGS = [ |
| {'name': 'blend'}, |
| {'name': 'cull_face'}, |
| {'name': 'depth_test', 'state_flag': 'framebuffer_state_.clear_state_dirty'}, |
| {'name': 'dither', 'default': True}, |
| {'name': 'polygon_offset_fill'}, |
| {'name': 'sample_alpha_to_coverage'}, |
| {'name': 'sample_coverage'}, |
| {'name': 'scissor_test'}, |
| {'name': 'stencil_test', |
| 'state_flag': 'framebuffer_state_.clear_state_dirty'}, |
| {'name': 'rasterizer_discard', 'es3': True}, |
| ] |
| |
| _STATES = { |
| 'ClearColor': { |
| 'type': 'Normal', |
| 'func': 'ClearColor', |
| 'enum': 'GL_COLOR_CLEAR_VALUE', |
| 'states': [ |
| {'name': 'color_clear_red', 'type': 'GLfloat', 'default': '0.0f'}, |
| {'name': 'color_clear_green', 'type': 'GLfloat', 'default': '0.0f'}, |
| {'name': 'color_clear_blue', 'type': 'GLfloat', 'default': '0.0f'}, |
| {'name': 'color_clear_alpha', 'type': 'GLfloat', 'default': '0.0f'}, |
| ], |
| }, |
| 'ClearDepthf': { |
| 'type': 'Normal', |
| 'func': 'ClearDepth', |
| 'enum': 'GL_DEPTH_CLEAR_VALUE', |
| 'states': [ |
| {'name': 'depth_clear', 'type': 'GLclampf', 'default': '1.0f'}, |
| ], |
| }, |
| 'ColorMask': { |
| 'type': 'Normal', |
| 'func': 'ColorMask', |
| 'enum': 'GL_COLOR_WRITEMASK', |
| 'states': [ |
| { |
| 'name': 'color_mask_red', |
| 'type': 'GLboolean', |
| 'default': 'true', |
| 'cached': True |
| }, |
| { |
| 'name': 'color_mask_green', |
| 'type': 'GLboolean', |
| 'default': 'true', |
| 'cached': True |
| }, |
| { |
| 'name': 'color_mask_blue', |
| 'type': 'GLboolean', |
| 'default': 'true', |
| 'cached': True |
| }, |
| { |
| 'name': 'color_mask_alpha', |
| 'type': 'GLboolean', |
| 'default': 'true', |
| 'cached': True |
| }, |
| ], |
| 'state_flag': 'framebuffer_state_.clear_state_dirty', |
| }, |
| 'ClearStencil': { |
| 'type': 'Normal', |
| 'func': 'ClearStencil', |
| 'enum': 'GL_STENCIL_CLEAR_VALUE', |
| 'states': [ |
| {'name': 'stencil_clear', 'type': 'GLint', 'default': '0'}, |
| ], |
| }, |
| 'BlendColor': { |
| 'type': 'Normal', |
| 'func': 'BlendColor', |
| 'enum': 'GL_BLEND_COLOR', |
| 'states': [ |
| {'name': 'blend_color_red', 'type': 'GLfloat', 'default': '0.0f'}, |
| {'name': 'blend_color_green', 'type': 'GLfloat', 'default': '0.0f'}, |
| {'name': 'blend_color_blue', 'type': 'GLfloat', 'default': '0.0f'}, |
| {'name': 'blend_color_alpha', 'type': 'GLfloat', 'default': '0.0f'}, |
| ], |
| }, |
| 'BlendEquation': { |
| 'type': 'SrcDst', |
| 'func': 'BlendEquationSeparate', |
| 'states': [ |
| { |
| 'name': 'blend_equation_rgb', |
| 'type': 'GLenum', |
| 'enum': 'GL_BLEND_EQUATION_RGB', |
| 'default': 'GL_FUNC_ADD', |
| }, |
| { |
| 'name': 'blend_equation_alpha', |
| 'type': 'GLenum', |
| 'enum': 'GL_BLEND_EQUATION_ALPHA', |
| 'default': 'GL_FUNC_ADD', |
| }, |
| ], |
| }, |
| 'BlendFunc': { |
| 'type': 'SrcDst', |
| 'func': 'BlendFuncSeparate', |
| 'states': [ |
| { |
| 'name': 'blend_source_rgb', |
| 'type': 'GLenum', |
| 'enum': 'GL_BLEND_SRC_RGB', |
| 'default': 'GL_ONE', |
| }, |
| { |
| 'name': 'blend_dest_rgb', |
| 'type': 'GLenum', |
| 'enum': 'GL_BLEND_DST_RGB', |
| 'default': 'GL_ZERO', |
| }, |
| { |
| 'name': 'blend_source_alpha', |
| 'type': 'GLenum', |
| 'enum': 'GL_BLEND_SRC_ALPHA', |
| 'default': 'GL_ONE', |
| }, |
| { |
| 'name': 'blend_dest_alpha', |
| 'type': 'GLenum', |
| 'enum': 'GL_BLEND_DST_ALPHA', |
| 'default': 'GL_ZERO', |
| }, |
| ], |
| }, |
| 'PolygonOffset': { |
| 'type': 'Normal', |
| 'func': 'PolygonOffset', |
| 'states': [ |
| { |
| 'name': 'polygon_offset_factor', |
| 'type': 'GLfloat', |
| 'enum': 'GL_POLYGON_OFFSET_FACTOR', |
| 'default': '0.0f', |
| }, |
| { |
| 'name': 'polygon_offset_units', |
| 'type': 'GLfloat', |
| 'enum': 'GL_POLYGON_OFFSET_UNITS', |
| 'default': '0.0f', |
| }, |
| ], |
| }, |
| 'CullFace': { |
| 'type': 'Normal', |
| 'func': 'CullFace', |
| 'enum': 'GL_CULL_FACE_MODE', |
| 'states': [ |
| { |
| 'name': 'cull_mode', |
| 'type': 'GLenum', |
| 'default': 'GL_BACK', |
| }, |
| ], |
| }, |
| 'FrontFace': { |
| 'type': 'Normal', |
| 'func': 'FrontFace', |
| 'enum': 'GL_FRONT_FACE', |
| 'states': [{'name': 'front_face', 'type': 'GLenum', 'default': 'GL_CCW'}], |
| }, |
| 'DepthFunc': { |
| 'type': 'Normal', |
| 'func': 'DepthFunc', |
| 'enum': 'GL_DEPTH_FUNC', |
| 'states': [{'name': 'depth_func', 'type': 'GLenum', 'default': 'GL_LESS'}], |
| }, |
| 'DepthRange': { |
| 'type': 'Normal', |
| 'func': 'DepthRange', |
| 'enum': 'GL_DEPTH_RANGE', |
| 'states': [ |
| {'name': 'z_near', 'type': 'GLclampf', 'default': '0.0f'}, |
| {'name': 'z_far', 'type': 'GLclampf', 'default': '1.0f'}, |
| ], |
| }, |
| 'SampleCoverage': { |
| 'type': 'Normal', |
| 'func': 'SampleCoverage', |
| 'states': [ |
| { |
| 'name': 'sample_coverage_value', |
| 'type': 'GLclampf', |
| 'enum': 'GL_SAMPLE_COVERAGE_VALUE', |
| 'default': '1.0f', |
| }, |
| { |
| 'name': 'sample_coverage_invert', |
| 'type': 'GLboolean', |
| 'enum': 'GL_SAMPLE_COVERAGE_INVERT', |
| 'default': 'false', |
| }, |
| ], |
| }, |
| 'StencilMask': { |
| 'type': 'FrontBack', |
| 'func': 'StencilMaskSeparate', |
| 'state_flag': 'framebuffer_state_.clear_state_dirty', |
| 'states': [ |
| { |
| 'name': 'stencil_front_writemask', |
| 'type': 'GLuint', |
| 'enum': 'GL_STENCIL_WRITEMASK', |
| 'default': '0xFFFFFFFFU', |
| 'cached': True, |
| }, |
| { |
| 'name': 'stencil_back_writemask', |
| 'type': 'GLuint', |
| 'enum': 'GL_STENCIL_BACK_WRITEMASK', |
| 'default': '0xFFFFFFFFU', |
| 'cached': True, |
| }, |
| ], |
| }, |
| 'StencilOp': { |
| 'type': 'FrontBack', |
| 'func': 'StencilOpSeparate', |
| 'states': [ |
| { |
| 'name': 'stencil_front_fail_op', |
| 'type': 'GLenum', |
| 'enum': 'GL_STENCIL_FAIL', |
| 'default': 'GL_KEEP', |
| }, |
| { |
| 'name': 'stencil_front_z_fail_op', |
| 'type': 'GLenum', |
| 'enum': 'GL_STENCIL_PASS_DEPTH_FAIL', |
| 'default': 'GL_KEEP', |
| }, |
| { |
| 'name': 'stencil_front_z_pass_op', |
| 'type': 'GLenum', |
| 'enum': 'GL_STENCIL_PASS_DEPTH_PASS', |
| 'default': 'GL_KEEP', |
| }, |
| { |
| 'name': 'stencil_back_fail_op', |
| 'type': 'GLenum', |
| 'enum': 'GL_STENCIL_BACK_FAIL', |
| 'default': 'GL_KEEP', |
| }, |
| { |
| 'name': 'stencil_back_z_fail_op', |
| 'type': 'GLenum', |
| 'enum': 'GL_STENCIL_BACK_PASS_DEPTH_FAIL', |
| 'default': 'GL_KEEP', |
| }, |
| { |
| 'name': 'stencil_back_z_pass_op', |
| 'type': 'GLenum', |
| 'enum': 'GL_STENCIL_BACK_PASS_DEPTH_PASS', |
| 'default': 'GL_KEEP', |
| }, |
| ], |
| }, |
| 'StencilFunc': { |
| 'type': 'FrontBack', |
| 'func': 'StencilFuncSeparate', |
| 'states': [ |
| { |
| 'name': 'stencil_front_func', |
| 'type': 'GLenum', |
| 'enum': 'GL_STENCIL_FUNC', |
| 'default': 'GL_ALWAYS', |
| }, |
| { |
| 'name': 'stencil_front_ref', |
| 'type': 'GLint', |
| 'enum': 'GL_STENCIL_REF', |
| 'default': '0', |
| }, |
| { |
| 'name': 'stencil_front_mask', |
| 'type': 'GLuint', |
| 'enum': 'GL_STENCIL_VALUE_MASK', |
| 'default': '0xFFFFFFFFU', |
| }, |
| { |
| 'name': 'stencil_back_func', |
| 'type': 'GLenum', |
| 'enum': 'GL_STENCIL_BACK_FUNC', |
| 'default': 'GL_ALWAYS', |
| }, |
| { |
| 'name': 'stencil_back_ref', |
| 'type': 'GLint', |
| 'enum': 'GL_STENCIL_BACK_REF', |
| 'default': '0', |
| }, |
| { |
| 'name': 'stencil_back_mask', |
| 'type': 'GLuint', |
| 'enum': 'GL_STENCIL_BACK_VALUE_MASK', |
| 'default': '0xFFFFFFFFU', |
| }, |
| ], |
| }, |
| 'Hint': { |
| 'type': 'NamedParameter', |
| 'func': 'Hint', |
| 'states': [ |
| { |
| 'name': 'hint_generate_mipmap', |
| 'type': 'GLenum', |
| 'enum': 'GL_GENERATE_MIPMAP_HINT', |
| 'default': 'GL_DONT_CARE' |
| }, |
| { |
| 'name': 'hint_fragment_shader_derivative', |
| 'type': 'GLenum', |
| 'enum': 'GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES', |
| 'default': 'GL_DONT_CARE', |
| 'extension_flag': 'oes_standard_derivatives' |
| } |
| ], |
| }, |
| 'PixelStore': { |
| 'type': 'NamedParameter', |
| 'func': 'PixelStorei', |
| 'states': [ |
| { |
| 'name': 'pack_alignment', |
| 'type': 'GLint', |
| 'enum': 'GL_PACK_ALIGNMENT', |
| 'default': '4' |
| }, |
| { |
| 'name': 'unpack_alignment', |
| 'type': 'GLint', |
| 'enum': 'GL_UNPACK_ALIGNMENT', |
| 'default': '4' |
| } |
| ], |
| }, |
| # TODO: Consider implemenenting these states |
| # GL_ACTIVE_TEXTURE |
| 'LineWidth': { |
| 'type': 'Normal', |
| 'func': 'LineWidth', |
| 'enum': 'GL_LINE_WIDTH', |
| 'states': [ |
| { |
| 'name': 'line_width', |
| 'type': 'GLfloat', |
| 'default': '1.0f', |
| 'range_checks': [{'check': "<= 0.0f", 'test_value': "0.0f"}], |
| 'nan_check': True, |
| }], |
| }, |
| 'DepthMask': { |
| 'type': 'Normal', |
| 'func': 'DepthMask', |
| 'enum': 'GL_DEPTH_WRITEMASK', |
| 'states': [ |
| { |
| 'name': 'depth_mask', |
| 'type': 'GLboolean', |
| 'default': 'true', |
| 'cached': True |
| }, |
| ], |
| 'state_flag': 'framebuffer_state_.clear_state_dirty', |
| }, |
| 'Scissor': { |
| 'type': 'Normal', |
| 'func': 'Scissor', |
| 'enum': 'GL_SCISSOR_BOX', |
| 'states': [ |
| # NOTE: These defaults reset at GLES2DecoderImpl::Initialization. |
| { |
| 'name': 'scissor_x', |
| 'type': 'GLint', |
| 'default': '0', |
| 'expected': 'kViewportX', |
| }, |
| { |
| 'name': 'scissor_y', |
| 'type': 'GLint', |
| 'default': '0', |
| 'expected': 'kViewportY', |
| }, |
| { |
| 'name': 'scissor_width', |
| 'type': 'GLsizei', |
| 'default': '1', |
| 'expected': 'kViewportWidth', |
| }, |
| { |
| 'name': 'scissor_height', |
| 'type': 'GLsizei', |
| 'default': '1', |
| 'expected': 'kViewportHeight', |
| }, |
| ], |
| }, |
| 'Viewport': { |
| 'type': 'Normal', |
| 'func': 'Viewport', |
| 'enum': 'GL_VIEWPORT', |
| 'states': [ |
| # NOTE: These defaults reset at GLES2DecoderImpl::Initialization. |
| { |
| 'name': 'viewport_x', |
| 'type': 'GLint', |
| 'default': '0', |
| 'expected': 'kViewportX', |
| }, |
| { |
| 'name': 'viewport_y', |
| 'type': 'GLint', |
| 'default': '0', |
| 'expected': 'kViewportY', |
| }, |
| { |
| 'name': 'viewport_width', |
| 'type': 'GLsizei', |
| 'default': '1', |
| 'expected': 'kViewportWidth', |
| }, |
| { |
| 'name': 'viewport_height', |
| 'type': 'GLsizei', |
| 'default': '1', |
| 'expected': 'kViewportHeight', |
| }, |
| ], |
| }, |
| 'MatrixValuesCHROMIUM': { |
| 'type': 'NamedParameter', |
| 'func': 'MatrixLoadfEXT', |
| 'states': [ |
| { 'enum': 'GL_PATH_MODELVIEW_MATRIX_CHROMIUM', |
| 'enum_set': 'GL_PATH_MODELVIEW_CHROMIUM', |
| 'name': 'modelview_matrix', |
| 'type': 'GLfloat', |
| 'default': [ |
| '1.0f', '0.0f','0.0f','0.0f', |
| '0.0f', '1.0f','0.0f','0.0f', |
| '0.0f', '0.0f','1.0f','0.0f', |
| '0.0f', '0.0f','0.0f','1.0f', |
| ], |
| 'extension_flag': 'chromium_path_rendering', |
| }, |
| { 'enum': 'GL_PATH_PROJECTION_MATRIX_CHROMIUM', |
| 'enum_set': 'GL_PATH_PROJECTION_CHROMIUM', |
| 'name': 'projection_matrix', |
| 'type': 'GLfloat', |
| 'default': [ |
| '1.0f', '0.0f','0.0f','0.0f', |
| '0.0f', '1.0f','0.0f','0.0f', |
| '0.0f', '0.0f','1.0f','0.0f', |
| '0.0f', '0.0f','0.0f','1.0f', |
| ], |
| 'extension_flag': 'chromium_path_rendering', |
| }, |
| ], |
| }, |
| } |
| |
| # Named type info object represents a named type that is used in OpenGL call |
| # arguments. Each named type defines a set of valid OpenGL call arguments. The |
| # named types are used in 'cmd_buffer_functions.txt'. |
| # type: The actual GL type of the named type. |
| # valid: The list of values that are valid for both the client and the service. |
| # valid_es3: The list of values that are valid in OpenGL ES 3, but not ES 2. |
| # invalid: Examples of invalid values for the type. At least these values |
| # should be tested to be invalid. |
| # deprecated_es3: The list of values that are valid in OpenGL ES 2, but |
| # deprecated in ES 3. |
| # is_complete: The list of valid values of type are final and will not be |
| # modified during runtime. |
| _NAMED_TYPE_INFO = { |
| 'BlitFilter': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_NEAREST', |
| 'GL_LINEAR', |
| ], |
| 'invalid': [ |
| 'GL_LINEAR_MIPMAP_LINEAR', |
| ], |
| }, |
| 'FrameBufferTarget': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_FRAMEBUFFER', |
| ], |
| 'invalid': [ |
| 'GL_DRAW_FRAMEBUFFER' , |
| 'GL_READ_FRAMEBUFFER' , |
| ], |
| }, |
| 'RenderBufferTarget': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_RENDERBUFFER', |
| ], |
| 'invalid': [ |
| 'GL_FRAMEBUFFER', |
| ], |
| }, |
| 'BufferTarget': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_ARRAY_BUFFER', |
| 'GL_ELEMENT_ARRAY_BUFFER', |
| ], |
| 'valid_es3': [ |
| 'GL_COPY_READ_BUFFER', |
| 'GL_COPY_WRITE_BUFFER', |
| 'GL_PIXEL_PACK_BUFFER', |
| 'GL_PIXEL_UNPACK_BUFFER', |
| 'GL_TRANSFORM_FEEDBACK_BUFFER', |
| 'GL_UNIFORM_BUFFER', |
| ], |
| 'invalid': [ |
| 'GL_RENDERBUFFER', |
| ], |
| }, |
| 'IndexedBufferTarget': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_TRANSFORM_FEEDBACK_BUFFER', |
| 'GL_UNIFORM_BUFFER', |
| ], |
| 'invalid': [ |
| 'GL_RENDERBUFFER', |
| ], |
| }, |
| 'MapBufferAccess': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_MAP_READ_BIT', |
| 'GL_MAP_WRITE_BIT', |
| 'GL_MAP_INVALIDATE_RANGE_BIT', |
| 'GL_MAP_INVALIDATE_BUFFER_BIT', |
| 'GL_MAP_FLUSH_EXPLICIT_BIT', |
| 'GL_MAP_UNSYNCHRONIZED_BIT', |
| ], |
| 'invalid': [ |
| 'GL_SYNC_FLUSH_COMMANDS_BIT', |
| ], |
| }, |
| 'Bufferiv': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_COLOR', |
| 'GL_STENCIL', |
| ], |
| 'invalid': [ |
| 'GL_RENDERBUFFER', |
| ], |
| }, |
| 'Bufferuiv': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_COLOR', |
| ], |
| 'invalid': [ |
| 'GL_RENDERBUFFER', |
| ], |
| }, |
| 'Bufferfv': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_COLOR', |
| 'GL_DEPTH', |
| ], |
| 'invalid': [ |
| 'GL_RENDERBUFFER', |
| ], |
| }, |
| 'Bufferfi': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_DEPTH_STENCIL', |
| ], |
| 'invalid': [ |
| 'GL_RENDERBUFFER', |
| ], |
| }, |
| 'BufferUsage': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_STREAM_DRAW', |
| 'GL_STATIC_DRAW', |
| 'GL_DYNAMIC_DRAW', |
| ], |
| 'invalid': [ |
| 'GL_STATIC_READ', |
| ], |
| }, |
| 'CompressedTextureFormat': { |
| 'type': 'GLenum', |
| 'valid': [ |
| ], |
| }, |
| 'GLState': { |
| 'type': 'GLenum', |
| 'valid': [ |
| # NOTE: State an Capability entries added later. |
| 'GL_ACTIVE_TEXTURE', |
| 'GL_ALIASED_LINE_WIDTH_RANGE', |
| 'GL_ALIASED_POINT_SIZE_RANGE', |
| 'GL_ALPHA_BITS', |
| 'GL_ARRAY_BUFFER_BINDING', |
| 'GL_BLUE_BITS', |
| 'GL_COMPRESSED_TEXTURE_FORMATS', |
| 'GL_CURRENT_PROGRAM', |
| 'GL_DEPTH_BITS', |
| 'GL_DEPTH_RANGE', |
| 'GL_ELEMENT_ARRAY_BUFFER_BINDING', |
| 'GL_FRAMEBUFFER_BINDING', |
| 'GL_GENERATE_MIPMAP_HINT', |
| 'GL_GREEN_BITS', |
| 'GL_IMPLEMENTATION_COLOR_READ_FORMAT', |
| 'GL_IMPLEMENTATION_COLOR_READ_TYPE', |
| 'GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS', |
| 'GL_MAX_CUBE_MAP_TEXTURE_SIZE', |
| 'GL_MAX_FRAGMENT_UNIFORM_VECTORS', |
| 'GL_MAX_RENDERBUFFER_SIZE', |
| 'GL_MAX_TEXTURE_IMAGE_UNITS', |
| 'GL_MAX_TEXTURE_SIZE', |
| 'GL_MAX_VARYING_VECTORS', |
| 'GL_MAX_VERTEX_ATTRIBS', |
| 'GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS', |
| 'GL_MAX_VERTEX_UNIFORM_VECTORS', |
| 'GL_MAX_VIEWPORT_DIMS', |
| 'GL_NUM_COMPRESSED_TEXTURE_FORMATS', |
| 'GL_NUM_SHADER_BINARY_FORMATS', |
| 'GL_PACK_ALIGNMENT', |
| 'GL_RED_BITS', |
| 'GL_RENDERBUFFER_BINDING', |
| 'GL_SAMPLE_BUFFERS', |
| 'GL_SAMPLE_COVERAGE_INVERT', |
| 'GL_SAMPLE_COVERAGE_VALUE', |
| 'GL_SAMPLES', |
| 'GL_SCISSOR_BOX', |
| 'GL_SHADER_BINARY_FORMATS', |
| 'GL_SHADER_COMPILER', |
| 'GL_SUBPIXEL_BITS', |
| 'GL_STENCIL_BITS', |
| 'GL_TEXTURE_BINDING_2D', |
| 'GL_TEXTURE_BINDING_CUBE_MAP', |
| 'GL_UNPACK_ALIGNMENT', |
| 'GL_UNPACK_FLIP_Y_CHROMIUM', |
| 'GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM', |
| 'GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM', |
| 'GL_BIND_GENERATES_RESOURCE_CHROMIUM', |
| # we can add this because we emulate it if the driver does not support it. |
| 'GL_VERTEX_ARRAY_BINDING_OES', |
| 'GL_VIEWPORT', |
| ], |
| 'invalid': [ |
| 'GL_FOG_HINT', |
| ], |
| }, |
| 'GetTexParamTarget': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_TEXTURE_2D', |
| 'GL_TEXTURE_CUBE_MAP', |
| ], |
| 'invalid': [ |
| 'GL_PROXY_TEXTURE_CUBE_MAP', |
| ] |
| }, |
| 'TextureTarget': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_TEXTURE_2D', |
| 'GL_TEXTURE_CUBE_MAP_POSITIVE_X', |
| 'GL_TEXTURE_CUBE_MAP_NEGATIVE_X', |
| 'GL_TEXTURE_CUBE_MAP_POSITIVE_Y', |
| 'GL_TEXTURE_CUBE_MAP_NEGATIVE_Y', |
| 'GL_TEXTURE_CUBE_MAP_POSITIVE_Z', |
| 'GL_TEXTURE_CUBE_MAP_NEGATIVE_Z', |
| ], |
| 'invalid': [ |
| 'GL_PROXY_TEXTURE_CUBE_MAP', |
| ] |
| }, |
| 'Texture3DTarget': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_TEXTURE_3D', |
| 'GL_TEXTURE_2D_ARRAY', |
| ], |
| 'invalid': [ |
| 'GL_TEXTURE_2D', |
| ] |
| }, |
| 'TextureBindTarget': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_TEXTURE_2D', |
| 'GL_TEXTURE_CUBE_MAP', |
| ], |
| 'valid_es3': [ |
| 'GL_TEXTURE_3D', |
| 'GL_TEXTURE_2D_ARRAY', |
| ], |
| 'invalid': [ |
| 'GL_TEXTURE_1D', |
| 'GL_TEXTURE_3D', |
| ], |
| }, |
| 'TransformFeedbackBindTarget': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_TRANSFORM_FEEDBACK', |
| ], |
| 'invalid': [ |
| 'GL_TEXTURE_2D', |
| ], |
| }, |
| 'TransformFeedbackPrimitiveMode': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_POINTS', |
| 'GL_LINES', |
| 'GL_TRIANGLES', |
| ], |
| 'invalid': [ |
| 'GL_LINE_LOOP', |
| ], |
| }, |
| 'ShaderType': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_VERTEX_SHADER', |
| 'GL_FRAGMENT_SHADER', |
| ], |
| 'invalid': [ |
| 'GL_GEOMETRY_SHADER', |
| ], |
| }, |
| 'FaceType': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_FRONT', |
| 'GL_BACK', |
| 'GL_FRONT_AND_BACK', |
| ], |
| }, |
| 'FaceMode': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_CW', |
| 'GL_CCW', |
| ], |
| }, |
| 'CmpFunction': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_NEVER', |
| 'GL_LESS', |
| 'GL_EQUAL', |
| 'GL_LEQUAL', |
| 'GL_GREATER', |
| 'GL_NOTEQUAL', |
| 'GL_GEQUAL', |
| 'GL_ALWAYS', |
| ], |
| }, |
| 'Equation': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_FUNC_ADD', |
| 'GL_FUNC_SUBTRACT', |
| 'GL_FUNC_REVERSE_SUBTRACT', |
| ], |
| 'invalid': [ |
| 'GL_MIN', |
| 'GL_MAX', |
| ], |
| }, |
| 'SrcBlendFactor': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_ZERO', |
| 'GL_ONE', |
| 'GL_SRC_COLOR', |
| 'GL_ONE_MINUS_SRC_COLOR', |
| 'GL_DST_COLOR', |
| 'GL_ONE_MINUS_DST_COLOR', |
| 'GL_SRC_ALPHA', |
| 'GL_ONE_MINUS_SRC_ALPHA', |
| 'GL_DST_ALPHA', |
| 'GL_ONE_MINUS_DST_ALPHA', |
| 'GL_CONSTANT_COLOR', |
| 'GL_ONE_MINUS_CONSTANT_COLOR', |
| 'GL_CONSTANT_ALPHA', |
| 'GL_ONE_MINUS_CONSTANT_ALPHA', |
| 'GL_SRC_ALPHA_SATURATE', |
| ], |
| }, |
| 'DstBlendFactor': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_ZERO', |
| 'GL_ONE', |
| 'GL_SRC_COLOR', |
| 'GL_ONE_MINUS_SRC_COLOR', |
| 'GL_DST_COLOR', |
| 'GL_ONE_MINUS_DST_COLOR', |
| 'GL_SRC_ALPHA', |
| 'GL_ONE_MINUS_SRC_ALPHA', |
| 'GL_DST_ALPHA', |
| 'GL_ONE_MINUS_DST_ALPHA', |
| 'GL_CONSTANT_COLOR', |
| 'GL_ONE_MINUS_CONSTANT_COLOR', |
| 'GL_CONSTANT_ALPHA', |
| 'GL_ONE_MINUS_CONSTANT_ALPHA', |
| ], |
| }, |
| 'Capability': { |
| 'type': 'GLenum', |
| 'valid': ["GL_%s" % cap['name'].upper() for cap in _CAPABILITY_FLAGS |
| if 'es3' not in cap or cap['es3'] != True], |
| 'valid_es3': ["GL_%s" % cap['name'].upper() for cap in _CAPABILITY_FLAGS |
| if 'es3' in cap and cap['es3'] == True], |
| 'invalid': [ |
| 'GL_CLIP_PLANE0', |
| 'GL_POINT_SPRITE', |
| ], |
| }, |
| 'DrawMode': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_POINTS', |
| 'GL_LINE_STRIP', |
| 'GL_LINE_LOOP', |
| 'GL_LINES', |
| 'GL_TRIANGLE_STRIP', |
| 'GL_TRIANGLE_FAN', |
| 'GL_TRIANGLES', |
| ], |
| 'invalid': [ |
| 'GL_QUADS', |
| 'GL_POLYGON', |
| ], |
| }, |
| 'IndexType': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_UNSIGNED_BYTE', |
| 'GL_UNSIGNED_SHORT', |
| ], |
| 'invalid': [ |
| 'GL_UNSIGNED_INT', |
| 'GL_INT', |
| ], |
| }, |
| 'GetMaxIndexType': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_UNSIGNED_BYTE', |
| 'GL_UNSIGNED_SHORT', |
| 'GL_UNSIGNED_INT', |
| ], |
| 'invalid': [ |
| 'GL_INT', |
| ], |
| }, |
| 'Attachment': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_COLOR_ATTACHMENT0', |
| 'GL_DEPTH_ATTACHMENT', |
| 'GL_STENCIL_ATTACHMENT', |
| ], |
| }, |
| 'BackbufferAttachment': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_COLOR_EXT', |
| 'GL_DEPTH_EXT', |
| 'GL_STENCIL_EXT', |
| ], |
| }, |
| 'BufferParameter': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_BUFFER_SIZE', |
| 'GL_BUFFER_USAGE', |
| ], |
| 'invalid': [ |
| 'GL_PIXEL_PACK_BUFFER', |
| ], |
| }, |
| 'BufferMode': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_INTERLEAVED_ATTRIBS', |
| 'GL_SEPARATE_ATTRIBS', |
| ], |
| 'invalid': [ |
| 'GL_PIXEL_PACK_BUFFER', |
| ], |
| }, |
| 'FrameBufferParameter': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE', |
| 'GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME', |
| 'GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL', |
| 'GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE', |
| ], |
| }, |
| 'MatrixMode': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_PATH_PROJECTION_CHROMIUM', |
| 'GL_PATH_MODELVIEW_CHROMIUM', |
| ], |
| }, |
| 'ProgramParameter': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_DELETE_STATUS', |
| 'GL_LINK_STATUS', |
| 'GL_VALIDATE_STATUS', |
| 'GL_INFO_LOG_LENGTH', |
| 'GL_ATTACHED_SHADERS', |
| 'GL_ACTIVE_ATTRIBUTES', |
| 'GL_ACTIVE_ATTRIBUTE_MAX_LENGTH', |
| 'GL_ACTIVE_UNIFORMS', |
| 'GL_ACTIVE_UNIFORM_MAX_LENGTH', |
| ], |
| }, |
| 'QueryObjectParameter': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_QUERY_RESULT_EXT', |
| 'GL_QUERY_RESULT_AVAILABLE_EXT', |
| ], |
| }, |
| 'QueryParameter': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_CURRENT_QUERY_EXT', |
| ], |
| }, |
| 'QueryTarget': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_ANY_SAMPLES_PASSED_EXT', |
| 'GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT', |
| 'GL_COMMANDS_ISSUED_CHROMIUM', |
| 'GL_LATENCY_QUERY_CHROMIUM', |
| 'GL_ASYNC_PIXEL_UNPACK_COMPLETED_CHROMIUM', |
| 'GL_ASYNC_PIXEL_PACK_COMPLETED_CHROMIUM', |
| 'GL_COMMANDS_COMPLETED_CHROMIUM', |
| ], |
| }, |
| 'RenderBufferParameter': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_RENDERBUFFER_RED_SIZE', |
| 'GL_RENDERBUFFER_GREEN_SIZE', |
| 'GL_RENDERBUFFER_BLUE_SIZE', |
| 'GL_RENDERBUFFER_ALPHA_SIZE', |
| 'GL_RENDERBUFFER_DEPTH_SIZE', |
| 'GL_RENDERBUFFER_STENCIL_SIZE', |
| 'GL_RENDERBUFFER_WIDTH', |
| 'GL_RENDERBUFFER_HEIGHT', |
| 'GL_RENDERBUFFER_INTERNAL_FORMAT', |
| ], |
| }, |
| 'SamplerParameter': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_TEXTURE_MAG_FILTER', |
| 'GL_TEXTURE_MIN_FILTER', |
| 'GL_TEXTURE_MIN_LOD', |
| 'GL_TEXTURE_MAX_LOD', |
| 'GL_TEXTURE_WRAP_S', |
| 'GL_TEXTURE_WRAP_T', |
| 'GL_TEXTURE_WRAP_R', |
| 'GL_TEXTURE_COMPARE_MODE', |
| 'GL_TEXTURE_COMPARE_FUNC', |
| ], |
| 'invalid': [ |
| 'GL_GENERATE_MIPMAP', |
| ], |
| }, |
| 'ShaderParameter': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_SHADER_TYPE', |
| 'GL_DELETE_STATUS', |
| 'GL_COMPILE_STATUS', |
| 'GL_INFO_LOG_LENGTH', |
| 'GL_SHADER_SOURCE_LENGTH', |
| 'GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE', |
| ], |
| }, |
| 'ShaderPrecision': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_LOW_FLOAT', |
| 'GL_MEDIUM_FLOAT', |
| 'GL_HIGH_FLOAT', |
| 'GL_LOW_INT', |
| 'GL_MEDIUM_INT', |
| 'GL_HIGH_INT', |
| ], |
| }, |
| 'StringType': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_VENDOR', |
| 'GL_RENDERER', |
| 'GL_VERSION', |
| 'GL_SHADING_LANGUAGE_VERSION', |
| 'GL_EXTENSIONS', |
| ], |
| }, |
| 'TextureParameter': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_TEXTURE_MAG_FILTER', |
| 'GL_TEXTURE_MIN_FILTER', |
| 'GL_TEXTURE_POOL_CHROMIUM', |
| 'GL_TEXTURE_WRAP_S', |
| 'GL_TEXTURE_WRAP_T', |
| ], |
| 'invalid': [ |
| 'GL_GENERATE_MIPMAP', |
| ], |
| }, |
| 'TexturePool': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_TEXTURE_POOL_MANAGED_CHROMIUM', |
| 'GL_TEXTURE_POOL_UNMANAGED_CHROMIUM', |
| ], |
| }, |
| 'TextureWrapMode': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_CLAMP_TO_EDGE', |
| 'GL_MIRRORED_REPEAT', |
| 'GL_REPEAT', |
| ], |
| }, |
| 'TextureMinFilterMode': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_NEAREST', |
| 'GL_LINEAR', |
| 'GL_NEAREST_MIPMAP_NEAREST', |
| 'GL_LINEAR_MIPMAP_NEAREST', |
| 'GL_NEAREST_MIPMAP_LINEAR', |
| 'GL_LINEAR_MIPMAP_LINEAR', |
| ], |
| }, |
| 'TextureMagFilterMode': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_NEAREST', |
| 'GL_LINEAR', |
| ], |
| }, |
| 'TextureUsage': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_NONE', |
| 'GL_FRAMEBUFFER_ATTACHMENT_ANGLE', |
| ], |
| }, |
| 'VertexAttribute': { |
| 'type': 'GLenum', |
| 'valid': [ |
| # some enum that the decoder actually passes through to GL needs |
| # to be the first listed here since it's used in unit tests. |
| 'GL_VERTEX_ATTRIB_ARRAY_NORMALIZED', |
| 'GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING', |
| 'GL_VERTEX_ATTRIB_ARRAY_ENABLED', |
| 'GL_VERTEX_ATTRIB_ARRAY_SIZE', |
| 'GL_VERTEX_ATTRIB_ARRAY_STRIDE', |
| 'GL_VERTEX_ATTRIB_ARRAY_TYPE', |
| 'GL_CURRENT_VERTEX_ATTRIB', |
| ], |
| }, |
| 'VertexPointer': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_VERTEX_ATTRIB_ARRAY_POINTER', |
| ], |
| }, |
| 'HintTarget': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_GENERATE_MIPMAP_HINT', |
| ], |
| 'invalid': [ |
| 'GL_PERSPECTIVE_CORRECTION_HINT', |
| ], |
| }, |
| 'HintMode': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_FASTEST', |
| 'GL_NICEST', |
| 'GL_DONT_CARE', |
| ], |
| }, |
| 'PixelStore': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_PACK_ALIGNMENT', |
| 'GL_UNPACK_ALIGNMENT', |
| 'GL_UNPACK_FLIP_Y_CHROMIUM', |
| 'GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM', |
| 'GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM', |
| ], |
| 'invalid': [ |
| 'GL_PACK_SWAP_BYTES', |
| 'GL_UNPACK_SWAP_BYTES', |
| ], |
| }, |
| 'PixelStoreAlignment': { |
| 'type': 'GLint', |
| 'valid': [ |
| '1', |
| '2', |
| '4', |
| '8', |
| ], |
| 'invalid': [ |
| '3', |
| '9', |
| ], |
| }, |
| 'ReadPixelFormat': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_ALPHA', |
| 'GL_RGB', |
| 'GL_RGBA', |
| ], |
| }, |
| 'PixelType': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_UNSIGNED_BYTE', |
| 'GL_UNSIGNED_SHORT_5_6_5', |
| 'GL_UNSIGNED_SHORT_4_4_4_4', |
| 'GL_UNSIGNED_SHORT_5_5_5_1', |
| ], |
| 'valid_es3': [ |
| 'GL_BYTE', |
| 'GL_UNSIGNED_SHORT', |
| 'GL_SHORT', |
| 'GL_UNSIGNED_INT', |
| 'GL_INT', |
| 'GL_HALF_FLOAT', |
| 'GL_FLOAT', |
| 'GL_UNSIGNED_INT_2_10_10_10_REV', |
| 'GL_UNSIGNED_INT_10F_11F_11F_REV', |
| 'GL_UNSIGNED_INT_5_9_9_9_REV', |
| 'GL_UNSIGNED_INT_24_8', |
| 'GL_FLOAT_32_UNSIGNED_INT_24_8_REV', |
| ], |
| 'invalid': [ |
| 'GL_UNSIGNED_BYTE_3_3_2', |
| ], |
| }, |
| 'ReadPixelType': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_UNSIGNED_BYTE', |
| 'GL_UNSIGNED_SHORT_5_6_5', |
| 'GL_UNSIGNED_SHORT_4_4_4_4', |
| 'GL_UNSIGNED_SHORT_5_5_5_1', |
| ], |
| 'invalid': [ |
| 'GL_SHORT', |
| 'GL_INT', |
| ], |
| }, |
| 'RenderBufferFormat': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_RGBA4', |
| 'GL_RGB565', |
| 'GL_RGB5_A1', |
| 'GL_DEPTH_COMPONENT16', |
| 'GL_STENCIL_INDEX8', |
| ], |
| }, |
| 'ShaderBinaryFormat': { |
| 'type': 'GLenum', |
| 'valid': [ |
| ], |
| }, |
| 'StencilOp': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_KEEP', |
| 'GL_ZERO', |
| 'GL_REPLACE', |
| 'GL_INCR', |
| 'GL_INCR_WRAP', |
| 'GL_DECR', |
| 'GL_DECR_WRAP', |
| 'GL_INVERT', |
| ], |
| }, |
| 'TextureFormat': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_ALPHA', |
| 'GL_LUMINANCE', |
| 'GL_LUMINANCE_ALPHA', |
| 'GL_RGB', |
| 'GL_RGBA', |
| ], |
| 'valid_es3': [ |
| 'GL_RED', |
| 'GL_RED_INTEGER', |
| 'GL_RG', |
| 'GL_RG_INTEGER', |
| 'GL_RGB_INTEGER', |
| 'GL_RGBA_INTEGER', |
| 'GL_DEPTH_COMPONENT', |
| 'GL_DEPTH_STENCIL', |
| ], |
| 'invalid': [ |
| 'GL_BGRA', |
| 'GL_BGR', |
| ], |
| }, |
| 'TextureInternalFormat': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_ALPHA', |
| 'GL_LUMINANCE', |
| 'GL_LUMINANCE_ALPHA', |
| 'GL_RGB', |
| 'GL_RGBA', |
| ], |
| 'valid_es3': [ |
| 'GL_R8', |
| 'GL_R8_SNORM', |
| 'GL_R16F', |
| 'GL_R32F', |
| 'GL_R8UI', |
| 'GL_R8I', |
| 'GL_R16UI', |
| 'GL_R16I', |
| 'GL_R32UI', |
| 'GL_R32I', |
| 'GL_RG8', |
| 'GL_RG8_SNORM', |
| 'GL_RG16F', |
| 'GL_RG32F', |
| 'GL_RG8UI', |
| 'GL_RG8I', |
| 'GL_RG16UI', |
| 'GL_RG16I', |
| 'GL_RG32UI', |
| 'GL_RG32I', |
| 'GL_RGB8', |
| 'GL_SRGB8', |
| 'GL_RGB565', |
| 'GL_RGB8_SNORM', |
| 'GL_R11F_G11F_B10F', |
| 'GL_RGB9_E5', |
| 'GL_RGB16F', |
| 'GL_RGB32F', |
| 'GL_RGB8UI', |
| 'GL_RGB8I', |
| 'GL_RGB16UI', |
| 'GL_RGB16I', |
| 'GL_RGB32UI', |
| 'GL_RGB32I', |
| 'GL_RGBA8', |
| 'GL_SRGB8_ALPHA8', |
| 'GL_RGBA8_SNORM', |
| 'GL_RGB5_A1', |
| 'GL_RGBA4', |
| 'GL_RGB10_A2', |
| 'GL_RGBA16F', |
| 'GL_RGBA32F', |
| 'GL_RGBA8UI', |
| 'GL_RGBA8I', |
| 'GL_RGB10_A2UI', |
| 'GL_RGBA16UI', |
| 'GL_RGBA16I', |
| 'GL_RGBA32UI', |
| 'GL_RGBA32I', |
| # The DEPTH/STENCIL formats are not supported in CopyTexImage2D. |
| # We will reject them dynamically in GPU command buffer. |
| 'GL_DEPTH_COMPONENT16', |
| 'GL_DEPTH_COMPONENT24', |
| 'GL_DEPTH_COMPONENT32F', |
| 'GL_DEPTH24_STENCIL8', |
| 'GL_DEPTH32F_STENCIL8', |
| ], |
| 'invalid': [ |
| 'GL_BGRA', |
| 'GL_BGR', |
| ], |
| }, |
| 'TextureInternalFormatStorage': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_RGB565', |
| 'GL_RGBA4', |
| 'GL_RGB5_A1', |
| 'GL_ALPHA8_EXT', |
| 'GL_LUMINANCE8_EXT', |
| 'GL_LUMINANCE8_ALPHA8_EXT', |
| 'GL_RGB8_OES', |
| 'GL_RGBA8_OES', |
| ], |
| 'valid_es3': [ |
| 'GL_R8', |
| 'GL_R8_SNORM', |
| 'GL_R16F', |
| 'GL_R32F', |
| 'GL_R8UI', |
| 'GL_R8I', |
| 'GL_R16UI', |
| 'GL_R16I', |
| 'GL_R32UI', |
| 'GL_R32I', |
| 'GL_RG8', |
| 'GL_RG8_SNORM', |
| 'GL_RG16F', |
| 'GL_RG32F', |
| 'GL_RG8UI', |
| 'GL_RG8I', |
| 'GL_RG16UI', |
| 'GL_RG16I', |
| 'GL_RG32UI', |
| 'GL_RG32I', |
| 'GL_SRGB8', |
| 'GL_RGB8_SNORM', |
| 'GL_R11F_G11F_B10F', |
| 'GL_RGB9_E5', |
| 'GL_RGB16F', |
| 'GL_RGB32F', |
| 'GL_RGB8UI', |
| 'GL_RGB8I', |
| 'GL_RGB16UI', |
| 'GL_RGB16I', |
| 'GL_RGB32UI', |
| 'GL_RGB32I', |
| 'GL_SRGB8_ALPHA8', |
| 'GL_RGBA8_SNORM', |
| 'GL_RGB10_A2', |
| 'GL_RGBA16F', |
| 'GL_RGBA32F', |
| 'GL_RGBA8UI', |
| 'GL_RGBA8I', |
| 'GL_RGB10_A2UI', |
| 'GL_RGBA16UI', |
| 'GL_RGBA16I', |
| 'GL_RGBA32UI', |
| 'GL_RGBA32I', |
| 'GL_DEPTH_COMPONENT16', |
| 'GL_DEPTH_COMPONENT24', |
| 'GL_DEPTH_COMPONENT32F', |
| 'GL_DEPTH24_STENCIL8', |
| 'GL_DEPTH32F_STENCIL8', |
| 'GL_COMPRESSED_R11_EAC', |
| 'GL_COMPRESSED_SIGNED_R11_EAC', |
| 'GL_COMPRESSED_RG11_EAC', |
| 'GL_COMPRESSED_SIGNED_RG11_EAC', |
| 'GL_COMPRESSED_RGB8_ETC2', |
| 'GL_COMPRESSED_SRGB8_ETC2', |
| 'GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2', |
| 'GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2', |
| 'GL_COMPRESSED_RGBA8_ETC2_EAC', |
| 'GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC', |
| ], |
| 'deprecated_es3': [ |
| 'GL_ALPHA8_EXT', |
| 'GL_LUMINANCE8_EXT', |
| 'GL_LUMINANCE8_ALPHA8_EXT', |
| 'GL_ALPHA16F_EXT', |
| 'GL_LUMINANCE16F_EXT', |
| 'GL_LUMINANCE_ALPHA16F_EXT', |
| 'GL_ALPHA32F_EXT', |
| 'GL_LUMINANCE32F_EXT', |
| 'GL_LUMINANCE_ALPHA32F_EXT', |
| ], |
| }, |
| 'ImageInternalFormat': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_RGB', |
| 'GL_RGBA', |
| ], |
| }, |
| 'ImageUsage': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_MAP_CHROMIUM', |
| 'GL_SCANOUT_CHROMIUM' |
| ], |
| }, |
| 'ValueBufferTarget': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM', |
| ], |
| }, |
| 'SubscriptionTarget': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_MOUSE_POSITION_CHROMIUM', |
| ], |
| }, |
| 'UniformParameter': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_UNIFORM_SIZE', |
| 'GL_UNIFORM_TYPE', |
| 'GL_UNIFORM_NAME_LENGTH', |
| 'GL_UNIFORM_BLOCK_INDEX', |
| 'GL_UNIFORM_OFFSET', |
| 'GL_UNIFORM_ARRAY_STRIDE', |
| 'GL_UNIFORM_MATRIX_STRIDE', |
| 'GL_UNIFORM_IS_ROW_MAJOR', |
| ], |
| 'invalid': [ |
| 'GL_UNIFORM_BLOCK_NAME_LENGTH', |
| ], |
| }, |
| 'UniformBlockParameter': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_UNIFORM_BLOCK_BINDING', |
| 'GL_UNIFORM_BLOCK_DATA_SIZE', |
| 'GL_UNIFORM_BLOCK_NAME_LENGTH', |
| 'GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS', |
| 'GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES', |
| 'GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER', |
| 'GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER', |
| ], |
| 'invalid': [ |
| 'GL_NEAREST', |
| ], |
| }, |
| 'VertexAttribType': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_BYTE', |
| 'GL_UNSIGNED_BYTE', |
| 'GL_SHORT', |
| 'GL_UNSIGNED_SHORT', |
| # 'GL_FIXED', // This is not available on Desktop GL. |
| 'GL_FLOAT', |
| ], |
| 'invalid': [ |
| 'GL_DOUBLE', |
| ], |
| }, |
| 'TextureBorder': { |
| 'type': 'GLint', |
| 'is_complete': True, |
| 'valid': [ |
| '0', |
| ], |
| 'invalid': [ |
| '1', |
| ], |
| }, |
| 'VertexAttribSize': { |
| 'type': 'GLint', |
| 'valid': [ |
| '1', |
| '2', |
| '3', |
| '4', |
| ], |
| 'invalid': [ |
| '0', |
| '5', |
| ], |
| }, |
| 'ZeroOnly': { |
| 'type': 'GLint', |
| 'is_complete': True, |
| 'valid': [ |
| '0', |
| ], |
| 'invalid': [ |
| '1', |
| ], |
| }, |
| 'FalseOnly': { |
| 'type': 'GLboolean', |
| 'is_complete': True, |
| 'valid': [ |
| 'false', |
| ], |
| 'invalid': [ |
| 'true', |
| ], |
| }, |
| 'ResetStatus': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_GUILTY_CONTEXT_RESET_ARB', |
| 'GL_INNOCENT_CONTEXT_RESET_ARB', |
| 'GL_UNKNOWN_CONTEXT_RESET_ARB', |
| ], |
| }, |
| 'SyncCondition': { |
| 'type': 'GLenum', |
| 'is_complete': True, |
| 'valid': [ |
| 'GL_SYNC_GPU_COMMANDS_COMPLETE', |
| ], |
| 'invalid': [ |
| '0', |
| ], |
| }, |
| 'SyncFlags': { |
| 'type': 'GLbitfield', |
| 'is_complete': True, |
| 'valid': [ |
| '0', |
| ], |
| 'invalid': [ |
| '1', |
| ], |
| }, |
| 'SyncFlushFlags': { |
| 'type': 'GLbitfield', |
| 'valid': [ |
| 'GL_SYNC_FLUSH_COMMANDS_BIT', |
| '0', |
| ], |
| 'invalid': [ |
| '0xFFFFFFFF', |
| ], |
| }, |
| 'SyncParameter': { |
| 'type': 'GLenum', |
| 'valid': [ |
| 'GL_SYNC_STATUS', # This needs to be the 1st; all others are cached. |
| 'GL_OBJECT_TYPE', |
| 'GL_SYNC_CONDITION', |
| 'GL_SYNC_FLAGS', |
| ], |
| 'invalid': [ |
| 'GL_SYNC_FENCE', |
| ], |
| }, |
| } |
| |
| # This table specifies the different pepper interfaces that are supported for |
| # GL commands. 'dev' is true if it's a dev interface. |
| _PEPPER_INTERFACES = [ |
| {'name': '', 'dev': False}, |
| {'name': 'InstancedArrays', 'dev': False}, |
| {'name': 'FramebufferBlit', 'dev': False}, |
| {'name': 'FramebufferMultisample', 'dev': False}, |
| {'name': 'ChromiumEnableFeature', 'dev': False}, |
| {'name': 'ChromiumMapSub', 'dev': False}, |
| {'name': 'Query', 'dev': False}, |
| {'name': 'VertexArrayObject', 'dev': False}, |
| {'name': 'DrawBuffers', 'dev': True}, |
| ] |
| |
| # A function info object specifies the type and other special data for the |
| # command that will be generated. A base function info object is generated by |
| # parsing the "cmd_buffer_functions.txt", one for each function in the |
| # file. These function info objects can be augmented and their values can be |
| # overridden by adding an object to the table below. |
| # |
| # Must match function names specified in "cmd_buffer_functions.txt". |
| # |
| # cmd_comment: A comment added to the cmd format. |
| # type: defines which handler will be used to generate code. |
| # decoder_func: defines which function to call in the decoder to execute the |
| # corresponding GL command. If not specified the GL command will |
| # be called directly. |
| # gl_test_func: GL function that is expected to be called when testing. |
| # cmd_args: The arguments to use for the command. This overrides generating |
| # them based on the GL function arguments. |
| # gen_cmd: Whether or not this function geneates a command. Default = True. |
| # data_transfer_methods: Array of methods that are used for transfering the |
| # pointer data. Possible values: 'immediate', 'shm', 'bucket'. |
| # The default is 'immediate' if the command has one pointer |
| # argument, otherwise 'shm'. One command is generated for each |
| # transfer method. Affects only commands which are not of type |
| # 'HandWritten', 'GETn' or 'GLcharN'. |
| # Note: the command arguments that affect this are the final args, |
| # taking cmd_args override into consideration. |
| # impl_func: Whether or not to generate the GLES2Implementation part of this |
| # command. |
| # impl_decl: Whether or not to generate the GLES2Implementation declaration |
| # for this command. |
| # needs_size: If True a data_size field is added to the command. |
| # count: The number of units per element. For PUTn or PUT types. |
| # use_count_func: If True the actual data count needs to be computed; the count |
| # argument specifies the maximum count. |
| # unit_test: If False no service side unit test will be generated. |
| # client_test: If False no client side unit test will be generated. |
| # expectation: If False the unit test will have no expected calls. |
| # gen_func: Name of function that generates GL resource for corresponding |
| # bind function. |
| # states: array of states that get set by this function corresponding to |
| # the given arguments |
| # state_flag: name of flag that is set to true when function is called. |
| # no_gl: no GL function is called. |
| # valid_args: A dictionary of argument indices to args to use in unit tests |
| # when they can not be automatically determined. |
| # pepper_interface: The pepper interface that is used for this extension |
| # pepper_name: The name of the function as exposed to pepper. |
| # pepper_args: A string representing the argument list (what would appear in |
| # C/C++ between the parentheses for the function declaration) |
| # that the Pepper API expects for this function. Use this only if |
| # the stable Pepper API differs from the GLES2 argument list. |
| # invalid_test: False if no invalid test needed. |
| # shadowed: True = the value is shadowed so no glGetXXX call will be made. |
| # first_element_only: For PUT types, True if only the first element of an |
| # array is used and we end up calling the single value |
| # corresponding function. eg. TexParameteriv -> TexParameteri |
| # extension: Function is an extension to GL and should not be exposed to |
| # pepper unless pepper_interface is defined. |
| # extension_flag: Function is an extension and should be enabled only when |
| # the corresponding feature info flag is enabled. Implies |
| # 'extension': True. |
| # not_shared: For GENn types, True if objects can't be shared between contexts |
| # unsafe: True = no validation is implemented on the service side and the |
| # command is only available with --enable-unsafe-es3-apis. |
| # id_mapping: A list of resource type names whose client side IDs need to be |
| # mapped to service side IDs. This is only used for unsafe APIs. |
| |
| _FUNCTION_INFO = { |
| 'ActiveTexture': { |
| 'decoder_func': 'DoActiveTexture', |
| 'unit_test': False, |
| 'impl_func': False, |
| 'client_test': False, |
| }, |
| 'AttachShader': {'decoder_func': 'DoAttachShader'}, |
| 'BindAttribLocation': { |
| 'type': 'GLchar', |
| 'data_transfer_methods': ['bucket'], |
| 'needs_size': True, |
| }, |
| 'BindBuffer': { |
| 'type': 'Bind', |
| 'decoder_func': 'DoBindBuffer', |
| 'gen_func': 'GenBuffersARB', |
| }, |
| 'BindBufferBase': { |
| 'type': 'Bind', |
| 'id_mapping': [ 'Buffer' ], |
| 'gen_func': 'GenBuffersARB', |
| 'unsafe': True, |
| }, |
| 'BindBufferRange': { |
| 'type': 'Bind', |
| 'id_mapping': [ 'Buffer' ], |
| 'gen_func': 'GenBuffersARB', |
| 'valid_args': { |
| '3': '4', |
| '4': '4' |
| }, |
| 'unsafe': True, |
| }, |
| 'BindFramebuffer': { |
| 'type': 'Bind', |
| 'decoder_func': 'DoBindFramebuffer', |
| 'gl_test_func': 'glBindFramebufferEXT', |
| 'gen_func': 'GenFramebuffersEXT', |
| 'trace_level': 1, |
| }, |
| 'BindRenderbuffer': { |
| 'type': 'Bind', |
| 'decoder_func': 'DoBindRenderbuffer', |
| 'gl_test_func': 'glBindRenderbufferEXT', |
| 'gen_func': 'GenRenderbuffersEXT', |
| }, |
| 'BindSampler': { |
| 'type': 'Bind', |
| 'id_mapping': [ 'Sampler' ], |
| 'unsafe': True, |
| }, |
| 'BindTexture': { |
| 'type': 'Bind', |
| 'decoder_func': 'DoBindTexture', |
| 'gen_func': 'GenTextures', |
| # TODO(gman): remove this once client side caching works. |
| 'client_test': False, |
| 'trace_level': 1, |
| }, |
| 'BindTransformFeedback': { |
| 'type': 'Bind', |
| 'id_mapping': [ 'TransformFeedback' ], |
| 'unsafe': True, |
| }, |
| 'BlitFramebufferCHROMIUM': { |
| 'decoder_func': 'DoBlitFramebufferCHROMIUM', |
| 'unit_test': False, |
| 'extension_flag': 'chromium_framebuffer_multisample', |
| 'pepper_interface': 'FramebufferBlit', |
| 'pepper_name': 'BlitFramebufferEXT', |
| 'defer_reads': True, |
| 'defer_draws': True, |
| 'trace_level': 1, |
| }, |
| 'BufferData': { |
| 'type': 'Manual', |
| 'data_transfer_methods': ['shm'], |
| 'client_test': False, |
| }, |
| 'BufferSubData': { |
| 'type': 'Data', |
| 'client_test': False, |
| 'decoder_func': 'DoBufferSubData', |
| 'data_transfer_methods': ['shm'], |
| }, |
| 'CheckFramebufferStatus': { |
| 'type': 'Is', |
| 'decoder_func': 'DoCheckFramebufferStatus', |
| 'gl_test_func': 'glCheckFramebufferStatusEXT', |
| 'error_value': 'GL_FRAMEBUFFER_UNSUPPORTED', |
| 'result': ['GLenum'], |
| }, |
| 'Clear': { |
| 'decoder_func': 'DoClear', |
| 'defer_draws': True, |
| 'trace_level': 1, |
| }, |
| 'ClearBufferiv': { |
| 'type': 'PUT', |
| 'use_count_func': True, |
| 'count': 4, |
| 'unsafe': True, |
| }, |
| 'ClearBufferuiv': { |
| 'type': 'PUT', |
| 'count': 4, |
| 'unsafe': True, |
| }, |
| 'ClearBufferfv': { |
| 'type': 'PUT', |
| 'use_count_func': True, |
| 'count': 4, |
| 'unsafe': True, |
| }, |
| 'ClearBufferfi': { |
| 'unsafe': True, |
| }, |
| 'ClearColor': { |
| 'type': 'StateSet', |
| 'state': 'ClearColor', |
| }, |
| 'ClearDepthf': { |
| 'type': 'StateSet', |
| 'state': 'ClearDepthf', |
| 'decoder_func': 'glClearDepth', |
| 'gl_test_func': 'glClearDepth', |
| 'valid_args': { |
| '0': '0.5f' |
| }, |
| }, |
| 'ClientWaitSync': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'cmd_args': 'GLuint sync, GLbitfieldSyncFlushFlags flags, ' |
| 'GLuint timeout_0, GLuint timeout_1, GLenum* result', |
| 'unsafe': True, |
| 'result': ['GLenum'], |
| }, |
| 'ColorMask': { |
| 'type': 'StateSet', |
| 'state': 'ColorMask', |
| 'no_gl': True, |
| 'expectation': False, |
| }, |
| 'ConsumeTextureCHROMIUM': { |
| 'decoder_func': 'DoConsumeTextureCHROMIUM', |
| 'impl_func': False, |
| 'type': 'PUT', |
| 'count': 64, # GL_MAILBOX_SIZE_CHROMIUM |
| 'unit_test': False, |
| 'client_test': False, |
| 'extension': "CHROMIUM_texture_mailbox", |
| 'chromium': True, |
| 'trace_level': 1, |
| }, |
| 'CopyBufferSubData': { |
| 'unsafe': True, |
| }, |
| 'CreateAndConsumeTextureCHROMIUM': { |
| 'decoder_func': 'DoCreateAndConsumeTextureCHROMIUM', |
| 'impl_func': False, |
| 'type': 'HandWritten', |
| 'data_transfer_methods': ['immediate'], |
| 'unit_test': False, |
| 'client_test': False, |
| 'extension': "CHROMIUM_texture_mailbox", |
| 'chromium': True, |
| }, |
| 'GenValuebuffersCHROMIUM': { |
| 'type': 'GENn', |
| 'gl_test_func': 'glGenValuebuffersCHROMIUM', |
| 'resource_type': 'Valuebuffer', |
| 'resource_types': 'Valuebuffers', |
| 'unit_test': False, |
| 'extension': True, |
| 'chromium': True, |
| }, |
| 'DeleteValuebuffersCHROMIUM': { |
| 'type': 'DELn', |
| 'gl_test_func': 'glDeleteValuebuffersCHROMIUM', |
| 'resource_type': 'Valuebuffer', |
| 'resource_types': 'Valuebuffers', |
| 'unit_test': False, |
| 'extension': True, |
| 'chromium': True, |
| }, |
| 'IsValuebufferCHROMIUM': { |
| 'type': 'Is', |
| 'decoder_func': 'DoIsValuebufferCHROMIUM', |
| 'expectation': False, |
| 'extension': True, |
| 'chromium': True, |
| }, |
| 'BindValuebufferCHROMIUM': { |
| 'type': 'Bind', |
| 'decoder_func': 'DoBindValueBufferCHROMIUM', |
| 'gen_func': 'GenValueBuffersCHROMIUM', |
| 'unit_test': False, |
| 'extension': True, |
| 'chromium': True, |
| }, |
| 'SubscribeValueCHROMIUM': { |
| 'decoder_func': 'DoSubscribeValueCHROMIUM', |
| 'unit_test': False, |
| 'extension': True, |
| 'chromium': True, |
| }, |
| 'PopulateSubscribedValuesCHROMIUM': { |
| 'decoder_func': 'DoPopulateSubscribedValuesCHROMIUM', |
| 'unit_test': False, |
| 'extension': True, |
| 'chromium': True, |
| }, |
| 'UniformValuebufferCHROMIUM': { |
| 'decoder_func': 'DoUniformValueBufferCHROMIUM', |
| 'unit_test': False, |
| 'extension': True, |
| 'chromium': True, |
| }, |
| 'ClearStencil': { |
| 'type': 'StateSet', |
| 'state': 'ClearStencil', |
| }, |
| 'EnableFeatureCHROMIUM': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'decoder_func': 'DoEnableFeatureCHROMIUM', |
| 'expectation': False, |
| 'cmd_args': 'GLuint bucket_id, GLint* result', |
| 'result': ['GLint'], |
| 'extension': True, |
| 'chromium': True, |
| 'pepper_interface': 'ChromiumEnableFeature', |
| }, |
| 'CompileShader': {'decoder_func': 'DoCompileShader', 'unit_test': False}, |
| 'CompressedTexImage2D': { |
| 'type': 'Manual', |
| 'data_transfer_methods': ['bucket', 'shm'], |
| }, |
| 'CompressedTexSubImage2D': { |
| 'type': 'Data', |
| 'data_transfer_methods': ['bucket', 'shm'], |
| 'decoder_func': 'DoCompressedTexSubImage2D', |
| }, |
| 'CopyTexImage2D': { |
| 'decoder_func': 'DoCopyTexImage2D', |
| 'unit_test': False, |
| 'defer_reads': True, |
| }, |
| 'CopyTexSubImage2D': { |
| 'decoder_func': 'DoCopyTexSubImage2D', |
| 'defer_reads': True, |
| }, |
| 'CopyTexSubImage3D': { |
| 'defer_reads': True, |
| 'unsafe': True, |
| }, |
| 'CreateImageCHROMIUM': { |
| 'type': 'Manual', |
| 'cmd_args': |
| 'ClientBuffer buffer, GLsizei width, GLsizei height, ' |
| 'GLenum internalformat', |
| 'result': ['GLuint'], |
| 'client_test': False, |
| 'gen_cmd': False, |
| 'expectation': False, |
| 'extension': True, |
| 'chromium': True, |
| }, |
| 'DestroyImageCHROMIUM': { |
| 'type': 'Manual', |
| 'client_test': False, |
| 'gen_cmd': False, |
| 'extension': True, |
| 'chromium': True, |
| }, |
| 'CreateGpuMemoryBufferImageCHROMIUM': { |
| 'type': 'Manual', |
| 'cmd_args': |
| 'GLsizei width, GLsizei height, GLenum internalformat, GLenum usage', |
| 'result': ['GLuint'], |
| 'client_test': False, |
| 'gen_cmd': False, |
| 'expectation': False, |
| 'extension': True, |
| 'chromium': True, |
| }, |
| 'CreateProgram': { |
| 'type': 'Create', |
| 'client_test': False, |
| }, |
| 'CreateShader': { |
| 'type': 'Create', |
| 'client_test': False, |
| }, |
| 'BlendColor': { |
| 'type': 'StateSet', |
| 'state': 'BlendColor', |
| }, |
| 'BlendEquation': { |
| 'type': 'StateSetRGBAlpha', |
| 'state': 'BlendEquation', |
| 'valid_args': { |
| '0': 'GL_FUNC_SUBTRACT' |
| }, |
| }, |
| 'BlendEquationSeparate': { |
| 'type': 'StateSet', |
| 'state': 'BlendEquation', |
| 'valid_args': { |
| '0': 'GL_FUNC_SUBTRACT' |
| }, |
| }, |
| 'BlendFunc': { |
| 'type': 'StateSetRGBAlpha', |
| 'state': 'BlendFunc', |
| }, |
| 'BlendFuncSeparate': { |
| 'type': 'StateSet', |
| 'state': 'BlendFunc', |
| }, |
| 'BlendBarrierKHR': { |
| 'gl_test_func': 'glBlendBarrierKHR', |
| 'extension': True, |
| 'extension_flag': 'blend_equation_advanced', |
| 'client_test': False, |
| }, |
| 'SampleCoverage': {'decoder_func': 'DoSampleCoverage'}, |
| 'StencilFunc': { |
| 'type': 'StateSetFrontBack', |
| 'state': 'StencilFunc', |
| }, |
| 'StencilFuncSeparate': { |
| 'type': 'StateSetFrontBackSeparate', |
| 'state': 'StencilFunc', |
| }, |
| 'StencilOp': { |
| 'type': 'StateSetFrontBack', |
| 'state': 'StencilOp', |
| 'valid_args': { |
| '1': 'GL_INCR' |
| }, |
| }, |
| 'StencilOpSeparate': { |
| 'type': 'StateSetFrontBackSeparate', |
| 'state': 'StencilOp', |
| 'valid_args': { |
| '1': 'GL_INCR' |
| }, |
| }, |
| 'Hint': { |
| 'type': 'StateSetNamedParameter', |
| 'state': 'Hint', |
| }, |
| 'CullFace': {'type': 'StateSet', 'state': 'CullFace'}, |
| 'FrontFace': {'type': 'StateSet', 'state': 'FrontFace'}, |
| 'DepthFunc': {'type': 'StateSet', 'state': 'DepthFunc'}, |
| 'LineWidth': { |
| 'type': 'StateSet', |
| 'state': 'LineWidth', |
| 'valid_args': { |
| '0': '0.5f' |
| }, |
| }, |
| 'PolygonOffset': { |
| 'type': 'StateSet', |
| 'state': 'PolygonOffset', |
| }, |
| 'DeleteBuffers': { |
| 'type': 'DELn', |
| 'gl_test_func': 'glDeleteBuffersARB', |
| 'resource_type': 'Buffer', |
| 'resource_types': 'Buffers', |
| }, |
| 'DeleteFramebuffers': { |
| 'type': 'DELn', |
| 'gl_test_func': 'glDeleteFramebuffersEXT', |
| 'resource_type': 'Framebuffer', |
| 'resource_types': 'Framebuffers', |
| }, |
| 'DeleteProgram': { 'type': 'Delete' }, |
| 'DeleteRenderbuffers': { |
| 'type': 'DELn', |
| 'gl_test_func': 'glDeleteRenderbuffersEXT', |
| 'resource_type': 'Renderbuffer', |
| 'resource_types': 'Renderbuffers', |
| }, |
| 'DeleteSamplers': { |
| 'type': 'DELn', |
| 'resource_type': 'Sampler', |
| 'resource_types': 'Samplers', |
| 'unsafe': True, |
| }, |
| 'DeleteShader': { 'type': 'Delete' }, |
| 'DeleteSync': { |
| 'type': 'Delete', |
| 'cmd_args': 'GLuint sync', |
| 'resource_type': 'Sync', |
| 'unsafe': True, |
| }, |
| 'DeleteTextures': { |
| 'type': 'DELn', |
| 'resource_type': 'Texture', |
| 'resource_types': 'Textures', |
| }, |
| 'DeleteTransformFeedbacks': { |
| 'type': 'DELn', |
| 'resource_type': 'TransformFeedback', |
| 'resource_types': 'TransformFeedbacks', |
| 'unsafe': True, |
| }, |
| 'DepthRangef': { |
| 'decoder_func': 'DoDepthRangef', |
| 'gl_test_func': 'glDepthRange', |
| }, |
| 'DepthMask': { |
| 'type': 'StateSet', |
| 'state': 'DepthMask', |
| 'no_gl': True, |
| 'expectation': False, |
| }, |
| 'DetachShader': {'decoder_func': 'DoDetachShader'}, |
| 'Disable': { |
| 'decoder_func': 'DoDisable', |
| 'impl_func': False, |
| 'client_test': False, |
| }, |
| 'DisableVertexAttribArray': { |
| 'decoder_func': 'DoDisableVertexAttribArray', |
| 'impl_decl': False, |
| }, |
| 'DrawArrays': { |
| 'type': 'Manual', |
| 'cmd_args': 'GLenumDrawMode mode, GLint first, GLsizei count', |
| 'defer_draws': True, |
| 'trace_level': 2, |
| }, |
| 'DrawElements': { |
| 'type': 'Manual', |
| 'cmd_args': 'GLenumDrawMode mode, GLsizei count, ' |
| 'GLenumIndexType type, GLuint index_offset', |
| 'client_test': False, |
| 'defer_draws': True, |
| 'trace_level': 2, |
| }, |
| 'DrawRangeElements': { |
| 'type': 'Manual', |
| 'gen_cmd': 'False', |
| 'unsafe': True, |
| }, |
| 'Enable': { |
| 'decoder_func': 'DoEnable', |
| 'impl_func': False, |
| 'client_test': False, |
| }, |
| 'EnableVertexAttribArray': { |
| 'decoder_func': 'DoEnableVertexAttribArray', |
| 'impl_decl': False, |
| }, |
| 'FenceSync': { |
| 'type': 'Create', |
| 'client_test': False, |
| 'unsafe': True, |
| }, |
| 'Finish': { |
| 'impl_func': False, |
| 'client_test': False, |
| 'decoder_func': 'DoFinish', |
| 'defer_reads': True, |
| }, |
| 'Flush': { |
| 'impl_func': False, |
| 'decoder_func': 'DoFlush', |
| }, |
| 'FramebufferRenderbuffer': { |
| 'decoder_func': 'DoFramebufferRenderbuffer', |
| 'gl_test_func': 'glFramebufferRenderbufferEXT', |
| }, |
| 'FramebufferTexture2D': { |
| 'decoder_func': 'DoFramebufferTexture2D', |
| 'gl_test_func': 'glFramebufferTexture2DEXT', |
| 'trace_level': 1, |
| }, |
| 'FramebufferTexture2DMultisampleEXT': { |
| 'decoder_func': 'DoFramebufferTexture2DMultisample', |
| 'gl_test_func': 'glFramebufferTexture2DMultisampleEXT', |
| 'expectation': False, |
| 'unit_test': False, |
| 'extension_flag': 'multisampled_render_to_texture', |
| 'trace_level': 1, |
| }, |
| 'FramebufferTextureLayer': { |
| 'decoder_func': 'DoFramebufferTextureLayer', |
| 'unsafe': True, |
| }, |
| 'GenerateMipmap': { |
| 'decoder_func': 'DoGenerateMipmap', |
| 'gl_test_func': 'glGenerateMipmapEXT', |
| }, |
| 'GenBuffers': { |
| 'type': 'GENn', |
| 'gl_test_func': 'glGenBuffersARB', |
| 'resource_type': 'Buffer', |
| 'resource_types': 'Buffers', |
| }, |
| 'GenMailboxCHROMIUM': { |
| 'type': 'HandWritten', |
| 'impl_func': False, |
| 'extension': "CHROMIUM_texture_mailbox", |
| 'chromium': True, |
| }, |
| 'GenFramebuffers': { |
| 'type': 'GENn', |
| 'gl_test_func': 'glGenFramebuffersEXT', |
| 'resource_type': 'Framebuffer', |
| 'resource_types': 'Framebuffers', |
| }, |
| 'GenRenderbuffers': { |
| 'type': 'GENn', 'gl_test_func': 'glGenRenderbuffersEXT', |
| 'resource_type': 'Renderbuffer', |
| 'resource_types': 'Renderbuffers', |
| }, |
| 'GenSamplers': { |
| 'type': 'GENn', |
| 'gl_test_func': 'glGenSamplers', |
| 'resource_type': 'Sampler', |
| 'resource_types': 'Samplers', |
| 'unsafe': True, |
| }, |
| 'GenTextures': { |
| 'type': 'GENn', |
| 'gl_test_func': 'glGenTextures', |
| 'resource_type': 'Texture', |
| 'resource_types': 'Textures', |
| }, |
| 'GenTransformFeedbacks': { |
| 'type': 'GENn', |
| 'gl_test_func': 'glGenTransformFeedbacks', |
| 'resource_type': 'TransformFeedback', |
| 'resource_types': 'TransformFeedbacks', |
| 'unsafe': True, |
| }, |
| 'GetActiveAttrib': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'cmd_args': |
| 'GLidProgram program, GLuint index, uint32_t name_bucket_id, ' |
| 'void* result', |
| 'result': [ |
| 'int32_t success', |
| 'int32_t size', |
| 'uint32_t type', |
| ], |
| }, |
| 'GetActiveUniform': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'cmd_args': |
| 'GLidProgram program, GLuint index, uint32_t name_bucket_id, ' |
| 'void* result', |
| 'result': [ |
| 'int32_t success', |
| 'int32_t size', |
| 'uint32_t type', |
| ], |
| }, |
| 'GetActiveUniformBlockiv': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'result': ['SizedResult<GLint>'], |
| 'unsafe': True, |
| }, |
| 'GetActiveUniformBlockName': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'cmd_args': |
| 'GLidProgram program, GLuint index, uint32_t name_bucket_id, ' |
| 'void* result', |
| 'result': ['int32_t'], |
| 'unsafe': True, |
| }, |
| 'GetActiveUniformsiv': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'cmd_args': |
| 'GLidProgram program, uint32_t indices_bucket_id, GLenum pname, ' |
| 'GLint* params', |
| 'result': ['SizedResult<GLint>'], |
| 'unsafe': True, |
| }, |
| 'GetAttachedShaders': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'cmd_args': 'GLidProgram program, void* result, uint32_t result_size', |
| 'result': ['SizedResult<GLuint>'], |
| }, |
| 'GetAttribLocation': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'cmd_args': |
| 'GLidProgram program, uint32_t name_bucket_id, GLint* location', |
| 'result': ['GLint'], |
| 'error_return': -1, |
| }, |
| 'GetFragDataLocation': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'cmd_args': |
| 'GLidProgram program, uint32_t name_bucket_id, GLint* location', |
| 'result': ['GLint'], |
| 'error_return': -1, |
| 'unsafe': True, |
| }, |
| 'GetBooleanv': { |
| 'type': 'GETn', |
| 'result': ['SizedResult<GLboolean>'], |
| 'decoder_func': 'DoGetBooleanv', |
| 'gl_test_func': 'glGetBooleanv', |
| }, |
| 'GetBufferParameteriv': { |
| 'type': 'GETn', |
| 'result': ['SizedResult<GLint>'], |
| 'decoder_func': 'DoGetBufferParameteriv', |
| 'expectation': False, |
| 'shadowed': True, |
| }, |
| 'GetError': { |
| 'type': 'Is', |
| 'decoder_func': 'GetErrorState()->GetGLError', |
| 'impl_func': False, |
| 'result': ['GLenum'], |
| 'client_test': False, |
| }, |
| 'GetFloatv': { |
| 'type': 'GETn', |
| 'result': ['SizedResult<GLfloat>'], |
| 'decoder_func': 'DoGetFloatv', |
| 'gl_test_func': 'glGetFloatv', |
| }, |
| 'GetFramebufferAttachmentParameteriv': { |
| 'type': 'GETn', |
| 'decoder_func': 'DoGetFramebufferAttachmentParameteriv', |
| 'gl_test_func': 'glGetFramebufferAttachmentParameterivEXT', |
| 'result': ['SizedResult<GLint>'], |
| }, |
| 'GetIntegerv': { |
| 'type': 'GETn', |
| 'result': ['SizedResult<GLint>'], |
| 'decoder_func': 'DoGetIntegerv', |
| 'client_test': False, |
| }, |
| 'GetInternalformativ': { |
| 'type': 'GETn', |
| 'result': ['SizedResult<GLint>'], |
| 'unsafe': True, |
| }, |
| 'GetMaxValueInBufferCHROMIUM': { |
| 'type': 'Is', |
| 'decoder_func': 'DoGetMaxValueInBufferCHROMIUM', |
| 'result': ['GLuint'], |
| 'unit_test': False, |
| 'client_test': False, |
| 'extension': True, |
| 'chromium': True, |
| 'impl_func': False, |
| }, |
| 'GetProgramiv': { |
| 'type': 'GETn', |
| 'decoder_func': 'DoGetProgramiv', |
| 'result': ['SizedResult<GLint>'], |
| 'expectation': False, |
| }, |
| 'GetProgramInfoCHROMIUM': { |
| 'type': 'Custom', |
| 'expectation': False, |
| 'impl_func': False, |
| 'extension': True, |
| 'chromium': True, |
| 'client_test': False, |
| 'cmd_args': 'GLidProgram program, uint32_t bucket_id', |
| 'result': [ |
| 'uint32_t link_status', |
| 'uint32_t num_attribs', |
| 'uint32_t num_uniforms', |
| ], |
| }, |
| 'GetProgramInfoLog': { |
| 'type': 'STRn', |
| 'expectation': False, |
| }, |
| 'GetRenderbufferParameteriv': { |
| 'type': 'GETn', |
| 'decoder_func': 'DoGetRenderbufferParameteriv', |
| 'gl_test_func': 'glGetRenderbufferParameterivEXT', |
| 'result': ['SizedResult<GLint>'], |
| }, |
| 'GetSamplerParameterfv': { |
| 'type': 'GETn', |
| 'result': ['SizedResult<GLfloat>'], |
| 'id_mapping': [ 'Sampler' ], |
| 'unsafe': True, |
| }, |
| 'GetSamplerParameteriv': { |
| 'type': 'GETn', |
| 'result': ['SizedResult<GLint>'], |
| 'id_mapping': [ 'Sampler' ], |
| 'unsafe': True, |
| }, |
| 'GetShaderiv': { |
| 'type': 'GETn', |
| 'decoder_func': 'DoGetShaderiv', |
| 'result': ['SizedResult<GLint>'], |
| }, |
| 'GetShaderInfoLog': { |
| 'type': 'STRn', |
| 'get_len_func': 'glGetShaderiv', |
| 'get_len_enum': 'GL_INFO_LOG_LENGTH', |
| 'unit_test': False, |
| }, |
| 'GetShaderPrecisionFormat': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'cmd_args': |
| 'GLenumShaderType shadertype, GLenumShaderPrecision precisiontype, ' |
| 'void* result', |
| 'result': [ |
| 'int32_t success', |
| 'int32_t min_range', |
| 'int32_t max_range', |
| 'int32_t precision', |
| ], |
| }, |
| 'GetShaderSource': { |
| 'type': 'STRn', |
| 'get_len_func': 'DoGetShaderiv', |
| 'get_len_enum': 'GL_SHADER_SOURCE_LENGTH', |
| 'unit_test': False, |
| 'client_test': False, |
| }, |
| 'GetString': { |
| 'type': 'Custom', |
| 'client_test': False, |
| 'cmd_args': 'GLenumStringType name, uint32_t bucket_id', |
| }, |
| 'GetSynciv': { |
| 'type': 'GETn', |
| 'cmd_args': 'GLuint sync, GLenumSyncParameter pname, void* values', |
| 'result': ['SizedResult<GLint>'], |
| 'id_mapping': ['Sync'], |
| 'unsafe': True, |
| }, |
| 'GetTexParameterfv': { |
| 'type': 'GETn', |
| 'decoder_func': 'DoGetTexParameterfv', |
| 'result': ['SizedResult<GLfloat>'] |
| }, |
| 'GetTexParameteriv': { |
| 'type': 'GETn', |
| 'decoder_func': 'DoGetTexParameteriv', |
| 'result': ['SizedResult<GLint>'] |
| }, |
| 'GetTranslatedShaderSourceANGLE': { |
| 'type': 'STRn', |
| 'get_len_func': 'DoGetShaderiv', |
| 'get_len_enum': 'GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE', |
| 'unit_test': False, |
| 'extension': True, |
| }, |
| 'GetUniformBlockIndex': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'cmd_args': |
| 'GLidProgram program, uint32_t name_bucket_id, GLuint* index', |
| 'result': ['GLuint'], |
| 'error_return': 'GL_INVALID_INDEX', |
| 'unsafe': True, |
| }, |
| 'GetUniformBlocksCHROMIUM': { |
| 'type': 'Custom', |
| 'expectation': False, |
| 'impl_func': False, |
| 'extension': True, |
| 'chromium': True, |
| 'client_test': False, |
| 'cmd_args': 'GLidProgram program, uint32_t bucket_id', |
| 'result': ['uint32_t'], |
| 'unsafe': True, |
| }, |
| 'GetUniformsES3CHROMIUM': { |
| 'type': 'Custom', |
| 'expectation': False, |
| 'impl_func': False, |
| 'extension': True, |
| 'chromium': True, |
| 'client_test': False, |
| 'cmd_args': 'GLidProgram program, uint32_t bucket_id', |
| 'result': ['uint32_t'], |
| 'unsafe': True, |
| }, |
| 'GetTransformFeedbackVarying': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'cmd_args': |
| 'GLidProgram program, GLuint index, uint32_t name_bucket_id, ' |
| 'void* result', |
| 'result': [ |
| 'int32_t success', |
| 'int32_t size', |
| 'uint32_t type', |
| ], |
| 'unsafe': True, |
| }, |
| 'GetTransformFeedbackVaryingsCHROMIUM': { |
| 'type': 'Custom', |
| 'expectation': False, |
| 'impl_func': False, |
| 'extension': True, |
| 'chromium': True, |
| 'client_test': False, |
| 'cmd_args': 'GLidProgram program, uint32_t bucket_id', |
| 'result': ['uint32_t'], |
| 'unsafe': True, |
| }, |
| 'GetUniformfv': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'result': ['SizedResult<GLfloat>'], |
| }, |
| 'GetUniformiv': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'result': ['SizedResult<GLint>'], |
| }, |
| 'GetUniformIndices': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'result': ['SizedResult<GLuint>'], |
| 'cmd_args': 'GLidProgram program, uint32_t names_bucket_id, ' |
| 'GLuint* indices', |
| 'unsafe': True, |
| }, |
| 'GetUniformLocation': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'cmd_args': |
| 'GLidProgram program, uint32_t name_bucket_id, GLint* location', |
| 'result': ['GLint'], |
| 'error_return': -1, # http://www.opengl.org/sdk/docs/man/xhtml/glGetUniformLocation.xml |
| }, |
| 'GetVertexAttribfv': { |
| 'type': 'GETn', |
| 'result': ['SizedResult<GLfloat>'], |
| 'impl_decl': False, |
| 'decoder_func': 'DoGetVertexAttribfv', |
| 'expectation': False, |
| 'client_test': False, |
| }, |
| 'GetVertexAttribiv': { |
| 'type': 'GETn', |
| 'result': ['SizedResult<GLint>'], |
| 'impl_decl': False, |
| 'decoder_func': 'DoGetVertexAttribiv', |
| 'expectation': False, |
| 'client_test': False, |
| }, |
| 'GetVertexAttribPointerv': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'result': ['SizedResult<GLuint>'], |
| 'client_test': False, |
| }, |
| 'InvalidateFramebuffer': { |
| 'type': 'PUTn', |
| 'count': 1, |
| 'client_test': False, |
| 'unit_test': False, |
| 'unsafe': True, |
| }, |
| 'InvalidateSubFramebuffer': { |
| 'type': 'PUTn', |
| 'count': 1, |
| 'client_test': False, |
| 'unit_test': False, |
| 'unsafe': True, |
| }, |
| 'IsBuffer': { |
| 'type': 'Is', |
| 'decoder_func': 'DoIsBuffer', |
| 'expectation': False, |
| }, |
| 'IsEnabled': { |
| 'type': 'Is', |
| 'decoder_func': 'DoIsEnabled', |
| 'client_test': False, |
| 'impl_func': False, |
| 'expectation': False, |
| }, |
| 'IsFramebuffer': { |
| 'type': 'Is', |
| 'decoder_func': 'DoIsFramebuffer', |
| 'expectation': False, |
| }, |
| 'IsProgram': { |
| 'type': 'Is', |
| 'decoder_func': 'DoIsProgram', |
| 'expectation': False, |
| }, |
| 'IsRenderbuffer': { |
| 'type': 'Is', |
| 'decoder_func': 'DoIsRenderbuffer', |
| 'expectation': False, |
| }, |
| 'IsShader': { |
| 'type': 'Is', |
| 'decoder_func': 'DoIsShader', |
| 'expectation': False, |
| }, |
| 'IsSampler': { |
| 'type': 'Is', |
| 'id_mapping': [ 'Sampler' ], |
| 'expectation': False, |
| 'unsafe': True, |
| }, |
| 'IsSync': { |
| 'type': 'Is', |
| 'id_mapping': [ 'Sync' ], |
| 'cmd_args': 'GLuint sync', |
| 'expectation': False, |
| 'unsafe': True, |
| }, |
| 'IsTexture': { |
| 'type': 'Is', |
| 'decoder_func': 'DoIsTexture', |
| 'expectation': False, |
| }, |
| 'IsTransformFeedback': { |
| 'type': 'Is', |
| 'id_mapping': [ 'TransformFeedback' ], |
| 'expectation': False, |
| 'unsafe': True, |
| }, |
| 'LinkProgram': { |
| 'decoder_func': 'DoLinkProgram', |
| 'impl_func': False, |
| }, |
| 'MapBufferCHROMIUM': { |
| 'gen_cmd': False, |
| 'extension': True, |
| 'chromium': True, |
| 'client_test': False, |
| }, |
| 'MapBufferSubDataCHROMIUM': { |
| 'gen_cmd': False, |
| 'extension': True, |
| 'chromium': True, |
| 'client_test': False, |
| 'pepper_interface': 'ChromiumMapSub', |
| }, |
| 'MapTexSubImage2DCHROMIUM': { |
| 'gen_cmd': False, |
| 'extension': True, |
| 'chromium': True, |
| 'client_test': False, |
| 'pepper_interface': 'ChromiumMapSub', |
| }, |
| 'MapBufferRange': { |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'cmd_args': 'GLenumBufferTarget target, GLintptrNotNegative offset, ' |
| 'GLsizeiptr size, GLbitfieldMapBufferAccess access, ' |
| 'uint32_t data_shm_id, uint32_t data_shm_offset, ' |
| 'uint32_t result_shm_id, uint32_t result_shm_offset', |
| 'unsafe': True, |
| 'result': ['uint32_t'], |
| }, |
| 'PauseTransformFeedback': { |
| 'unsafe': True, |
| }, |
| 'PixelStorei': {'type': 'Manual'}, |
| 'PostSubBufferCHROMIUM': { |
| 'type': 'Custom', |
| 'impl_func': False, |
| 'unit_test': False, |
| 'client_test': False, |
| 'extension': True, |
| 'chromium': True, |
| }, |
| 'ProduceTextureCHROMIUM': { |
| 'decoder_func': 'DoProduceTextureCHROMIUM', |
| 'impl_func': False, |
| 'type': 'PUT', |
| 'count': 64, # GL_MAILBOX_SIZE_CHROMIUM |
| 'unit_test': False, |
| 'client_test': False, |
| 'extension': "CHROMIUM_texture_mailbox", |
| 'chromium': True, |
| 'trace_level': 1, |
| }, |
| 'ProduceTextureDirectCHROMIUM': { |
| 'decoder_func': 'DoProduceTextureDirectCHROMIUM', |
| 'impl_func': False, |
| 'type': 'PUT', |
| 'count': 64, # GL_MAILBOX_SIZE_CHROMIUM |
| 'unit_test': False, |
| 'client_test': False, |
| 'extension': "CHROMIUM_texture_mailbox", |
| 'chromium': True, |
| 'trace_level': 1, |
| }, |
| 'RenderbufferStorage': { |
| 'decoder_func': 'DoRenderbufferStorage', |
| 'gl_test_func': 'glRenderbufferStorageEXT', |
| 'expectation': False, |
| }, |
| 'RenderbufferStorageMultisampleCHROMIUM': { |
| 'cmd_comment': |
| '// GL_CHROMIUM_framebuffer_multisample\n', |
| 'decoder_func': 'DoRenderbufferStorageMultisampleCHROMIUM', |
| 'gl_test_func': 'glRenderbufferStorageMultisampleCHROMIUM', |
| 'expectation': False, |
| 'unit_test': False, |
| 'extension_flag': 'chromium_framebuffer_multisample', |
| 'pepper_interface': 'FramebufferMultisample', |
| 'pepper_name': 'RenderbufferStorageMultisampleEXT', |
| }, |
| 'RenderbufferStorageMultisampleEXT': { |
| 'cmd_comment': |
| '// GL_EXT_multisampled_render_to_texture\n', |
| 'decoder_func': 'DoRenderbufferStorageMultisampleEXT', |
| 'gl_test_func': 'glRenderbufferStorageMultisampleEXT', |
| 'expectation': False, |
| 'unit_test': False, |
| 'extension_flag': 'multisampled_render_to_texture', |
| }, |
| 'ReadBuffer': { |
| 'unsafe': True, |
| }, |
| 'ReadPixels': { |
| 'cmd_comment': |
| '// ReadPixels has the result separated from the pixel buffer so that\n' |
| '// it is easier to specify the result going to some specific place\n' |
| '// that exactly fits the rectangle of pixels.\n', |
| 'type': 'Custom', |
| 'data_transfer_methods': ['shm'], |
| 'impl_func': False, |
| 'client_test': False, |
| 'cmd_args': |
| 'GLint x, GLint y, GLsizei width, GLsizei height, ' |
| 'GLenumReadPixelFormat format, GLenumReadPixelType type, ' |
| 'uint32_t pixels_shm_id, uint32_t pixels_shm_offset, ' |
| 'uint32_t result_shm_id, uint32_t result_shm_offset, ' |
| 'GLboolean async', |
| 'result': ['uint32_t'], |
| 'defer_reads': True, |
| }, |
| 'ReleaseShaderCompiler': { |
| 'decoder_func': 'DoReleaseShaderCompiler', |
| 'unit_test': False, |
| }, |
| 'ResumeTransformFeedback': { |
| 'unsafe': True, |
| }, |
| 'SamplerParameterf': { |
| 'valid_args': { |
| '2': 'GL_NEAREST' |
| }, |
| 'id_mapping': [ 'Sampler' ], |
| 'unsafe': True, |
| }, |
| 'SamplerParameterfv': { |
| 'type': 'PUT', |
| 'data_value': 'GL_NEAREST', |
| 'count': 1, |
| 'gl_test_func': 'glSamplerParameterf', |
| 'decoder_func': 'DoSamplerParameterfv', |
| 'first_element_only': True, |
| 'id_mapping': [ 'Sampler' ], |
| 'unsafe': True, |
| }, |
| 'SamplerParameteri': { |
| 'valid_args': { |
| '2': 'GL_NEAREST' |
| }, |
| 'id_mapping': [ 'Sampler' ], |
| 'unsafe': True, |
| }, |
| 'SamplerParameteriv': { |
| 'type': 'PUT', |
| 'data_value': 'GL_NEAREST', |
| 'count': 1, |
| 'gl_test_func': 'glSamplerParameteri', |
| 'decoder_func': 'DoSamplerParameteriv', |
| 'first_element_only': True, |
| 'unsafe': True, |
| }, |
| 'ShaderBinary': { |
| 'type': 'Custom', |
| 'client_test': False, |
| }, |
| 'ShaderSource': { |
| 'type': 'PUTSTR', |
| 'decoder_func': 'DoShaderSource', |
| 'expectation': False, |
| 'data_transfer_methods': ['bucket'], |
| 'cmd_args': |
| 'GLuint shader, const char** str', |
| 'pepper_args': |
| 'GLuint shader, GLsizei count, const char** str, const GLint* length', |
| }, |
| 'StencilMask': { |
| 'type': 'StateSetFrontBack', |
| 'state': 'StencilMask', |
| 'no_gl': True, |
| 'expectation': False, |
| }, |
| 'StencilMaskSeparate': { |
| 'type': 'StateSetFrontBackSeparate', |
| 'state': 'StencilMask', |
| 'no_gl': True, |
| 'expectation': False, |
| }, |
| 'SwapBuffers': { |
| 'impl_func': False, |
| 'decoder_func': 'DoSwapBuffers', |
| 'unit_test': False, |
| 'client_test': False, |
| 'extension': True, |
| 'trace_level': 1, |
| }, |
| 'SwapInterval': { |
| 'impl_func': False, |
| 'decoder_func': 'DoSwapInterval', |
| 'unit_test': False, |
| 'client_test': False, |
| 'extension': True, |
| 'trace_level': 1, |
| }, |
| 'TexImage2D': { |
| 'type': 'Manual', |
| 'data_transfer_methods': ['shm'], |
| 'client_test': False, |
| }, |
| 'TexImage3D': { |
| 'type': 'Manual', |
| 'data_transfer_methods': ['shm'], |
| 'client_test': False, |
| 'unsafe': True, |
| }, |
| 'TexParameterf': { |
| 'decoder_func': 'DoTexParameterf', |
| 'valid_args': { |
| '2': 'GL_NEAREST' |
| }, |
| }, |
| 'TexParameteri': { |
| 'decoder_func': 'DoTexParameteri', |
| 'valid_args': { |
| '2': 'GL_NEAREST' |
| }, |
| }, |
| 'TexParameterfv': { |
| 'type': 'PUT', |
| 'data_value': 'GL_NEAREST', |
| 'count': 1, |
| 'decoder_func': 'DoTexParameterfv', |
| 'gl_test_func': 'glTexParameterf', |
| 'first_element_only': True, |
| }, |
| 'TexParameteriv': { |
| 'type': 'PUT', |
| 'data_value': 'GL_NEAREST', |
| 'count': 1, |
| 'decoder_func': 'DoTexParameteriv', |
| 'gl_test_func': 'glTexParameteri', |
| 'first_element_only': True, |
| }, |
| 'TexStorage3D': { |
| 'unsafe': True, |
| }, |
| 'TexSubImage2D': { |
| 'type': 'Manual', |
| 'data_transfer_methods': ['shm'], |
| 'client_test': False, |
| 'cmd_args': 'GLenumTextureTarget target, GLint level, ' |
| 'GLint xoffset, GLint yoffset, ' |
| 'GLsizei width, GLsizei height, ' |
| 'GLenumTextureFormat format, GLenumPixelType type, ' |
| 'const void* pixels, GLboolean internal' |
| }, |
| 'TexSubImage3D': { |
| 'type': 'Manual', |
| 'data_transfer_methods': ['shm'], |
| 'client_test': False, |
| 'cmd_args': 'GLenumTextureTarget target, GLint level, ' |
| 'GLint xoffset, GLint yoffset, GLint zoffset, ' |
| 'GLsizei width, GLsizei height, GLsizei depth, ' |
| 'GLenumTextureFormat format, GLenumPixelType type, ' |
| 'const void* pixels, GLboolean internal', |
| 'unsafe': True, |
| }, |
| 'TransformFeedbackVaryings': { |
| 'type': 'PUTSTR', |
| 'data_transfer_methods': ['bucket'], |
| 'decoder_func': 'DoTransformFeedbackVaryings', |
| 'cmd_args': |
| 'GLuint program, const char** varyings, GLenum buffermode', |
| 'unsafe': True, |
| }, |
| 'Uniform1f': {'type': 'PUTXn', 'count': 1}, |
| 'Uniform1fv': { |
| 'type': 'PUTn', |
| 'count': 1, |
| 'decoder_func': 'DoUniform1fv', |
| }, |
| 'Uniform1i': {'decoder_func': 'DoUniform1i', 'unit_test': False}, |
| 'Uniform1iv': { |
| 'type': 'PUTn', |
| 'count': 1, |
| 'decoder_func': 'DoUniform1iv', |
| 'unit_test': False, |
| }, |
| 'Uniform1ui': { |
| 'type': 'PUTXn', |
| 'count': 1, |
| 'unsafe': True, |
| }, |
| 'Uniform1uiv': { |
| 'type': 'PUTn', |
| 'count': 1, |
| 'unsafe': True, |
| }, |
| 'Uniform2i': {'type': 'PUTXn', 'count': 2}, |
| 'Uniform2f': {'type': 'PUTXn', 'count': 2}, |
| 'Uniform2fv': { |
| 'type': 'PUTn', |
| 'count': 2, |
| 'decoder_func': 'DoUniform2fv', |
| }, |
| 'Uniform2iv': { |
| 'type': 'PUTn', |
| 'count': 2, |
| 'decoder_func': 'DoUniform2iv', |
| }, |
| 'Uniform2ui': { |
| 'type': 'PUTXn', |
| 'count': 2, |
| 'unsafe': True, |
| }, |
| 'Uniform2uiv': { |
| 'type': 'PUTn', |
| 'count': 2, |
| 'unsafe': True, |
| }, |
| 'Uniform3i': {'type': 'PUTXn', 'count': 3}, |
| 'Uniform3f': {'type': 'PUTXn', 'count': 3}, |
| 'Uniform3fv': { |
| 'type': 'PUTn', |
| 'count': 3, |
| 'decoder_func': 'DoUniform3fv', |
| }, |
| 'Uniform3iv': { |
| 'type': 'PUTn', |
| 'count': 3, |
| 'decoder_func': 'DoUniform3iv', |
| }, |
| 'Uniform3ui': { |
| 'type': 'PUTXn', |
| 'count': 3, |
| 'unsafe': True, |
| }, |
| 'Uniform3uiv': { |
| 'type': 'PUTn', |
| 'count': 3, |
| 'unsafe': True, |
| }, |
| 'Uniform4i': {'type': 'PUTXn', 'count': 4}, |
| 'Uniform4f': {'type': 'PUTXn', 'count': 4}, |
| 'Uniform4fv': { |
| 'type': 'PUTn', |
| 'count': 4, |
| 'decoder_func': 'DoUniform4fv', |
| }, |
| 'Uniform4iv': { |
| 'type': 'PUTn', |
| 'count': 4, |
| 'decoder_func': 'DoUniform4iv', |
| }, |
| 'Uniform4ui': { |
| 'type': 'PUTXn', |
| 'count': 4, |
| 'unsafe': True, |
| }, |
| 'Uniform4uiv': { |
| 'type': 'PUTn', |
| 'count': 4, |
| 'unsafe': True, |
| }, |
| 'UniformMatrix2fv': { |
| 'type': 'PUTn', |
| 'count': 4, |
| 'decoder_func': 'DoUniformMatrix2fv', |
| }, |
| 'UniformMatrix2x3fv': { |
| 'type': 'PUTn', |
| 'count': 6, |
| 'unsafe': True, |
| }, |
| 'UniformMatrix2x4fv': { |
| 'type': 'PUTn', |
| 'count': 8, |
| 'unsafe': True, |
| }, |
| 'UniformMatrix3fv': { |
| 'type': 'PUTn', |
| 'count': 9, |
| 'decoder_func': 'DoUniformMatrix3fv', |
| }, |
| 'UniformMatrix3x2fv': { |
| 'type': 'PUTn', |
| 'count': 6, |
| 'unsafe': True, |
| }, |
| 'UniformMatrix3x4fv': { |
| 'type': 'PUTn', |
| 'count': 12, |
| 'unsafe': True, |
| }, |
| 'UniformMatrix4fv': { |
| 'type': 'PUTn', |
| 'count': 16, |
| 'decoder_func': 'DoUniformMatrix4fv', |
| }, |
| 'UniformMatrix4x2fv': { |
| 'type': 'PUTn', |
| 'count': 8, |
| 'unsafe': True, |
| }, |
| 'UniformMatrix4x3fv': { |
| 'type': 'PUTn', |
| 'count': 12, |
| 'unsafe': True, |
| }, |
| 'UniformBlockBinding': { |
| 'type': 'Custom', |
| 'impl_func': False, |
| 'unsafe': True, |
| }, |
| 'UnmapBufferCHROMIUM': { |
| 'gen_cmd': False, |
| 'extension': True, |
| 'chromium': True, |
| 'client_test': False, |
| }, |
| 'UnmapBufferSubDataCHROMIUM': { |
| 'gen_cmd': False, |
| 'extension': True, |
| 'chromium': True, |
| 'client_test': False, |
| 'pepper_interface': 'ChromiumMapSub', |
| }, |
| 'UnmapBuffer': { |
| 'type': 'Custom', |
| 'unsafe': True, |
| }, |
| 'UnmapTexSubImage2DCHROMIUM': { |
| 'gen_cmd': False, |
| 'extension': True, |
| 'chromium': True, |
| 'client_test': False, |
| 'pepper_interface': 'ChromiumMapSub', |
| }, |
| 'UseProgram': { |
| 'type': 'Bind', |
| 'decoder_func': 'DoUseProgram', |
| }, |
| 'ValidateProgram': {'decoder_func': 'DoValidateProgram'}, |
| 'VertexAttrib1f': {'decoder_func': 'DoVertexAttrib1f'}, |
| 'VertexAttrib1fv': { |
| 'type': 'PUT', |
| 'count': 1, |
| 'decoder_func': 'DoVertexAttrib1fv', |
| }, |
| 'VertexAttrib2f': {'decoder_func': 'DoVertexAttrib2f'}, |
| 'VertexAttrib2fv': { |
| 'type': 'PUT', |
| 'count': 2, |
| 'decoder_func': 'DoVertexAttrib2fv', |
| }, |
| 'VertexAttrib3f': {'decoder_func': 'DoVertexAttrib3f'}, |
| 'VertexAttrib3fv': { |
| 'type': 'PUT', |
| 'count': 3, |
| 'decoder_func': 'DoVertexAttrib3fv', |
| }, |
| 'VertexAttrib4f': {'decoder_func': 'DoVertexAttrib4f'}, |
| 'VertexAttrib4fv': { |
| 'type': 'PUT', |
| 'count': 4, |
| 'decoder_func': 'DoVertexAttrib4fv', |
| }, |
| 'VertexAttribI4i': { |
| 'unsafe': True, |
| }, |
| 'VertexAttribI4iv': { |
| 'type': 'PUT', |
| 'count': 4, |
| 'unsafe': True, |
| }, |
| 'VertexAttribI4ui': { |
| 'unsafe': True, |
| }, |
| 'VertexAttribI4uiv': { |
| 'type': 'PUT', |
| 'count': 4, |
| 'unsafe': True, |
| }, |
| 'VertexAttribIPointer': { |
| 'type': 'Manual', |
| 'cmd_args': 'GLuint indx, GLintVertexAttribSize size, ' |
| 'GLenumVertexAttribType type, GLsizei stride, ' |
| 'GLuint offset', |
| 'client_test': False, |
| 'unsafe': True, |
| }, |
| 'VertexAttribPointer': { |
| 'type': 'Manual', |
| |