Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1587)

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder.cc

Issue 2444813002: Remove unsafe mode to enable es3 api by default for WebGL2 and ES3 context (Closed)
Patch Set: remove runtime flag unsafeES3APIs from blink webgl module Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 #include <stdio.h> 10 #include <stdio.h>
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 } 472 }
473 473
474 uint32_t GLES2Decoder::GetAndClearBackbufferClearBitsForTest() { 474 uint32_t GLES2Decoder::GetAndClearBackbufferClearBitsForTest() {
475 return 0; 475 return 0;
476 } 476 }
477 477
478 GLES2Decoder::GLES2Decoder() 478 GLES2Decoder::GLES2Decoder()
479 : initialized_(false), 479 : initialized_(false),
480 debug_(false), 480 debug_(false),
481 log_commands_(false), 481 log_commands_(false),
482 unsafe_es3_apis_enabled_(false) { 482 es3_apis_enabled_(false) {
483 } 483 }
484 484
485 GLES2Decoder::~GLES2Decoder() { 485 GLES2Decoder::~GLES2Decoder() {
486 } 486 }
487 487
488 void GLES2Decoder::BeginDecoding() {} 488 void GLES2Decoder::BeginDecoding() {}
489 489
490 void GLES2Decoder::EndDecoding() {} 490 void GLES2Decoder::EndDecoding() {}
491 491
492 error::Error GLES2Decoder::DoCommand(unsigned int command, 492 error::Error GLES2Decoder::DoCommand(unsigned int command,
(...skipping 2617 matching lines...) Expand 10 before | Expand all | Expand 10 after
3110 transform_feedback_manager_.reset(new TransformFeedbackManager( 3110 transform_feedback_manager_.reset(new TransformFeedbackManager(
3111 group_->max_transform_feedback_separate_attribs(), needs_emulation)); 3111 group_->max_transform_feedback_separate_attribs(), needs_emulation));
3112 3112
3113 if (feature_info_->IsWebGL2OrES3Context()) { 3113 if (feature_info_->IsWebGL2OrES3Context()) {
3114 if (!feature_info_->IsES3Capable()) { 3114 if (!feature_info_->IsES3Capable()) {
3115 LOG(ERROR) << "Underlying driver does not support ES3."; 3115 LOG(ERROR) << "Underlying driver does not support ES3.";
3116 Destroy(true); 3116 Destroy(true);
3117 return false; 3117 return false;
3118 } 3118 }
3119 feature_info_->EnableES3Validators(); 3119 feature_info_->EnableES3Validators();
3120 set_unsafe_es3_apis_enabled(true); 3120 set_es3_apis_enabled(true);
3121 3121
3122 frag_depth_explicitly_enabled_ = true; 3122 frag_depth_explicitly_enabled_ = true;
3123 draw_buffers_explicitly_enabled_ = true; 3123 draw_buffers_explicitly_enabled_ = true;
3124 // TODO(zmo): Look into shader_texture_lod_explicitly_enabled_ situation. 3124 // TODO(zmo): Look into shader_texture_lod_explicitly_enabled_ situation.
3125 3125
3126 // Create a fake default transform feedback and bind to it. 3126 // Create a fake default transform feedback and bind to it.
3127 GLuint default_transform_feedback = 0; 3127 GLuint default_transform_feedback = 0;
3128 glGenTransformFeedbacks(1, &default_transform_feedback); 3128 glGenTransformFeedbacks(1, &default_transform_feedback);
3129 state_.default_transform_feedback = 3129 state_.default_transform_feedback =
3130 transform_feedback_manager_->CreateTransformFeedback( 3130 transform_feedback_manager_->CreateTransformFeedback(
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
3549 DoGetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, 3549 DoGetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS,
3550 &caps.max_vertex_texture_image_units, 1); 3550 &caps.max_vertex_texture_image_units, 1);
3551 DoGetIntegerv(GL_MAX_VERTEX_UNIFORM_VECTORS, &caps.max_vertex_uniform_vectors, 3551 DoGetIntegerv(GL_MAX_VERTEX_UNIFORM_VECTORS, &caps.max_vertex_uniform_vectors,
3552 1); 3552 1);
3553 DoGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, 3553 DoGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS,
3554 &caps.num_compressed_texture_formats, 1); 3554 &caps.num_compressed_texture_formats, 1);
3555 DoGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &caps.num_shader_binary_formats, 3555 DoGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &caps.num_shader_binary_formats,
3556 1); 3556 1);
3557 DoGetIntegerv(GL_BIND_GENERATES_RESOURCE_CHROMIUM, 3557 DoGetIntegerv(GL_BIND_GENERATES_RESOURCE_CHROMIUM,
3558 &caps.bind_generates_resource_chromium, 1); 3558 &caps.bind_generates_resource_chromium, 1);
3559 if (unsafe_es3_apis_enabled()) { 3559 if (es3_apis_enabled()) {
3560 // TODO(zmo): Note that some parameter values could be more than 32-bit, 3560 // TODO(zmo): Note that some parameter values could be more than 32-bit,
3561 // but for now we clamp them to 32-bit max. 3561 // but for now we clamp them to 32-bit max.
3562 DoGetIntegerv(GL_MAX_3D_TEXTURE_SIZE, &caps.max_3d_texture_size, 1); 3562 DoGetIntegerv(GL_MAX_3D_TEXTURE_SIZE, &caps.max_3d_texture_size, 1);
3563 DoGetIntegerv(GL_MAX_ARRAY_TEXTURE_LAYERS, &caps.max_array_texture_layers, 3563 DoGetIntegerv(GL_MAX_ARRAY_TEXTURE_LAYERS, &caps.max_array_texture_layers,
3564 1); 3564 1);
3565 DoGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &caps.max_color_attachments, 1); 3565 DoGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &caps.max_color_attachments, 1);
3566 DoGetInteger64v(GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, 3566 DoGetInteger64v(GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS,
3567 &caps.max_combined_fragment_uniform_components, 1); 3567 &caps.max_combined_fragment_uniform_components, 1);
3568 DoGetIntegerv(GL_MAX_COMBINED_UNIFORM_BLOCKS, 3568 DoGetIntegerv(GL_MAX_COMBINED_UNIFORM_BLOCKS,
3569 &caps.max_combined_uniform_blocks, 1); 3569 &caps.max_combined_uniform_blocks, 1);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
3611 DoGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, 3611 DoGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS,
3612 &caps.num_program_binary_formats, 1); 3612 &caps.num_program_binary_formats, 1);
3613 DoGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, 3613 DoGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT,
3614 &caps.uniform_buffer_offset_alignment, 1); 3614 &caps.uniform_buffer_offset_alignment, 1);
3615 // TODO(zmo): once we switch to MANGLE, we should query version numbers. 3615 // TODO(zmo): once we switch to MANGLE, we should query version numbers.
3616 caps.major_version = 3; 3616 caps.major_version = 3;
3617 caps.minor_version = 0; 3617 caps.minor_version = 0;
3618 } 3618 }
3619 if (feature_info_->feature_flags().multisampled_render_to_texture || 3619 if (feature_info_->feature_flags().multisampled_render_to_texture ||
3620 feature_info_->feature_flags().chromium_framebuffer_multisample || 3620 feature_info_->feature_flags().chromium_framebuffer_multisample ||
3621 unsafe_es3_apis_enabled()) { 3621 es3_apis_enabled()) {
3622 DoGetIntegerv(GL_MAX_SAMPLES, &caps.max_samples, 1); 3622 DoGetIntegerv(GL_MAX_SAMPLES, &caps.max_samples, 1);
3623 } 3623 }
3624 3624
3625 caps.egl_image_external = 3625 caps.egl_image_external =
3626 feature_info_->feature_flags().oes_egl_image_external; 3626 feature_info_->feature_flags().oes_egl_image_external;
3627 caps.texture_format_astc = 3627 caps.texture_format_astc =
3628 feature_info_->feature_flags().ext_texture_format_astc; 3628 feature_info_->feature_flags().ext_texture_format_astc;
3629 caps.texture_format_atc = 3629 caps.texture_format_atc =
3630 feature_info_->feature_flags().ext_texture_format_atc; 3630 feature_info_->feature_flags().ext_texture_format_atc;
3631 caps.texture_format_bgra8888 = 3631 caps.texture_format_bgra8888 =
(...skipping 2605 matching lines...) Expand 10 before | Expand all | Expand 10 after
6237 } 6237 }
6238 return true; 6238 return true;
6239 case GL_MAX_VERTEX_UNIFORM_VECTORS: 6239 case GL_MAX_VERTEX_UNIFORM_VECTORS:
6240 *num_written = 1; 6240 *num_written = 1;
6241 if (params) { 6241 if (params) {
6242 *params = group_->max_vertex_uniform_vectors(); 6242 *params = group_->max_vertex_uniform_vectors();
6243 } 6243 }
6244 return true; 6244 return true;
6245 } 6245 }
6246 } 6246 }
6247 if (unsafe_es3_apis_enabled()) { 6247 if (es3_apis_enabled()) {
6248 switch (pname) { 6248 switch (pname) {
6249 case GL_MAX_VARYING_COMPONENTS: { 6249 case GL_MAX_VARYING_COMPONENTS: {
6250 if (gl_version_info().is_es) { 6250 if (gl_version_info().is_es) {
6251 // We can just delegate this query to the driver. 6251 // We can just delegate this query to the driver.
6252 *num_written = 1; 6252 *num_written = 1;
6253 break; 6253 break;
6254 } 6254 }
6255 6255
6256 // GL_MAX_VARYING_COMPONENTS is deprecated in the desktop 6256 // GL_MAX_VARYING_COMPONENTS is deprecated in the desktop
6257 // OpenGL core profile, so for simplicity, just compute it 6257 // OpenGL core profile, so for simplicity, just compute it
(...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after
6829 DoGetIntegerv(pname, values.get(), params_size); 6829 DoGetIntegerv(pname, values.get(), params_size);
6830 for (GLsizei ii = 0; ii < params_size; ++ii) { 6830 for (GLsizei ii = 0; ii < params_size; ++ii) {
6831 params[ii] = static_cast<GLfloat>(values[ii]); 6831 params[ii] = static_cast<GLfloat>(values[ii]);
6832 } 6832 }
6833 } 6833 }
6834 6834
6835 void GLES2DecoderImpl::DoGetInteger64v(GLenum pname, 6835 void GLES2DecoderImpl::DoGetInteger64v(GLenum pname,
6836 GLint64* params, 6836 GLint64* params,
6837 GLsizei params_size) { 6837 GLsizei params_size) {
6838 DCHECK(params); 6838 DCHECK(params);
6839 if (unsafe_es3_apis_enabled()) { 6839 if (es3_apis_enabled()) {
6840 switch (pname) { 6840 switch (pname) {
6841 case GL_MAX_ELEMENT_INDEX: { 6841 case GL_MAX_ELEMENT_INDEX: {
6842 DCHECK_EQ(params_size, 1); 6842 DCHECK_EQ(params_size, 1);
6843 if (gl_version_info().IsAtLeastGLES(3, 0) || 6843 if (gl_version_info().IsAtLeastGLES(3, 0) ||
6844 gl_version_info().IsAtLeastGL(4, 3)) { 6844 gl_version_info().IsAtLeastGL(4, 3)) {
6845 glGetInteger64v(GL_MAX_ELEMENT_INDEX, params); 6845 glGetInteger64v(GL_MAX_ELEMENT_INDEX, params);
6846 } else { 6846 } else {
6847 // Assume that desktop GL implementations can generally support 6847 // Assume that desktop GL implementations can generally support
6848 // 32-bit indices. 6848 // 32-bit indices.
6849 if (params) { 6849 if (params) {
(...skipping 861 matching lines...) Expand 10 before | Expand all | Expand 10 after
7711 7711
7712 void GLES2DecoderImpl::DoGetFramebufferAttachmentParameteriv( 7712 void GLES2DecoderImpl::DoGetFramebufferAttachmentParameteriv(
7713 GLenum target, 7713 GLenum target,
7714 GLenum attachment, 7714 GLenum attachment,
7715 GLenum pname, 7715 GLenum pname,
7716 GLint* params, 7716 GLint* params,
7717 GLsizei params_size) { 7717 GLsizei params_size) {
7718 const char kFunctionName[] = "glGetFramebufferAttachmentParameteriv"; 7718 const char kFunctionName[] = "glGetFramebufferAttachmentParameteriv";
7719 Framebuffer* framebuffer = GetFramebufferInfoForTarget(target); 7719 Framebuffer* framebuffer = GetFramebufferInfoForTarget(target);
7720 if (!framebuffer) { 7720 if (!framebuffer) {
7721 if (!unsafe_es3_apis_enabled()) { 7721 if (!es3_apis_enabled()) {
7722 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, kFunctionName, 7722 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, kFunctionName,
7723 "no framebuffer bound"); 7723 "no framebuffer bound");
7724 return; 7724 return;
7725 } 7725 }
7726 if (!validators_->backbuffer_attachment.IsValid(attachment)) { 7726 if (!validators_->backbuffer_attachment.IsValid(attachment)) {
7727 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, kFunctionName, 7727 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, kFunctionName,
7728 "invalid attachment for backbuffer"); 7728 "invalid attachment for backbuffer");
7729 return; 7729 return;
7730 } 7730 }
7731 switch (pname) { 7731 switch (pname) {
(...skipping 1319 matching lines...) Expand 10 before | Expand all | Expand 10 after
9051 } 9051 }
9052 glUniform4uiv(real_location, count, const_cast<const GLuint*>(value)); 9052 glUniform4uiv(real_location, count, const_cast<const GLuint*>(value));
9053 } 9053 }
9054 9054
9055 void GLES2DecoderImpl::DoUniformMatrix2fv(GLint fake_location, 9055 void GLES2DecoderImpl::DoUniformMatrix2fv(GLint fake_location,
9056 GLsizei count, 9056 GLsizei count,
9057 GLboolean transpose, 9057 GLboolean transpose,
9058 const volatile GLfloat* value) { 9058 const volatile GLfloat* value) {
9059 GLenum type = 0; 9059 GLenum type = 0;
9060 GLint real_location = -1; 9060 GLint real_location = -1;
9061 if (transpose && !unsafe_es3_apis_enabled()) { 9061 if (transpose && !es3_apis_enabled()) {
9062 LOCAL_SET_GL_ERROR( 9062 LOCAL_SET_GL_ERROR(
9063 GL_INVALID_VALUE, "glUniformMatrix2fv", "transpose not FALSE"); 9063 GL_INVALID_VALUE, "glUniformMatrix2fv", "transpose not FALSE");
9064 return; 9064 return;
9065 } 9065 }
9066 if (!PrepForSetUniformByLocation(fake_location, 9066 if (!PrepForSetUniformByLocation(fake_location,
9067 "glUniformMatrix2fv", 9067 "glUniformMatrix2fv",
9068 Program::kUniformMatrix2f, 9068 Program::kUniformMatrix2f,
9069 &real_location, 9069 &real_location,
9070 &type, 9070 &type,
9071 &count)) { 9071 &count)) {
9072 return; 9072 return;
9073 } 9073 }
9074 glUniformMatrix2fv(real_location, count, transpose, 9074 glUniformMatrix2fv(real_location, count, transpose,
9075 const_cast<const GLfloat*>(value)); 9075 const_cast<const GLfloat*>(value));
9076 } 9076 }
9077 9077
9078 void GLES2DecoderImpl::DoUniformMatrix3fv(GLint fake_location, 9078 void GLES2DecoderImpl::DoUniformMatrix3fv(GLint fake_location,
9079 GLsizei count, 9079 GLsizei count,
9080 GLboolean transpose, 9080 GLboolean transpose,
9081 const volatile GLfloat* value) { 9081 const volatile GLfloat* value) {
9082 GLenum type = 0; 9082 GLenum type = 0;
9083 GLint real_location = -1; 9083 GLint real_location = -1;
9084 if (transpose && !unsafe_es3_apis_enabled()) { 9084 if (transpose && !es3_apis_enabled()) {
9085 LOCAL_SET_GL_ERROR( 9085 LOCAL_SET_GL_ERROR(
9086 GL_INVALID_VALUE, "glUniformMatrix3fv", "transpose not FALSE"); 9086 GL_INVALID_VALUE, "glUniformMatrix3fv", "transpose not FALSE");
9087 return; 9087 return;
9088 } 9088 }
9089 if (!PrepForSetUniformByLocation(fake_location, 9089 if (!PrepForSetUniformByLocation(fake_location,
9090 "glUniformMatrix3fv", 9090 "glUniformMatrix3fv",
9091 Program::kUniformMatrix3f, 9091 Program::kUniformMatrix3f,
9092 &real_location, 9092 &real_location,
9093 &type, 9093 &type,
9094 &count)) { 9094 &count)) {
9095 return; 9095 return;
9096 } 9096 }
9097 glUniformMatrix3fv(real_location, count, transpose, 9097 glUniformMatrix3fv(real_location, count, transpose,
9098 const_cast<const GLfloat*>(value)); 9098 const_cast<const GLfloat*>(value));
9099 } 9099 }
9100 9100
9101 void GLES2DecoderImpl::DoUniformMatrix4fv(GLint fake_location, 9101 void GLES2DecoderImpl::DoUniformMatrix4fv(GLint fake_location,
9102 GLsizei count, 9102 GLsizei count,
9103 GLboolean transpose, 9103 GLboolean transpose,
9104 const volatile GLfloat* value) { 9104 const volatile GLfloat* value) {
9105 GLenum type = 0; 9105 GLenum type = 0;
9106 GLint real_location = -1; 9106 GLint real_location = -1;
9107 if (transpose && !unsafe_es3_apis_enabled()) { 9107 if (transpose && !es3_apis_enabled()) {
9108 LOCAL_SET_GL_ERROR( 9108 LOCAL_SET_GL_ERROR(
9109 GL_INVALID_VALUE, "glUniformMatrix4fv", "transpose not FALSE"); 9109 GL_INVALID_VALUE, "glUniformMatrix4fv", "transpose not FALSE");
9110 return; 9110 return;
9111 } 9111 }
9112 if (!PrepForSetUniformByLocation(fake_location, 9112 if (!PrepForSetUniformByLocation(fake_location,
9113 "glUniformMatrix4fv", 9113 "glUniformMatrix4fv",
9114 Program::kUniformMatrix4f, 9114 Program::kUniformMatrix4f,
9115 &real_location, 9115 &real_location,
9116 &type, 9116 &type,
9117 &count)) { 9117 &count)) {
(...skipping 1599 matching lines...) Expand 10 before | Expand all | Expand 10 after
10717 if (SetVertexAttribValue("glVertexAttribI4uiv", index, t)) { 10717 if (SetVertexAttribValue("glVertexAttribI4uiv", index, t)) {
10718 state_.SetGenericVertexAttribBaseType( 10718 state_.SetGenericVertexAttribBaseType(
10719 index, SHADER_VARIABLE_UINT); 10719 index, SHADER_VARIABLE_UINT);
10720 glVertexAttribI4uiv(index, t); 10720 glVertexAttribI4uiv(index, t);
10721 } 10721 }
10722 } 10722 }
10723 10723
10724 error::Error GLES2DecoderImpl::HandleVertexAttribIPointer( 10724 error::Error GLES2DecoderImpl::HandleVertexAttribIPointer(
10725 uint32_t immediate_data_size, 10725 uint32_t immediate_data_size,
10726 const volatile void* cmd_data) { 10726 const volatile void* cmd_data) {
10727 if (!unsafe_es3_apis_enabled()) 10727 if (!es3_apis_enabled())
10728 return error::kUnknownCommand; 10728 return error::kUnknownCommand;
10729 const volatile gles2::cmds::VertexAttribIPointer& c = 10729 const volatile gles2::cmds::VertexAttribIPointer& c =
10730 *static_cast<const volatile gles2::cmds::VertexAttribIPointer*>(cmd_data); 10730 *static_cast<const volatile gles2::cmds::VertexAttribIPointer*>(cmd_data);
10731 GLuint indx = c.indx; 10731 GLuint indx = c.indx;
10732 GLint size = c.size; 10732 GLint size = c.size;
10733 GLenum type = c.type; 10733 GLenum type = c.type;
10734 GLsizei stride = c.stride; 10734 GLsizei stride = c.stride;
10735 GLsizei offset = c.offset; 10735 GLsizei offset = c.offset;
10736 10736
10737 if (!state_.bound_array_buffer.get() || 10737 if (!state_.bound_array_buffer.get() ||
(...skipping 1039 matching lines...) Expand 10 before | Expand all | Expand 10 after
11777 if (!bucket->GetAsString(&name_str)) { 11777 if (!bucket->GetAsString(&name_str)) {
11778 return error::kInvalidArguments; 11778 return error::kInvalidArguments;
11779 } 11779 }
11780 return GetAttribLocationHelper( 11780 return GetAttribLocationHelper(
11781 c.program, c.location_shm_id, c.location_shm_offset, name_str); 11781 c.program, c.location_shm_id, c.location_shm_offset, name_str);
11782 } 11782 }
11783 11783
11784 error::Error GLES2DecoderImpl::HandleGetBufferSubDataAsyncCHROMIUM( 11784 error::Error GLES2DecoderImpl::HandleGetBufferSubDataAsyncCHROMIUM(
11785 uint32_t immediate_data_size, 11785 uint32_t immediate_data_size,
11786 const volatile void* cmd_data) { 11786 const volatile void* cmd_data) {
11787 if (!unsafe_es3_apis_enabled()) { 11787 if (!es3_apis_enabled()) {
11788 return error::kUnknownCommand; 11788 return error::kUnknownCommand;
11789 } 11789 }
11790 const volatile gles2::cmds::GetBufferSubDataAsyncCHROMIUM& c = 11790 const volatile gles2::cmds::GetBufferSubDataAsyncCHROMIUM& c =
11791 *static_cast<const volatile gles2::cmds::GetBufferSubDataAsyncCHROMIUM*>( 11791 *static_cast<const volatile gles2::cmds::GetBufferSubDataAsyncCHROMIUM*>(
11792 cmd_data); 11792 cmd_data);
11793 GLenum target = static_cast<GLenum>(c.target); 11793 GLenum target = static_cast<GLenum>(c.target);
11794 GLintptr offset = static_cast<GLintptr>(c.offset); 11794 GLintptr offset = static_cast<GLintptr>(c.offset);
11795 GLsizeiptr size = static_cast<GLsizeiptr>(c.size); 11795 GLsizeiptr size = static_cast<GLsizeiptr>(c.size);
11796 uint32_t data_shm_id = static_cast<uint32_t>(c.data_shm_id); 11796 uint32_t data_shm_id = static_cast<uint32_t>(c.data_shm_id);
11797 11797
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
11879 if (!bucket->GetAsString(&name_str)) { 11879 if (!bucket->GetAsString(&name_str)) {
11880 return error::kInvalidArguments; 11880 return error::kInvalidArguments;
11881 } 11881 }
11882 return GetUniformLocationHelper( 11882 return GetUniformLocationHelper(
11883 c.program, c.location_shm_id, c.location_shm_offset, name_str); 11883 c.program, c.location_shm_id, c.location_shm_offset, name_str);
11884 } 11884 }
11885 11885
11886 error::Error GLES2DecoderImpl::HandleGetUniformIndices( 11886 error::Error GLES2DecoderImpl::HandleGetUniformIndices(
11887 uint32_t immediate_data_size, 11887 uint32_t immediate_data_size,
11888 const volatile void* cmd_data) { 11888 const volatile void* cmd_data) {
11889 if (!unsafe_es3_apis_enabled()) 11889 if (!es3_apis_enabled())
11890 return error::kUnknownCommand; 11890 return error::kUnknownCommand;
11891 const volatile gles2::cmds::GetUniformIndices& c = 11891 const volatile gles2::cmds::GetUniformIndices& c =
11892 *static_cast<const volatile gles2::cmds::GetUniformIndices*>(cmd_data); 11892 *static_cast<const volatile gles2::cmds::GetUniformIndices*>(cmd_data);
11893 Bucket* bucket = GetBucket(c.names_bucket_id); 11893 Bucket* bucket = GetBucket(c.names_bucket_id);
11894 if (!bucket) { 11894 if (!bucket) {
11895 return error::kInvalidArguments; 11895 return error::kInvalidArguments;
11896 } 11896 }
11897 GLsizei count = 0; 11897 GLsizei count = 0;
11898 std::vector<char*> names; 11898 std::vector<char*> names;
11899 std::vector<GLint> len; 11899 std::vector<GLint> len;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
11960 return error::kNoError; 11960 return error::kNoError;
11961 } 11961 }
11962 11962
11963 *location = program->GetFragDataLocation(name_str); 11963 *location = program->GetFragDataLocation(name_str);
11964 return error::kNoError; 11964 return error::kNoError;
11965 } 11965 }
11966 11966
11967 error::Error GLES2DecoderImpl::HandleGetFragDataLocation( 11967 error::Error GLES2DecoderImpl::HandleGetFragDataLocation(
11968 uint32_t immediate_data_size, 11968 uint32_t immediate_data_size,
11969 const volatile void* cmd_data) { 11969 const volatile void* cmd_data) {
11970 if (!unsafe_es3_apis_enabled()) 11970 if (!es3_apis_enabled())
11971 return error::kUnknownCommand; 11971 return error::kUnknownCommand;
11972 const volatile gles2::cmds::GetFragDataLocation& c = 11972 const volatile gles2::cmds::GetFragDataLocation& c =
11973 *static_cast<const volatile gles2::cmds::GetFragDataLocation*>(cmd_data); 11973 *static_cast<const volatile gles2::cmds::GetFragDataLocation*>(cmd_data);
11974 Bucket* bucket = GetBucket(c.name_bucket_id); 11974 Bucket* bucket = GetBucket(c.name_bucket_id);
11975 if (!bucket) { 11975 if (!bucket) {
11976 return error::kInvalidArguments; 11976 return error::kInvalidArguments;
11977 } 11977 }
11978 std::string name_str; 11978 std::string name_str;
11979 if (!bucket->GetAsString(&name_str)) { 11979 if (!bucket->GetAsString(&name_str)) {
11980 return error::kInvalidArguments; 11980 return error::kInvalidArguments;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
12028 if (!bucket->GetAsString(&name_str)) { 12028 if (!bucket->GetAsString(&name_str)) {
12029 return error::kInvalidArguments; 12029 return error::kInvalidArguments;
12030 } 12030 }
12031 return GetFragDataIndexHelper(c.program, c.index_shm_id, c.index_shm_offset, 12031 return GetFragDataIndexHelper(c.program, c.index_shm_id, c.index_shm_offset,
12032 name_str); 12032 name_str);
12033 } 12033 }
12034 12034
12035 error::Error GLES2DecoderImpl::HandleGetUniformBlockIndex( 12035 error::Error GLES2DecoderImpl::HandleGetUniformBlockIndex(
12036 uint32_t immediate_data_size, 12036 uint32_t immediate_data_size,
12037 const volatile void* cmd_data) { 12037 const volatile void* cmd_data) {
12038 if (!unsafe_es3_apis_enabled()) 12038 if (!es3_apis_enabled())
12039 return error::kUnknownCommand; 12039 return error::kUnknownCommand;
12040 const volatile gles2::cmds::GetUniformBlockIndex& c = 12040 const volatile gles2::cmds::GetUniformBlockIndex& c =
12041 *static_cast<const volatile gles2::cmds::GetUniformBlockIndex*>(cmd_data); 12041 *static_cast<const volatile gles2::cmds::GetUniformBlockIndex*>(cmd_data);
12042 Bucket* bucket = GetBucket(c.name_bucket_id); 12042 Bucket* bucket = GetBucket(c.name_bucket_id);
12043 if (!bucket) { 12043 if (!bucket) {
12044 return error::kInvalidArguments; 12044 return error::kInvalidArguments;
12045 } 12045 }
12046 std::string name_str; 12046 std::string name_str;
12047 if (!bucket->GetAsString(&name_str)) { 12047 if (!bucket->GetAsString(&name_str)) {
12048 return error::kInvalidArguments; 12048 return error::kInvalidArguments;
(...skipping 23 matching lines...) Expand all
12072 GLenum name = static_cast<GLenum>(c.name); 12072 GLenum name = static_cast<GLenum>(c.name);
12073 if (!validators_->string_type.IsValid(name)) { 12073 if (!validators_->string_type.IsValid(name)) {
12074 LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetString", name, "name"); 12074 LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetString", name, "name");
12075 return error::kNoError; 12075 return error::kNoError;
12076 } 12076 }
12077 12077
12078 const char* str = nullptr; 12078 const char* str = nullptr;
12079 std::string extensions; 12079 std::string extensions;
12080 switch (name) { 12080 switch (name) {
12081 case GL_VERSION: 12081 case GL_VERSION:
12082 if (unsafe_es3_apis_enabled()) 12082 if (es3_apis_enabled())
12083 str = "OpenGL ES 3.0 Chromium"; 12083 str = "OpenGL ES 3.0 Chromium";
12084 else 12084 else
12085 str = "OpenGL ES 2.0 Chromium"; 12085 str = "OpenGL ES 2.0 Chromium";
12086 break; 12086 break;
12087 case GL_SHADING_LANGUAGE_VERSION: 12087 case GL_SHADING_LANGUAGE_VERSION:
12088 if (unsafe_es3_apis_enabled()) 12088 if (es3_apis_enabled())
12089 str = "OpenGL ES GLSL ES 3.0 Chromium"; 12089 str = "OpenGL ES GLSL ES 3.0 Chromium";
12090 else 12090 else
12091 str = "OpenGL ES GLSL ES 1.0 Chromium"; 12091 str = "OpenGL ES GLSL ES 1.0 Chromium";
12092 break; 12092 break;
12093 case GL_RENDERER: 12093 case GL_RENDERER:
12094 case GL_VENDOR: 12094 case GL_VENDOR:
12095 // Return the unmasked VENDOR/RENDERER string for WebGL contexts. 12095 // Return the unmasked VENDOR/RENDERER string for WebGL contexts.
12096 // They are used by WEBGL_debug_renderer_info. 12096 // They are used by WEBGL_debug_renderer_info.
12097 if (!feature_info_->IsWebGLContext()) 12097 if (!feature_info_->IsWebGLContext())
12098 str = "Chromium"; 12098 str = "Chromium";
(...skipping 1296 matching lines...) Expand 10 before | Expand all | Expand 10 after
13395 &texture_state_, &state_, &framebuffer_state_, func_name, args); 13395 &texture_state_, &state_, &framebuffer_state_, func_name, args);
13396 13396
13397 // This may be a slow command. Exit command processing to allow for 13397 // This may be a slow command. Exit command processing to allow for
13398 // context preemption and GPU watchdog checks. 13398 // context preemption and GPU watchdog checks.
13399 ExitCommandProcessingEarly(); 13399 ExitCommandProcessingEarly();
13400 return error::kNoError; 13400 return error::kNoError;
13401 } 13401 }
13402 13402
13403 error::Error GLES2DecoderImpl::HandleTexImage3D(uint32_t immediate_data_size, 13403 error::Error GLES2DecoderImpl::HandleTexImage3D(uint32_t immediate_data_size,
13404 const volatile void* cmd_data) { 13404 const volatile void* cmd_data) {
13405 if (!unsafe_es3_apis_enabled()) 13405 if (!es3_apis_enabled())
13406 return error::kUnknownCommand; 13406 return error::kUnknownCommand;
13407 13407
13408 const char* func_name = "glTexImage3D"; 13408 const char* func_name = "glTexImage3D";
13409 const volatile gles2::cmds::TexImage3D& c = 13409 const volatile gles2::cmds::TexImage3D& c =
13410 *static_cast<const volatile gles2::cmds::TexImage3D*>(cmd_data); 13410 *static_cast<const volatile gles2::cmds::TexImage3D*>(cmd_data);
13411 TRACE_EVENT2("gpu", "GLES2DecoderImpl::HandleTexImage3D", 13411 TRACE_EVENT2("gpu", "GLES2DecoderImpl::HandleTexImage3D",
13412 "widthXheight", c.width * c.height, "depth", c.depth); 13412 "widthXheight", c.width * c.height, "depth", c.depth);
13413 // Set as failed for now, but if it successed, this will be set to not failed. 13413 // Set as failed for now, but if it successed, this will be set to not failed.
13414 texture_state_.tex_image_failed = true; 13414 texture_state_.tex_image_failed = true;
13415 GLenum target = static_cast<GLenum>(c.target); 13415 GLenum target = static_cast<GLenum>(c.target);
(...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after
14157 14157
14158 // This may be a slow command. Exit command processing to allow for 14158 // This may be a slow command. Exit command processing to allow for
14159 // context preemption and GPU watchdog checks. 14159 // context preemption and GPU watchdog checks.
14160 ExitCommandProcessingEarly(); 14160 ExitCommandProcessingEarly();
14161 return error::kNoError; 14161 return error::kNoError;
14162 } 14162 }
14163 14163
14164 error::Error GLES2DecoderImpl::HandleTexSubImage3D( 14164 error::Error GLES2DecoderImpl::HandleTexSubImage3D(
14165 uint32_t immediate_data_size, 14165 uint32_t immediate_data_size,
14166 const volatile void* cmd_data) { 14166 const volatile void* cmd_data) {
14167 if (!unsafe_es3_apis_enabled()) 14167 if (!es3_apis_enabled())
14168 return error::kUnknownCommand; 14168 return error::kUnknownCommand;
14169 14169
14170 const char* func_name = "glTexSubImage3D"; 14170 const char* func_name = "glTexSubImage3D";
14171 const volatile gles2::cmds::TexSubImage3D& c = 14171 const volatile gles2::cmds::TexSubImage3D& c =
14172 *static_cast<const volatile gles2::cmds::TexSubImage3D*>(cmd_data); 14172 *static_cast<const volatile gles2::cmds::TexSubImage3D*>(cmd_data);
14173 TRACE_EVENT2("gpu", "GLES2DecoderImpl::HandleTexSubImage3D", 14173 TRACE_EVENT2("gpu", "GLES2DecoderImpl::HandleTexSubImage3D",
14174 "widthXheight", c.width * c.height, "depth", c.depth); 14174 "widthXheight", c.width * c.height, "depth", c.depth);
14175 GLboolean internal = static_cast<GLboolean>(c.internal); 14175 GLboolean internal = static_cast<GLboolean>(c.internal);
14176 if (internal == GL_TRUE && texture_state_.tex_image_failed) 14176 if (internal == GL_TRUE && texture_state_.tex_image_failed)
14177 return error::kNoError; 14177 return error::kNoError;
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
14373 &result_size)) { 14373 &result_size)) {
14374 glGetUniformiv( 14374 glGetUniformiv(
14375 service_id, real_location, result->GetData()); 14375 service_id, real_location, result->GetData());
14376 } 14376 }
14377 return error; 14377 return error;
14378 } 14378 }
14379 14379
14380 error::Error GLES2DecoderImpl::HandleGetUniformuiv( 14380 error::Error GLES2DecoderImpl::HandleGetUniformuiv(
14381 uint32_t immediate_data_size, 14381 uint32_t immediate_data_size,
14382 const volatile void* cmd_data) { 14382 const volatile void* cmd_data) {
14383 if (!unsafe_es3_apis_enabled()) 14383 if (!es3_apis_enabled())
14384 return error::kUnknownCommand; 14384 return error::kUnknownCommand;
14385 14385
14386 const volatile gles2::cmds::GetUniformuiv& c = 14386 const volatile gles2::cmds::GetUniformuiv& c =
14387 *static_cast<const volatile gles2::cmds::GetUniformuiv*>(cmd_data); 14387 *static_cast<const volatile gles2::cmds::GetUniformuiv*>(cmd_data);
14388 GLuint program = c.program; 14388 GLuint program = c.program;
14389 GLint fake_location = c.location; 14389 GLint fake_location = c.location;
14390 GLuint service_id; 14390 GLuint service_id;
14391 GLenum result_type; 14391 GLenum result_type;
14392 GLsizei result_size; 14392 GLsizei result_size;
14393 GLint real_location = -1; 14393 GLint real_location = -1;
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
14550 result->size = uniform_info->size; 14550 result->size = uniform_info->size;
14551 result->type = uniform_info->type; 14551 result->type = uniform_info->type;
14552 Bucket* bucket = CreateBucket(name_bucket_id); 14552 Bucket* bucket = CreateBucket(name_bucket_id);
14553 bucket->SetFromString(uniform_info->name.c_str()); 14553 bucket->SetFromString(uniform_info->name.c_str());
14554 return error::kNoError; 14554 return error::kNoError;
14555 } 14555 }
14556 14556
14557 error::Error GLES2DecoderImpl::HandleGetActiveUniformBlockiv( 14557 error::Error GLES2DecoderImpl::HandleGetActiveUniformBlockiv(
14558 uint32_t immediate_data_size, 14558 uint32_t immediate_data_size,
14559 const volatile void* cmd_data) { 14559 const volatile void* cmd_data) {
14560 if (!unsafe_es3_apis_enabled()) 14560 if (!es3_apis_enabled())
14561 return error::kUnknownCommand; 14561 return error::kUnknownCommand;
14562 const volatile gles2::cmds::GetActiveUniformBlockiv& c = 14562 const volatile gles2::cmds::GetActiveUniformBlockiv& c =
14563 *static_cast<const volatile gles2::cmds::GetActiveUniformBlockiv*>( 14563 *static_cast<const volatile gles2::cmds::GetActiveUniformBlockiv*>(
14564 cmd_data); 14564 cmd_data);
14565 GLuint program_id = c.program; 14565 GLuint program_id = c.program;
14566 GLuint index = static_cast<GLuint>(c.index); 14566 GLuint index = static_cast<GLuint>(c.index);
14567 GLenum pname = static_cast<GLenum>(c.pname); 14567 GLenum pname = static_cast<GLenum>(c.pname);
14568 Program* program = GetProgramInfoNotShader( 14568 Program* program = GetProgramInfoNotShader(
14569 program_id, "glGetActiveUniformBlockiv"); 14569 program_id, "glGetActiveUniformBlockiv");
14570 if (!program) { 14570 if (!program) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
14609 result->SetNumResults(num_values); 14609 result->SetNumResults(num_values);
14610 } else { 14610 } else {
14611 LOCAL_SET_GL_ERROR(error, "GetActiveUniformBlockiv", ""); 14611 LOCAL_SET_GL_ERROR(error, "GetActiveUniformBlockiv", "");
14612 } 14612 }
14613 return error::kNoError; 14613 return error::kNoError;
14614 } 14614 }
14615 14615
14616 error::Error GLES2DecoderImpl::HandleGetActiveUniformBlockName( 14616 error::Error GLES2DecoderImpl::HandleGetActiveUniformBlockName(
14617 uint32_t immediate_data_size, 14617 uint32_t immediate_data_size,
14618 const volatile void* cmd_data) { 14618 const volatile void* cmd_data) {
14619 if (!unsafe_es3_apis_enabled()) 14619 if (!es3_apis_enabled())
14620 return error::kUnknownCommand; 14620 return error::kUnknownCommand;
14621 const volatile gles2::cmds::GetActiveUniformBlockName& c = 14621 const volatile gles2::cmds::GetActiveUniformBlockName& c =
14622 *static_cast<const volatile gles2::cmds::GetActiveUniformBlockName*>( 14622 *static_cast<const volatile gles2::cmds::GetActiveUniformBlockName*>(
14623 cmd_data); 14623 cmd_data);
14624 GLuint program_id = c.program; 14624 GLuint program_id = c.program;
14625 GLuint index = c.index; 14625 GLuint index = c.index;
14626 uint32_t name_bucket_id = c.name_bucket_id; 14626 uint32_t name_bucket_id = c.name_bucket_id;
14627 typedef cmds::GetActiveUniformBlockName::Result Result; 14627 typedef cmds::GetActiveUniformBlockName::Result Result;
14628 Result* result = GetSharedMemoryAs<Result*>( 14628 Result* result = GetSharedMemoryAs<Result*>(
14629 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 14629 c.result_shm_id, c.result_shm_offset, sizeof(*result));
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
14664 Bucket* bucket = CreateBucket(name_bucket_id); 14664 Bucket* bucket = CreateBucket(name_bucket_id);
14665 DCHECK_GT(buf_size, length); 14665 DCHECK_GT(buf_size, length);
14666 DCHECK_EQ(0, buffer[length]); 14666 DCHECK_EQ(0, buffer[length]);
14667 bucket->SetFromString(&buffer[0]); 14667 bucket->SetFromString(&buffer[0]);
14668 return error::kNoError; 14668 return error::kNoError;
14669 } 14669 }
14670 14670
14671 error::Error GLES2DecoderImpl::HandleGetActiveUniformsiv( 14671 error::Error GLES2DecoderImpl::HandleGetActiveUniformsiv(
14672 uint32_t immediate_data_size, 14672 uint32_t immediate_data_size,
14673 const volatile void* cmd_data) { 14673 const volatile void* cmd_data) {
14674 if (!unsafe_es3_apis_enabled()) 14674 if (!es3_apis_enabled())
14675 return error::kUnknownCommand; 14675 return error::kUnknownCommand;
14676 const volatile gles2::cmds::GetActiveUniformsiv& c = 14676 const volatile gles2::cmds::GetActiveUniformsiv& c =
14677 *static_cast<const volatile gles2::cmds::GetActiveUniformsiv*>(cmd_data); 14677 *static_cast<const volatile gles2::cmds::GetActiveUniformsiv*>(cmd_data);
14678 GLuint program_id = c.program; 14678 GLuint program_id = c.program;
14679 GLenum pname = static_cast<GLenum>(c.pname); 14679 GLenum pname = static_cast<GLenum>(c.pname);
14680 Bucket* bucket = GetBucket(c.indices_bucket_id); 14680 Bucket* bucket = GetBucket(c.indices_bucket_id);
14681 if (!bucket) { 14681 if (!bucket) {
14682 return error::kInvalidArguments; 14682 return error::kInvalidArguments;
14683 } 14683 }
14684 if (!validators_->uniform_parameter.IsValid(pname)) { 14684 if (!validators_->uniform_parameter.IsValid(pname)) {
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
15108 if (!program || !program->IsValid()) { 15108 if (!program || !program->IsValid()) {
15109 return error::kNoError; 15109 return error::kNoError;
15110 } 15110 }
15111 program->GetProgramInfo(program_manager(), bucket); 15111 program->GetProgramInfo(program_manager(), bucket);
15112 return error::kNoError; 15112 return error::kNoError;
15113 } 15113 }
15114 15114
15115 error::Error GLES2DecoderImpl::HandleGetUniformBlocksCHROMIUM( 15115 error::Error GLES2DecoderImpl::HandleGetUniformBlocksCHROMIUM(
15116 uint32_t immediate_data_size, 15116 uint32_t immediate_data_size,
15117 const volatile void* cmd_data) { 15117 const volatile void* cmd_data) {
15118 if (!unsafe_es3_apis_enabled()) 15118 if (!es3_apis_enabled())
15119 return error::kUnknownCommand; 15119 return error::kUnknownCommand;
15120 const volatile gles2::cmds::GetUniformBlocksCHROMIUM& c = 15120 const volatile gles2::cmds::GetUniformBlocksCHROMIUM& c =
15121 *static_cast<const volatile gles2::cmds::GetUniformBlocksCHROMIUM*>( 15121 *static_cast<const volatile gles2::cmds::GetUniformBlocksCHROMIUM*>(
15122 cmd_data); 15122 cmd_data);
15123 GLuint program_id = static_cast<GLuint>(c.program); 15123 GLuint program_id = static_cast<GLuint>(c.program);
15124 uint32_t bucket_id = c.bucket_id; 15124 uint32_t bucket_id = c.bucket_id;
15125 Bucket* bucket = CreateBucket(bucket_id); 15125 Bucket* bucket = CreateBucket(bucket_id);
15126 bucket->SetSize(sizeof(UniformBlocksHeader)); // in case we fail. 15126 bucket->SetSize(sizeof(UniformBlocksHeader)); // in case we fail.
15127 Program* program = NULL; 15127 Program* program = NULL;
15128 program = GetProgram(program_id); 15128 program = GetProgram(program_id);
15129 if (!program || !program->IsValid()) { 15129 if (!program || !program->IsValid()) {
15130 return error::kNoError; 15130 return error::kNoError;
15131 } 15131 }
15132 program->GetUniformBlocks(bucket); 15132 program->GetUniformBlocks(bucket);
15133 return error::kNoError; 15133 return error::kNoError;
15134 } 15134 }
15135 15135
15136 error::Error GLES2DecoderImpl::HandleGetUniformsES3CHROMIUM( 15136 error::Error GLES2DecoderImpl::HandleGetUniformsES3CHROMIUM(
15137 uint32_t immediate_data_size, 15137 uint32_t immediate_data_size,
15138 const volatile void* cmd_data) { 15138 const volatile void* cmd_data) {
15139 if (!unsafe_es3_apis_enabled()) 15139 if (!es3_apis_enabled())
15140 return error::kUnknownCommand; 15140 return error::kUnknownCommand;
15141 const volatile gles2::cmds::GetUniformsES3CHROMIUM& c = 15141 const volatile gles2::cmds::GetUniformsES3CHROMIUM& c =
15142 *static_cast<const volatile gles2::cmds::GetUniformsES3CHROMIUM*>( 15142 *static_cast<const volatile gles2::cmds::GetUniformsES3CHROMIUM*>(
15143 cmd_data); 15143 cmd_data);
15144 GLuint program_id = static_cast<GLuint>(c.program); 15144 GLuint program_id = static_cast<GLuint>(c.program);
15145 uint32_t bucket_id = c.bucket_id; 15145 uint32_t bucket_id = c.bucket_id;
15146 Bucket* bucket = CreateBucket(bucket_id); 15146 Bucket* bucket = CreateBucket(bucket_id);
15147 bucket->SetSize(sizeof(UniformsES3Header)); // in case we fail. 15147 bucket->SetSize(sizeof(UniformsES3Header)); // in case we fail.
15148 Program* program = NULL; 15148 Program* program = NULL;
15149 program = GetProgram(program_id); 15149 program = GetProgram(program_id);
15150 if (!program || !program->IsValid()) { 15150 if (!program || !program->IsValid()) {
15151 return error::kNoError; 15151 return error::kNoError;
15152 } 15152 }
15153 program->GetUniformsES3(bucket); 15153 program->GetUniformsES3(bucket);
15154 return error::kNoError; 15154 return error::kNoError;
15155 } 15155 }
15156 15156
15157 error::Error GLES2DecoderImpl::HandleGetTransformFeedbackVarying( 15157 error::Error GLES2DecoderImpl::HandleGetTransformFeedbackVarying(
15158 uint32_t immediate_data_size, 15158 uint32_t immediate_data_size,
15159 const volatile void* cmd_data) { 15159 const volatile void* cmd_data) {
15160 if (!unsafe_es3_apis_enabled()) 15160 if (!es3_apis_enabled())
15161 return error::kUnknownCommand; 15161 return error::kUnknownCommand;
15162 const volatile gles2::cmds::GetTransformFeedbackVarying& c = 15162 const volatile gles2::cmds::GetTransformFeedbackVarying& c =
15163 *static_cast<const volatile gles2::cmds::GetTransformFeedbackVarying*>( 15163 *static_cast<const volatile gles2::cmds::GetTransformFeedbackVarying*>(
15164 cmd_data); 15164 cmd_data);
15165 GLuint program_id = c.program; 15165 GLuint program_id = c.program;
15166 GLuint index = c.index; 15166 GLuint index = c.index;
15167 uint32_t name_bucket_id = c.name_bucket_id; 15167 uint32_t name_bucket_id = c.name_bucket_id;
15168 typedef cmds::GetTransformFeedbackVarying::Result Result; 15168 typedef cmds::GetTransformFeedbackVarying::Result Result;
15169 Result* result = GetSharedMemoryAs<Result*>( 15169 Result* result = GetSharedMemoryAs<Result*>(
15170 c.result_shm_id, c.result_shm_offset, sizeof(*result)); 15170 c.result_shm_id, c.result_shm_offset, sizeof(*result));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
15210 Bucket* bucket = CreateBucket(name_bucket_id); 15210 Bucket* bucket = CreateBucket(name_bucket_id);
15211 DCHECK(length >= 0 && length < max_length); 15211 DCHECK(length >= 0 && length < max_length);
15212 buffer[length] = '\0'; // Just to be safe. 15212 buffer[length] = '\0'; // Just to be safe.
15213 bucket->SetFromString(&buffer[0]); 15213 bucket->SetFromString(&buffer[0]);
15214 return error::kNoError; 15214 return error::kNoError;
15215 } 15215 }
15216 15216
15217 error::Error GLES2DecoderImpl::HandleGetTransformFeedbackVaryingsCHROMIUM( 15217 error::Error GLES2DecoderImpl::HandleGetTransformFeedbackVaryingsCHROMIUM(
15218 uint32_t immediate_data_size, 15218 uint32_t immediate_data_size,
15219 const volatile void* cmd_data) { 15219 const volatile void* cmd_data) {
15220 if (!unsafe_es3_apis_enabled()) 15220 if (!es3_apis_enabled())
15221 return error::kUnknownCommand; 15221 return error::kUnknownCommand;
15222 const volatile gles2::cmds::GetTransformFeedbackVaryingsCHROMIUM& c = 15222 const volatile gles2::cmds::GetTransformFeedbackVaryingsCHROMIUM& c =
15223 *static_cast< 15223 *static_cast<
15224 const volatile gles2::cmds::GetTransformFeedbackVaryingsCHROMIUM*>( 15224 const volatile gles2::cmds::GetTransformFeedbackVaryingsCHROMIUM*>(
15225 cmd_data); 15225 cmd_data);
15226 GLuint program_id = static_cast<GLuint>(c.program); 15226 GLuint program_id = static_cast<GLuint>(c.program);
15227 uint32_t bucket_id = c.bucket_id; 15227 uint32_t bucket_id = c.bucket_id;
15228 Bucket* bucket = CreateBucket(bucket_id); 15228 Bucket* bucket = CreateBucket(bucket_id);
15229 bucket->SetSize(sizeof(TransformFeedbackVaryingsHeader)); // in case we fail. 15229 bucket->SetSize(sizeof(TransformFeedbackVaryingsHeader)); // in case we fail.
15230 Program* program = NULL; 15230 Program* program = NULL;
(...skipping 1796 matching lines...) Expand 10 before | Expand all | Expand 10 after
17027 memcpy(target_matrix, kIdentityMatrix, sizeof(kIdentityMatrix)); 17027 memcpy(target_matrix, kIdentityMatrix, sizeof(kIdentityMatrix));
17028 // The matrix_mode is either GL_PATH_MODELVIEW_NV or GL_PATH_PROJECTION_NV 17028 // The matrix_mode is either GL_PATH_MODELVIEW_NV or GL_PATH_PROJECTION_NV
17029 // since the values of the _NV and _CHROMIUM tokens match. 17029 // since the values of the _NV and _CHROMIUM tokens match.
17030 glMatrixLoadIdentityEXT(matrix_mode); 17030 glMatrixLoadIdentityEXT(matrix_mode);
17031 } 17031 }
17032 17032
17033 error::Error GLES2DecoderImpl::HandleUniformBlockBinding( 17033 error::Error GLES2DecoderImpl::HandleUniformBlockBinding(
17034 uint32_t immediate_data_size, 17034 uint32_t immediate_data_size,
17035 const volatile void* cmd_data) { 17035 const volatile void* cmd_data) {
17036 const char* func_name = "glUniformBlockBinding"; 17036 const char* func_name = "glUniformBlockBinding";
17037 if (!unsafe_es3_apis_enabled()) 17037 if (!es3_apis_enabled())
17038 return error::kUnknownCommand; 17038 return error::kUnknownCommand;
17039 const volatile gles2::cmds::UniformBlockBinding& c = 17039 const volatile gles2::cmds::UniformBlockBinding& c =
17040 *static_cast<const volatile gles2::cmds::UniformBlockBinding*>(cmd_data); 17040 *static_cast<const volatile gles2::cmds::UniformBlockBinding*>(cmd_data);
17041 GLuint client_id = c.program; 17041 GLuint client_id = c.program;
17042 GLuint index = static_cast<GLuint>(c.index); 17042 GLuint index = static_cast<GLuint>(c.index);
17043 GLuint binding = static_cast<GLuint>(c.binding); 17043 GLuint binding = static_cast<GLuint>(c.binding);
17044 Program* program = GetProgramInfoNotShader(client_id, func_name); 17044 Program* program = GetProgramInfoNotShader(client_id, func_name);
17045 if (!program) { 17045 if (!program) {
17046 return error::kNoError; 17046 return error::kNoError;
17047 } 17047 }
(...skipping 10 matching lines...) Expand all
17058 GLuint service_id = program->service_id(); 17058 GLuint service_id = program->service_id();
17059 glUniformBlockBinding(service_id, index, binding); 17059 glUniformBlockBinding(service_id, index, binding);
17060 program->SetUniformBlockBinding(index, binding); 17060 program->SetUniformBlockBinding(index, binding);
17061 return error::kNoError; 17061 return error::kNoError;
17062 } 17062 }
17063 17063
17064 error::Error GLES2DecoderImpl::HandleClientWaitSync( 17064 error::Error GLES2DecoderImpl::HandleClientWaitSync(
17065 uint32_t immediate_data_size, 17065 uint32_t immediate_data_size,
17066 const volatile void* cmd_data) { 17066 const volatile void* cmd_data) {
17067 const char* function_name = "glClientWaitSync"; 17067 const char* function_name = "glClientWaitSync";
17068 if (!unsafe_es3_apis_enabled()) 17068 if (!es3_apis_enabled())
17069 return error::kUnknownCommand; 17069 return error::kUnknownCommand;
17070 const volatile gles2::cmds::ClientWaitSync& c = 17070 const volatile gles2::cmds::ClientWaitSync& c =
17071 *static_cast<const volatile gles2::cmds::ClientWaitSync*>(cmd_data); 17071 *static_cast<const volatile gles2::cmds::ClientWaitSync*>(cmd_data);
17072 const GLuint sync = static_cast<GLuint>(c.sync); 17072 const GLuint sync = static_cast<GLuint>(c.sync);
17073 GLbitfield flags = static_cast<GLbitfield>(c.flags); 17073 GLbitfield flags = static_cast<GLbitfield>(c.flags);
17074 const GLuint64 timeout = c.timeout(); 17074 const GLuint64 timeout = c.timeout();
17075 typedef cmds::ClientWaitSync::Result Result; 17075 typedef cmds::ClientWaitSync::Result Result;
17076 Result* result_dst = GetSharedMemoryAs<Result*>( 17076 Result* result_dst = GetSharedMemoryAs<Result*>(
17077 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); 17077 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
17078 if (!result_dst) { 17078 if (!result_dst) {
(...skipping 28 matching lines...) Expand all
17107 NOTREACHED(); 17107 NOTREACHED();
17108 break; 17108 break;
17109 } 17109 }
17110 *result_dst = status; 17110 *result_dst = status;
17111 return error::kNoError; 17111 return error::kNoError;
17112 } 17112 }
17113 17113
17114 error::Error GLES2DecoderImpl::HandleWaitSync(uint32_t immediate_data_size, 17114 error::Error GLES2DecoderImpl::HandleWaitSync(uint32_t immediate_data_size,
17115 const volatile void* cmd_data) { 17115 const volatile void* cmd_data) {
17116 const char* function_name = "glWaitSync"; 17116 const char* function_name = "glWaitSync";
17117 if (!unsafe_es3_apis_enabled()) 17117 if (!es3_apis_enabled())
17118 return error::kUnknownCommand; 17118 return error::kUnknownCommand;
17119 const volatile gles2::cmds::WaitSync& c = 17119 const volatile gles2::cmds::WaitSync& c =
17120 *static_cast<const volatile gles2::cmds::WaitSync*>(cmd_data); 17120 *static_cast<const volatile gles2::cmds::WaitSync*>(cmd_data);
17121 const GLuint sync = static_cast<GLuint>(c.sync); 17121 const GLuint sync = static_cast<GLuint>(c.sync);
17122 const GLbitfield flags = static_cast<GLbitfield>(c.flags); 17122 const GLbitfield flags = static_cast<GLbitfield>(c.flags);
17123 const GLuint64 timeout = c.timeout(); 17123 const GLuint64 timeout = c.timeout();
17124 GLsync service_sync = 0; 17124 GLsync service_sync = 0;
17125 if (!group_->GetSyncServiceId(sync, &service_sync)) { 17125 if (!group_->GetSyncServiceId(sync, &service_sync)) {
17126 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, function_name, "invalid sync"); 17126 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, function_name, "invalid sync");
17127 return error::kNoError; 17127 return error::kNoError;
(...skipping 19 matching lines...) Expand all
17147 if (flags != 0) { 17147 if (flags != 0) {
17148 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, function_name, "invalid flags"); 17148 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, function_name, "invalid flags");
17149 return 0; 17149 return 0;
17150 } 17150 }
17151 return glFenceSync(condition, flags); 17151 return glFenceSync(condition, flags);
17152 } 17152 }
17153 17153
17154 error::Error GLES2DecoderImpl::HandleGetInternalformativ( 17154 error::Error GLES2DecoderImpl::HandleGetInternalformativ(
17155 uint32_t immediate_data_size, 17155 uint32_t immediate_data_size,
17156 const volatile void* cmd_data) { 17156 const volatile void* cmd_data) {
17157 if (!unsafe_es3_apis_enabled()) 17157 if (!es3_apis_enabled())
17158 return error::kUnknownCommand; 17158 return error::kUnknownCommand;
17159 const volatile gles2::cmds::GetInternalformativ& c = 17159 const volatile gles2::cmds::GetInternalformativ& c =
17160 *static_cast<const volatile gles2::cmds::GetInternalformativ*>(cmd_data); 17160 *static_cast<const volatile gles2::cmds::GetInternalformativ*>(cmd_data);
17161 GLenum target = static_cast<GLenum>(c.target); 17161 GLenum target = static_cast<GLenum>(c.target);
17162 GLenum format = static_cast<GLenum>(c.format); 17162 GLenum format = static_cast<GLenum>(c.format);
17163 GLenum pname = static_cast<GLenum>(c.pname); 17163 GLenum pname = static_cast<GLenum>(c.pname);
17164 if (!validators_->render_buffer_target.IsValid(target)) { 17164 if (!validators_->render_buffer_target.IsValid(target)) {
17165 LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetInternalformativ", target, "target"); 17165 LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetInternalformativ", target, "target");
17166 return error::kNoError; 17166 return error::kNoError;
17167 } 17167 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
17241 } 17241 }
17242 } else { 17242 } else {
17243 glGetInternalformativ(target, format, pname, num_values, params); 17243 glGetInternalformativ(target, format, pname, num_values, params);
17244 } 17244 }
17245 result->SetNumResults(num_values); 17245 result->SetNumResults(num_values);
17246 return error::kNoError; 17246 return error::kNoError;
17247 } 17247 }
17248 17248
17249 error::Error GLES2DecoderImpl::HandleMapBufferRange( 17249 error::Error GLES2DecoderImpl::HandleMapBufferRange(
17250 uint32_t immediate_data_size, const volatile void* cmd_data) { 17250 uint32_t immediate_data_size, const volatile void* cmd_data) {
17251 if (!unsafe_es3_apis_enabled()) { 17251 if (!es3_apis_enabled()) {
17252 return error::kUnknownCommand; 17252 return error::kUnknownCommand;
17253 } 17253 }
17254 17254
17255 const char* func_name = "glMapBufferRange"; 17255 const char* func_name = "glMapBufferRange";
17256 const volatile gles2::cmds::MapBufferRange& c = 17256 const volatile gles2::cmds::MapBufferRange& c =
17257 *static_cast<const volatile gles2::cmds::MapBufferRange*>(cmd_data); 17257 *static_cast<const volatile gles2::cmds::MapBufferRange*>(cmd_data);
17258 GLenum target = static_cast<GLenum>(c.target); 17258 GLenum target = static_cast<GLenum>(c.target);
17259 GLbitfield access = static_cast<GLbitfield>(c.access); 17259 GLbitfield access = static_cast<GLbitfield>(c.access);
17260 GLintptr offset = static_cast<GLintptr>(c.offset); 17260 GLintptr offset = static_cast<GLintptr>(c.offset);
17261 GLsizeiptr size = static_cast<GLsizeiptr>(c.size); 17261 GLsizeiptr size = static_cast<GLsizeiptr>(c.size);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
17352 static_cast<unsigned int>(data_shm_offset)); 17352 static_cast<unsigned int>(data_shm_offset));
17353 if ((access & GL_MAP_INVALIDATE_RANGE_BIT) == 0) { 17353 if ((access & GL_MAP_INVALIDATE_RANGE_BIT) == 0) {
17354 memcpy(mem, ptr, size); 17354 memcpy(mem, ptr, size);
17355 } 17355 }
17356 *result = 1; 17356 *result = 1;
17357 return error::kNoError; 17357 return error::kNoError;
17358 } 17358 }
17359 17359
17360 error::Error GLES2DecoderImpl::HandleUnmapBuffer( 17360 error::Error GLES2DecoderImpl::HandleUnmapBuffer(
17361 uint32_t immediate_data_size, const volatile void* cmd_data) { 17361 uint32_t immediate_data_size, const volatile void* cmd_data) {
17362 if (!unsafe_es3_apis_enabled()) { 17362 if (!es3_apis_enabled()) {
17363 return error::kUnknownCommand; 17363 return error::kUnknownCommand;
17364 } 17364 }
17365 const char* func_name = "glUnmapBuffer"; 17365 const char* func_name = "glUnmapBuffer";
17366 17366
17367 const volatile gles2::cmds::UnmapBuffer& c = 17367 const volatile gles2::cmds::UnmapBuffer& c =
17368 *static_cast<const volatile gles2::cmds::UnmapBuffer*>(cmd_data); 17368 *static_cast<const volatile gles2::cmds::UnmapBuffer*>(cmd_data);
17369 GLenum target = static_cast<GLenum>(c.target); 17369 GLenum target = static_cast<GLenum>(c.target);
17370 17370
17371 if (!validators_->buffer_target.IsValid(target)) { 17371 if (!validators_->buffer_target.IsValid(target)) {
17372 LOCAL_SET_GL_ERROR_INVALID_ENUM(func_name, target, "target"); 17372 LOCAL_SET_GL_ERROR_INVALID_ENUM(func_name, target, "target");
(...skipping 1275 matching lines...) Expand 10 before | Expand all | Expand 10 after
18648 } 18648 }
18649 18649
18650 // Include the auto-generated part of this file. We split this because it means 18650 // Include the auto-generated part of this file. We split this because it means
18651 // we can easily edit the non-auto generated parts right here in this file 18651 // we can easily edit the non-auto generated parts right here in this file
18652 // instead of having to edit some template or the code generator. 18652 // instead of having to edit some template or the code generator.
18653 #include "base/macros.h" 18653 #include "base/macros.h"
18654 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 18654 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
18655 18655
18656 } // namespace gles2 18656 } // namespace gles2
18657 } // namespace gpu 18657 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698