| Index: gpu/command_buffer/client/gles2_implementation.cc
|
| diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc
|
| index 1327826e22ad1a0380d6ba0c2a02087ebf870ac1..766f5226a2c39f4eedb322f9a987bc9e80e5db9a 100644
|
| --- a/gpu/command_buffer/client/gles2_implementation.cc
|
| +++ b/gpu/command_buffer/client/gles2_implementation.cc
|
| @@ -614,7 +614,22 @@ bool GLES2Implementation::GetHelper(GLenum pname, GLint* params) {
|
| // are invalid. It is not a problem for now, but once we allow resource
|
| // sharing in WebGL, we need to implement a mechanism to allow correct
|
| // client side binding points tracking. crbug.com/465562.
|
| +
|
| + // ES2 parameters.
|
| switch (pname) {
|
| + case GL_ACTIVE_TEXTURE:
|
| + *params = active_texture_unit_ + GL_TEXTURE0;
|
| + return true;
|
| + case GL_ARRAY_BUFFER_BINDING:
|
| + *params = bound_array_buffer_id_;
|
| + return true;
|
| + case GL_ELEMENT_ARRAY_BUFFER_BINDING:
|
| + *params =
|
| + vertex_array_object_manager_->bound_element_array_buffer();
|
| + return true;
|
| + case GL_FRAMEBUFFER_BINDING:
|
| + *params = bound_framebuffer_;
|
| + return true;
|
| case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
|
| *params = capabilities_.max_combined_texture_image_units;
|
| return true;
|
| @@ -651,21 +666,8 @@ bool GLES2Implementation::GetHelper(GLenum pname, GLint* params) {
|
| case GL_NUM_SHADER_BINARY_FORMATS:
|
| *params = capabilities_.num_shader_binary_formats;
|
| return true;
|
| - case GL_ARRAY_BUFFER_BINDING:
|
| - *params = bound_array_buffer_id_;
|
| - return true;
|
| - case GL_ELEMENT_ARRAY_BUFFER_BINDING:
|
| - *params =
|
| - vertex_array_object_manager_->bound_element_array_buffer();
|
| - return true;
|
| - case GL_PIXEL_PACK_TRANSFER_BUFFER_BINDING_CHROMIUM:
|
| - *params = bound_pixel_pack_transfer_buffer_id_;
|
| - return true;
|
| - case GL_PIXEL_UNPACK_TRANSFER_BUFFER_BINDING_CHROMIUM:
|
| - *params = bound_pixel_unpack_transfer_buffer_id_;
|
| - return true;
|
| - case GL_ACTIVE_TEXTURE:
|
| - *params = active_texture_unit_ + GL_TEXTURE0;
|
| + case GL_RENDERBUFFER_BINDING:
|
| + *params = bound_renderbuffer_;
|
| return true;
|
| case GL_TEXTURE_BINDING_2D:
|
| *params = texture_units_[active_texture_unit_].bound_texture_2d;
|
| @@ -673,32 +675,249 @@ bool GLES2Implementation::GetHelper(GLenum pname, GLint* params) {
|
| case GL_TEXTURE_BINDING_CUBE_MAP:
|
| *params = texture_units_[active_texture_unit_].bound_texture_cube_map;
|
| return true;
|
| +
|
| + // Non-standard parameters.
|
| case GL_TEXTURE_BINDING_EXTERNAL_OES:
|
| *params =
|
| texture_units_[active_texture_unit_].bound_texture_external_oes;
|
| return true;
|
| - case GL_FRAMEBUFFER_BINDING:
|
| - *params = bound_framebuffer_;
|
| + case GL_PIXEL_PACK_TRANSFER_BUFFER_BINDING_CHROMIUM:
|
| + *params = bound_pixel_pack_transfer_buffer_id_;
|
| + return true;
|
| + case GL_PIXEL_UNPACK_TRANSFER_BUFFER_BINDING_CHROMIUM:
|
| + *params = bound_pixel_unpack_transfer_buffer_id_;
|
| return true;
|
| case GL_READ_FRAMEBUFFER_BINDING:
|
| if (IsChromiumFramebufferMultisampleAvailable()) {
|
| *params = bound_read_framebuffer_;
|
| return true;
|
| }
|
| + break;
|
| +
|
| + // Non-cached parameters.
|
| + case GL_ALIASED_LINE_WIDTH_RANGE:
|
| + case GL_ALIASED_POINT_SIZE_RANGE:
|
| + case GL_ALPHA_BITS:
|
| + case GL_BLEND:
|
| + case GL_BLEND_COLOR:
|
| + case GL_BLEND_DST_ALPHA:
|
| + case GL_BLEND_DST_RGB:
|
| + case GL_BLEND_EQUATION_ALPHA:
|
| + case GL_BLEND_EQUATION_RGB:
|
| + case GL_BLEND_SRC_ALPHA:
|
| + case GL_BLEND_SRC_RGB:
|
| + case GL_BLUE_BITS:
|
| + case GL_COLOR_CLEAR_VALUE:
|
| + case GL_COLOR_WRITEMASK:
|
| + case GL_COMPRESSED_TEXTURE_FORMATS:
|
| + case GL_CULL_FACE:
|
| + case GL_CULL_FACE_MODE:
|
| + case GL_CURRENT_PROGRAM:
|
| + case GL_DEPTH_BITS:
|
| + case GL_DEPTH_CLEAR_VALUE:
|
| + case GL_DEPTH_FUNC:
|
| + case GL_DEPTH_RANGE:
|
| + case GL_DEPTH_TEST:
|
| + case GL_DEPTH_WRITEMASK:
|
| + case GL_DITHER:
|
| + case GL_FRONT_FACE:
|
| + case GL_GENERATE_MIPMAP_HINT:
|
| + case GL_GREEN_BITS:
|
| + case GL_IMPLEMENTATION_COLOR_READ_FORMAT:
|
| + case GL_IMPLEMENTATION_COLOR_READ_TYPE:
|
| + case GL_LINE_WIDTH:
|
| + case GL_MAX_VIEWPORT_DIMS:
|
| + case GL_PACK_ALIGNMENT:
|
| + case GL_POLYGON_OFFSET_FACTOR:
|
| + case GL_POLYGON_OFFSET_FILL:
|
| + case GL_POLYGON_OFFSET_UNITS:
|
| + case GL_RED_BITS:
|
| + case GL_SAMPLE_ALPHA_TO_COVERAGE:
|
| + case GL_SAMPLE_BUFFERS:
|
| + case GL_SAMPLE_COVERAGE:
|
| + case GL_SAMPLE_COVERAGE_INVERT:
|
| + case GL_SAMPLE_COVERAGE_VALUE:
|
| + case GL_SAMPLES:
|
| + case GL_SCISSOR_BOX:
|
| + case GL_SCISSOR_TEST:
|
| + case GL_SHADER_COMPILER:
|
| + case GL_STENCIL_BACK_FAIL:
|
| + case GL_STENCIL_BACK_FUNC:
|
| + case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
|
| + case GL_STENCIL_BACK_PASS_DEPTH_PASS:
|
| + case GL_STENCIL_BACK_REF:
|
| + case GL_STENCIL_BACK_VALUE_MASK:
|
| + case GL_STENCIL_BACK_WRITEMASK:
|
| + case GL_STENCIL_BITS:
|
| + case GL_STENCIL_CLEAR_VALUE:
|
| + case GL_STENCIL_FAIL:
|
| + case GL_STENCIL_FUNC:
|
| + case GL_STENCIL_PASS_DEPTH_FAIL:
|
| + case GL_STENCIL_PASS_DEPTH_PASS:
|
| + case GL_STENCIL_REF:
|
| + case GL_STENCIL_TEST:
|
| + case GL_STENCIL_VALUE_MASK:
|
| + case GL_STENCIL_WRITEMASK:
|
| + case GL_SUBPIXEL_BITS:
|
| + case GL_UNPACK_ALIGNMENT:
|
| + case GL_VIEWPORT:
|
| return false;
|
| - case GL_RENDERBUFFER_BINDING:
|
| - *params = bound_renderbuffer_;
|
| + default:
|
| + break;
|
| + }
|
| +
|
| + if (capabilities_.major_version < 3) {
|
| + return false;
|
| + }
|
| +
|
| + // ES3 parameters.
|
| + switch (pname) {
|
| + case GL_MAJOR_VERSION:
|
| + *params = capabilities_.major_version;
|
| return true;
|
| - case GL_MAX_UNIFORM_BUFFER_BINDINGS:
|
| - *params = capabilities_.max_uniform_buffer_bindings;
|
| + case GL_MAX_3D_TEXTURE_SIZE:
|
| + *params = capabilities_.max_3d_texture_size;
|
| + return true;
|
| + case GL_MAX_ARRAY_TEXTURE_LAYERS:
|
| + *params = capabilities_.max_array_texture_layers;
|
| + return true;
|
| + case GL_MAX_COLOR_ATTACHMENTS:
|
| + *params = capabilities_.max_color_attachments;
|
| + return true;
|
| + case GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:
|
| + *params = capabilities_.max_combined_fragment_uniform_components;
|
| + return true;
|
| + case GL_MAX_COMBINED_UNIFORM_BLOCKS:
|
| + *params = capabilities_.max_combined_uniform_blocks;
|
| + return true;
|
| + case GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:
|
| + *params = capabilities_.max_combined_vertex_uniform_components;
|
| + return true;
|
| + case GL_MAX_DRAW_BUFFERS:
|
| + *params = capabilities_.max_draw_buffers;
|
| + return true;
|
| + case GL_MAX_ELEMENT_INDEX:
|
| + *params = capabilities_.max_element_index;
|
| + return true;
|
| + case GL_MAX_ELEMENTS_INDICES:
|
| + *params = capabilities_.max_elements_indices;
|
| + return true;
|
| + case GL_MAX_ELEMENTS_VERTICES:
|
| + *params = capabilities_.max_elements_vertices;
|
| + return true;
|
| + case GL_MAX_FRAGMENT_INPUT_COMPONENTS:
|
| + *params = capabilities_.max_fragment_input_components;
|
| + return true;
|
| + case GL_MAX_FRAGMENT_UNIFORM_BLOCKS:
|
| + *params = capabilities_.max_fragment_uniform_blocks;
|
| + return true;
|
| + case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS:
|
| + *params = capabilities_.max_fragment_uniform_components;
|
| + return true;
|
| + case GL_MAX_PROGRAM_TEXEL_OFFSET:
|
| + *params = capabilities_.max_program_texel_offset;
|
| + return true;
|
| + case GL_MAX_SAMPLES:
|
| + *params = capabilities_.max_samples;
|
| + return true;
|
| + case GL_MAX_SERVER_WAIT_TIMEOUT:
|
| + *params = capabilities_.max_server_wait_timeout;
|
| + return true;
|
| + case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:
|
| + *params = capabilities_.max_transform_feedback_interleaved_components;
|
| return true;
|
| case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
|
| *params = capabilities_.max_transform_feedback_separate_attribs;
|
| return true;
|
| + case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:
|
| + *params = capabilities_.max_transform_feedback_separate_components;
|
| + return true;
|
| + case GL_MAX_UNIFORM_BLOCK_SIZE:
|
| + *params = capabilities_.max_uniform_block_size;
|
| + return true;
|
| + case GL_MAX_UNIFORM_BUFFER_BINDINGS:
|
| + *params = capabilities_.max_uniform_buffer_bindings;
|
| + return true;
|
| + case GL_MAX_VARYING_COMPONENTS:
|
| + *params = capabilities_.max_varying_components;
|
| + return true;
|
| + case GL_MAX_VERTEX_OUTPUT_COMPONENTS:
|
| + *params = capabilities_.max_vertex_output_components;
|
| + return true;
|
| + case GL_MAX_VERTEX_UNIFORM_BLOCKS:
|
| + *params = capabilities_.max_vertex_uniform_blocks;
|
| + return true;
|
| + case GL_MAX_VERTEX_UNIFORM_COMPONENTS:
|
| + *params = capabilities_.max_vertex_uniform_components;
|
| + return true;
|
| + case GL_MIN_PROGRAM_TEXEL_OFFSET:
|
| + *params = capabilities_.min_program_texel_offset;
|
| + return true;
|
| + case GL_MINOR_VERSION:
|
| + *params = capabilities_.minor_version;
|
| + return true;
|
| + case GL_NUM_EXTENSIONS:
|
| + *params = capabilities_.num_extensions;
|
| + return true;
|
| + case GL_NUM_PROGRAM_BINARY_FORMATS:
|
| + *params = capabilities_.num_program_binary_formats;
|
| + return true;
|
| case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT:
|
| *params = capabilities_.uniform_buffer_offset_alignment;
|
| return true;
|
| - // TODO(zmo): Support ES3 pnames.
|
| +
|
| + // Non-cached ES3 parameters.
|
| + case GL_COPY_READ_BUFFER_BINDING:
|
| + case GL_COPY_WRITE_BUFFER_BINDING:
|
| + case GL_DRAW_BUFFER0:
|
| + case GL_DRAW_BUFFER1:
|
| + case GL_DRAW_BUFFER2:
|
| + case GL_DRAW_BUFFER3:
|
| + case GL_DRAW_BUFFER4:
|
| + case GL_DRAW_BUFFER5:
|
| + case GL_DRAW_BUFFER6:
|
| + case GL_DRAW_BUFFER7:
|
| + case GL_DRAW_BUFFER8:
|
| + case GL_DRAW_BUFFER9:
|
| + case GL_DRAW_BUFFER10:
|
| + case GL_DRAW_BUFFER11:
|
| + case GL_DRAW_BUFFER12:
|
| + case GL_DRAW_BUFFER13:
|
| + case GL_DRAW_BUFFER14:
|
| + case GL_DRAW_BUFFER15:
|
| + case GL_DRAW_FRAMEBUFFER_BINDING:
|
| + case GL_FRAGMENT_SHADER_DERIVATIVE_HINT:
|
| + case GL_MAX_TEXTURE_LOD_BIAS:
|
| + case GL_PACK_ROW_LENGTH:
|
| + case GL_PACK_SKIP_PIXELS:
|
| + case GL_PACK_SKIP_ROWS:
|
| + case GL_PIXEL_PACK_BUFFER_BINDING:
|
| + case GL_PIXEL_UNPACK_BUFFER_BINDING:
|
| + case GL_PRIMITIVE_RESTART_FIXED_INDEX:
|
| + case GL_PROGRAM_BINARY_FORMATS:
|
| + case GL_RASTERIZER_DISCARD:
|
| + case GL_READ_BUFFER:
|
| + case GL_READ_FRAMEBUFFER_BINDING:
|
| + case GL_SAMPLER_BINDING:
|
| + case GL_SHADER_BINARY_FORMATS:
|
| + case GL_TEXTURE_BINDING_2D_ARRAY:
|
| + case GL_TEXTURE_BINDING_3D:
|
| + case GL_TRANSFORM_FEEDBACK_BINDING:
|
| + case GL_TRANSFORM_FEEDBACK_ACTIVE:
|
| + case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
|
| + case GL_TRANSFORM_FEEDBACK_PAUSED:
|
| + case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:
|
| + case GL_TRANSFORM_FEEDBACK_BUFFER_START:
|
| + case GL_UNIFORM_BUFFER_BINDING:
|
| + case GL_UNIFORM_BUFFER_SIZE:
|
| + case GL_UNIFORM_BUFFER_START:
|
| + case GL_UNPACK_IMAGE_HEIGHT:
|
| + case GL_UNPACK_ROW_LENGTH:
|
| + case GL_UNPACK_SKIP_IMAGES:
|
| + case GL_UNPACK_SKIP_PIXELS:
|
| + case GL_UNPACK_SKIP_ROWS:
|
| + case GL_VERTEX_ARRAY_BINDING:
|
| + return false;
|
| default:
|
| return false;
|
| }
|
|
|