| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #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 13404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13415 &texture_state_, &state_, &framebuffer_state_, func_name, args); | 13415 &texture_state_, &state_, &framebuffer_state_, func_name, args); |
| 13416 | 13416 |
| 13417 // This may be a slow command. Exit command processing to allow for | 13417 // This may be a slow command. Exit command processing to allow for |
| 13418 // context preemption and GPU watchdog checks. | 13418 // context preemption and GPU watchdog checks. |
| 13419 ExitCommandProcessingEarly(); | 13419 ExitCommandProcessingEarly(); |
| 13420 return error::kNoError; | 13420 return error::kNoError; |
| 13421 } | 13421 } |
| 13422 | 13422 |
| 13423 error::Error GLES2DecoderImpl::HandleTexImage3D(uint32_t immediate_data_size, | 13423 error::Error GLES2DecoderImpl::HandleTexImage3D(uint32_t immediate_data_size, |
| 13424 const volatile void* cmd_data) { | 13424 const volatile void* cmd_data) { |
| 13425 if (!unsafe_es3_apis_enabled()) | 13425 if (!feature_info_->IsWebGL2OrES3Context()) |
| 13426 return error::kUnknownCommand; | 13426 return error::kUnknownCommand; |
| 13427 | 13427 |
| 13428 const char* func_name = "glTexImage3D"; | 13428 const char* func_name = "glTexImage3D"; |
| 13429 const volatile gles2::cmds::TexImage3D& c = | 13429 const volatile gles2::cmds::TexImage3D& c = |
| 13430 *static_cast<const volatile gles2::cmds::TexImage3D*>(cmd_data); | 13430 *static_cast<const volatile gles2::cmds::TexImage3D*>(cmd_data); |
| 13431 TRACE_EVENT2("gpu", "GLES2DecoderImpl::HandleTexImage3D", | 13431 TRACE_EVENT2("gpu", "GLES2DecoderImpl::HandleTexImage3D", |
| 13432 "widthXheight", c.width * c.height, "depth", c.depth); | 13432 "widthXheight", c.width * c.height, "depth", c.depth); |
| 13433 // Set as failed for now, but if it successed, this will be set to not failed. | 13433 // Set as failed for now, but if it successed, this will be set to not failed. |
| 13434 texture_state_.tex_image_failed = true; | 13434 texture_state_.tex_image_failed = true; |
| 13435 GLenum target = static_cast<GLenum>(c.target); | 13435 GLenum target = static_cast<GLenum>(c.target); |
| (...skipping 821 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14257 | 14257 |
| 14258 // This may be a slow command. Exit command processing to allow for | 14258 // This may be a slow command. Exit command processing to allow for |
| 14259 // context preemption and GPU watchdog checks. | 14259 // context preemption and GPU watchdog checks. |
| 14260 ExitCommandProcessingEarly(); | 14260 ExitCommandProcessingEarly(); |
| 14261 return error::kNoError; | 14261 return error::kNoError; |
| 14262 } | 14262 } |
| 14263 | 14263 |
| 14264 error::Error GLES2DecoderImpl::HandleTexSubImage3D( | 14264 error::Error GLES2DecoderImpl::HandleTexSubImage3D( |
| 14265 uint32_t immediate_data_size, | 14265 uint32_t immediate_data_size, |
| 14266 const volatile void* cmd_data) { | 14266 const volatile void* cmd_data) { |
| 14267 if (!unsafe_es3_apis_enabled()) | 14267 if (!feature_info_->IsWebGL2OrES3Context()) |
| 14268 return error::kUnknownCommand; | 14268 return error::kUnknownCommand; |
| 14269 | 14269 |
| 14270 const char* func_name = "glTexSubImage3D"; | 14270 const char* func_name = "glTexSubImage3D"; |
| 14271 const volatile gles2::cmds::TexSubImage3D& c = | 14271 const volatile gles2::cmds::TexSubImage3D& c = |
| 14272 *static_cast<const volatile gles2::cmds::TexSubImage3D*>(cmd_data); | 14272 *static_cast<const volatile gles2::cmds::TexSubImage3D*>(cmd_data); |
| 14273 TRACE_EVENT2("gpu", "GLES2DecoderImpl::HandleTexSubImage3D", | 14273 TRACE_EVENT2("gpu", "GLES2DecoderImpl::HandleTexSubImage3D", |
| 14274 "widthXheight", c.width * c.height, "depth", c.depth); | 14274 "widthXheight", c.width * c.height, "depth", c.depth); |
| 14275 GLboolean internal = static_cast<GLboolean>(c.internal); | 14275 GLboolean internal = static_cast<GLboolean>(c.internal); |
| 14276 if (internal == GL_TRUE && texture_state_.tex_image_failed) | 14276 if (internal == GL_TRUE && texture_state_.tex_image_failed) |
| 14277 return error::kNoError; | 14277 return error::kNoError; |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14473 &result_size)) { | 14473 &result_size)) { |
| 14474 glGetUniformiv( | 14474 glGetUniformiv( |
| 14475 service_id, real_location, result->GetData()); | 14475 service_id, real_location, result->GetData()); |
| 14476 } | 14476 } |
| 14477 return error; | 14477 return error; |
| 14478 } | 14478 } |
| 14479 | 14479 |
| 14480 error::Error GLES2DecoderImpl::HandleGetUniformuiv( | 14480 error::Error GLES2DecoderImpl::HandleGetUniformuiv( |
| 14481 uint32_t immediate_data_size, | 14481 uint32_t immediate_data_size, |
| 14482 const volatile void* cmd_data) { | 14482 const volatile void* cmd_data) { |
| 14483 if (!unsafe_es3_apis_enabled()) | 14483 if (!feature_info_->IsWebGL2OrES3Context()) |
| 14484 return error::kUnknownCommand; | 14484 return error::kUnknownCommand; |
| 14485 | 14485 |
| 14486 const volatile gles2::cmds::GetUniformuiv& c = | 14486 const volatile gles2::cmds::GetUniformuiv& c = |
| 14487 *static_cast<const volatile gles2::cmds::GetUniformuiv*>(cmd_data); | 14487 *static_cast<const volatile gles2::cmds::GetUniformuiv*>(cmd_data); |
| 14488 GLuint program = c.program; | 14488 GLuint program = c.program; |
| 14489 GLint fake_location = c.location; | 14489 GLint fake_location = c.location; |
| 14490 GLuint service_id; | 14490 GLuint service_id; |
| 14491 GLenum result_type; | 14491 GLenum result_type; |
| 14492 GLsizei result_size; | 14492 GLsizei result_size; |
| 14493 GLint real_location = -1; | 14493 GLint real_location = -1; |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14650 result->size = uniform_info->size; | 14650 result->size = uniform_info->size; |
| 14651 result->type = uniform_info->type; | 14651 result->type = uniform_info->type; |
| 14652 Bucket* bucket = CreateBucket(name_bucket_id); | 14652 Bucket* bucket = CreateBucket(name_bucket_id); |
| 14653 bucket->SetFromString(uniform_info->name.c_str()); | 14653 bucket->SetFromString(uniform_info->name.c_str()); |
| 14654 return error::kNoError; | 14654 return error::kNoError; |
| 14655 } | 14655 } |
| 14656 | 14656 |
| 14657 error::Error GLES2DecoderImpl::HandleGetActiveUniformBlockiv( | 14657 error::Error GLES2DecoderImpl::HandleGetActiveUniformBlockiv( |
| 14658 uint32_t immediate_data_size, | 14658 uint32_t immediate_data_size, |
| 14659 const volatile void* cmd_data) { | 14659 const volatile void* cmd_data) { |
| 14660 if (!unsafe_es3_apis_enabled()) | 14660 if (!feature_info_->IsWebGL2OrES3Context()) |
| 14661 return error::kUnknownCommand; | 14661 return error::kUnknownCommand; |
| 14662 const volatile gles2::cmds::GetActiveUniformBlockiv& c = | 14662 const volatile gles2::cmds::GetActiveUniformBlockiv& c = |
| 14663 *static_cast<const volatile gles2::cmds::GetActiveUniformBlockiv*>( | 14663 *static_cast<const volatile gles2::cmds::GetActiveUniformBlockiv*>( |
| 14664 cmd_data); | 14664 cmd_data); |
| 14665 GLuint program_id = c.program; | 14665 GLuint program_id = c.program; |
| 14666 GLuint index = static_cast<GLuint>(c.index); | 14666 GLuint index = static_cast<GLuint>(c.index); |
| 14667 GLenum pname = static_cast<GLenum>(c.pname); | 14667 GLenum pname = static_cast<GLenum>(c.pname); |
| 14668 Program* program = GetProgramInfoNotShader( | 14668 Program* program = GetProgramInfoNotShader( |
| 14669 program_id, "glGetActiveUniformBlockiv"); | 14669 program_id, "glGetActiveUniformBlockiv"); |
| 14670 if (!program) { | 14670 if (!program) { |
| 14671 return error::kNoError; | 14671 return error::kNoError; |
| 14672 } | 14672 } |
| 14673 GLuint service_id = program->service_id(); | 14673 GLuint service_id = program->service_id(); |
| 14674 GLint link_status = GL_FALSE; | 14674 GLint link_status = GL_FALSE; |
| 14675 glGetProgramiv(service_id, GL_LINK_STATUS, &link_status); | 14675 glGetProgramiv(service_id, GL_LINK_STATUS, &link_status); |
| 14676 if (link_status != GL_TRUE) { | 14676 if (link_status != GL_TRUE) { |
| 14677 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, | 14677 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, |
| 14678 "glGetActiveActiveUniformBlockiv", "program not linked"); | 14678 "glGetActiveActiveUniformBlockiv", "program not linked"); |
| 14679 return error::kNoError; | 14679 return error::kNoError; |
| 14680 } | 14680 } |
| 14681 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetActiveUniformBlockiv"); | 14681 if (index >= program->uniform_block_size_info().size()) { |
| 14682 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glGetActiveUniformBlockiv", |
| 14683 "uniformBlockIndex >= active uniform blocks"); |
| 14684 return error::kNoError; |
| 14685 } |
| 14682 GLsizei num_values = 1; | 14686 GLsizei num_values = 1; |
| 14683 if (pname == GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) { | 14687 if (pname == GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) { |
| 14684 GLint num = 0; | 14688 GLint num = 0; |
| 14685 glGetActiveUniformBlockiv( | 14689 glGetActiveUniformBlockiv( |
| 14686 service_id, index, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, &num); | 14690 service_id, index, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, &num); |
| 14687 GLenum error = glGetError(); | 14691 GLenum error = glGetError(); |
| 14688 if (error != GL_NO_ERROR) { | 14692 if (error != GL_NO_ERROR) { |
| 14689 // Assume this will the same error if calling with pname. | 14693 // Assume this will the same error if calling with pname. |
| 14690 LOCAL_SET_GL_ERROR(error, "GetActiveUniformBlockiv", ""); | 14694 LOCAL_SET_GL_ERROR(error, "GetActiveUniformBlockiv", ""); |
| 14691 return error::kNoError; | 14695 return error::kNoError; |
| 14692 } | 14696 } |
| 14693 num_values = static_cast<GLsizei>(num); | 14697 num_values = static_cast<GLsizei>(num); |
| 14694 } | 14698 } |
| 14695 typedef cmds::GetActiveUniformBlockiv::Result Result; | 14699 typedef cmds::GetActiveUniformBlockiv::Result Result; |
| 14696 Result* result = GetSharedMemoryAs<Result*>( | 14700 Result* result = GetSharedMemoryAs<Result*>( |
| 14697 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); | 14701 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); |
| 14698 GLint* params = result ? result->GetData() : NULL; | 14702 GLint* params = result ? result->GetData() : NULL; |
| 14699 if (params == NULL) { | 14703 if (params == NULL) { |
| 14700 return error::kOutOfBounds; | 14704 return error::kOutOfBounds; |
| 14701 } | 14705 } |
| 14702 // Check that the client initialized the result. | 14706 // Check that the client initialized the result. |
| 14703 if (result->size != 0) { | 14707 if (result->size != 0) { |
| 14704 return error::kInvalidArguments; | 14708 return error::kInvalidArguments; |
| 14705 } | 14709 } |
| 14706 glGetActiveUniformBlockiv(service_id, index, pname, params); | 14710 glGetActiveUniformBlockiv(service_id, index, pname, params); |
| 14707 GLenum error = glGetError(); | 14711 result->SetNumResults(num_values); |
| 14708 if (error == GL_NO_ERROR) { | |
| 14709 result->SetNumResults(num_values); | |
| 14710 } else { | |
| 14711 LOCAL_SET_GL_ERROR(error, "GetActiveUniformBlockiv", ""); | |
| 14712 } | |
| 14713 return error::kNoError; | 14712 return error::kNoError; |
| 14714 } | 14713 } |
| 14715 | 14714 |
| 14716 error::Error GLES2DecoderImpl::HandleGetActiveUniformBlockName( | 14715 error::Error GLES2DecoderImpl::HandleGetActiveUniformBlockName( |
| 14717 uint32_t immediate_data_size, | 14716 uint32_t immediate_data_size, |
| 14718 const volatile void* cmd_data) { | 14717 const volatile void* cmd_data) { |
| 14719 if (!unsafe_es3_apis_enabled()) | 14718 if (!feature_info_->IsWebGL2OrES3Context()) |
| 14720 return error::kUnknownCommand; | 14719 return error::kUnknownCommand; |
| 14721 const volatile gles2::cmds::GetActiveUniformBlockName& c = | 14720 const volatile gles2::cmds::GetActiveUniformBlockName& c = |
| 14722 *static_cast<const volatile gles2::cmds::GetActiveUniformBlockName*>( | 14721 *static_cast<const volatile gles2::cmds::GetActiveUniformBlockName*>( |
| 14723 cmd_data); | 14722 cmd_data); |
| 14724 GLuint program_id = c.program; | 14723 GLuint program_id = c.program; |
| 14725 GLuint index = c.index; | 14724 GLuint index = c.index; |
| 14726 uint32_t name_bucket_id = c.name_bucket_id; | 14725 uint32_t name_bucket_id = c.name_bucket_id; |
| 14727 typedef cmds::GetActiveUniformBlockName::Result Result; | 14726 typedef cmds::GetActiveUniformBlockName::Result Result; |
| 14728 Result* result = GetSharedMemoryAs<Result*>( | 14727 Result* result = GetSharedMemoryAs<Result*>( |
| 14729 c.result_shm_id, c.result_shm_offset, sizeof(*result)); | 14728 c.result_shm_id, c.result_shm_offset, sizeof(*result)); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 14740 return error::kNoError; | 14739 return error::kNoError; |
| 14741 } | 14740 } |
| 14742 GLuint service_id = program->service_id(); | 14741 GLuint service_id = program->service_id(); |
| 14743 GLint link_status = GL_FALSE; | 14742 GLint link_status = GL_FALSE; |
| 14744 glGetProgramiv(service_id, GL_LINK_STATUS, &link_status); | 14743 glGetProgramiv(service_id, GL_LINK_STATUS, &link_status); |
| 14745 if (link_status != GL_TRUE) { | 14744 if (link_status != GL_TRUE) { |
| 14746 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, | 14745 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, |
| 14747 "glGetActiveActiveUniformBlockName", "program not linked"); | 14746 "glGetActiveActiveUniformBlockName", "program not linked"); |
| 14748 return error::kNoError; | 14747 return error::kNoError; |
| 14749 } | 14748 } |
| 14749 if (index >= program->uniform_block_size_info().size()) { |
| 14750 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glGetActiveUniformBlockName", |
| 14751 "uniformBlockIndex >= active uniform blocks"); |
| 14752 return error::kNoError; |
| 14753 } |
| 14750 GLint max_length = 0; | 14754 GLint max_length = 0; |
| 14751 glGetProgramiv( | 14755 glGetProgramiv( |
| 14752 service_id, GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH, &max_length); | 14756 service_id, GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH, &max_length); |
| 14753 // Increase one so &buffer[0] is always valid. | 14757 // Increase one so &buffer[0] is always valid. |
| 14754 GLsizei buf_size = static_cast<GLsizei>(max_length) + 1; | 14758 GLsizei buf_size = static_cast<GLsizei>(max_length) + 1; |
| 14755 std::vector<char> buffer(buf_size); | 14759 std::vector<char> buffer(buf_size); |
| 14756 GLsizei length = 0; | 14760 GLsizei length = 0; |
| 14757 glGetActiveUniformBlockName( | 14761 glGetActiveUniformBlockName( |
| 14758 service_id, index, buf_size, &length, &buffer[0]); | 14762 service_id, index, buf_size, &length, &buffer[0]); |
| 14759 if (length == 0) { | 14763 if (length == 0) { |
| 14760 *result = 0; | 14764 *result = 0; |
| 14761 return error::kNoError; | 14765 return error::kNoError; |
| 14762 } | 14766 } |
| 14763 *result = 1; | 14767 *result = 1; |
| 14764 Bucket* bucket = CreateBucket(name_bucket_id); | 14768 Bucket* bucket = CreateBucket(name_bucket_id); |
| 14765 DCHECK_GT(buf_size, length); | 14769 DCHECK_GT(buf_size, length); |
| 14766 DCHECK_EQ(0, buffer[length]); | 14770 DCHECK_EQ(0, buffer[length]); |
| 14767 bucket->SetFromString(&buffer[0]); | 14771 bucket->SetFromString(&buffer[0]); |
| 14768 return error::kNoError; | 14772 return error::kNoError; |
| 14769 } | 14773 } |
| 14770 | 14774 |
| 14771 error::Error GLES2DecoderImpl::HandleGetActiveUniformsiv( | 14775 error::Error GLES2DecoderImpl::HandleGetActiveUniformsiv( |
| 14772 uint32_t immediate_data_size, | 14776 uint32_t immediate_data_size, |
| 14773 const volatile void* cmd_data) { | 14777 const volatile void* cmd_data) { |
| 14774 if (!unsafe_es3_apis_enabled()) | 14778 if (!feature_info_->IsWebGL2OrES3Context()) |
| 14775 return error::kUnknownCommand; | 14779 return error::kUnknownCommand; |
| 14776 const volatile gles2::cmds::GetActiveUniformsiv& c = | 14780 const volatile gles2::cmds::GetActiveUniformsiv& c = |
| 14777 *static_cast<const volatile gles2::cmds::GetActiveUniformsiv*>(cmd_data); | 14781 *static_cast<const volatile gles2::cmds::GetActiveUniformsiv*>(cmd_data); |
| 14778 GLuint program_id = c.program; | 14782 GLuint program_id = c.program; |
| 14779 GLenum pname = static_cast<GLenum>(c.pname); | 14783 GLenum pname = static_cast<GLenum>(c.pname); |
| 14780 Bucket* bucket = GetBucket(c.indices_bucket_id); | 14784 Bucket* bucket = GetBucket(c.indices_bucket_id); |
| 14781 if (!bucket) { | 14785 if (!bucket) { |
| 14782 return error::kInvalidArguments; | 14786 return error::kInvalidArguments; |
| 14783 } | 14787 } |
| 14784 if (!validators_->uniform_parameter.IsValid(pname)) { | 14788 if (!validators_->uniform_parameter.IsValid(pname)) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 14796 } | 14800 } |
| 14797 // Check that the client initialized the result. | 14801 // Check that the client initialized the result. |
| 14798 if (result->size != 0) { | 14802 if (result->size != 0) { |
| 14799 return error::kInvalidArguments; | 14803 return error::kInvalidArguments; |
| 14800 } | 14804 } |
| 14801 Program* program = GetProgramInfoNotShader( | 14805 Program* program = GetProgramInfoNotShader( |
| 14802 program_id, "glGetActiveUniformsiv"); | 14806 program_id, "glGetActiveUniformsiv"); |
| 14803 if (!program) { | 14807 if (!program) { |
| 14804 return error::kNoError; | 14808 return error::kNoError; |
| 14805 } | 14809 } |
| 14810 GLint activeUniforms = 0; |
| 14811 program->GetProgramiv(GL_ACTIVE_UNIFORMS, &activeUniforms); |
| 14812 for (int i = 0; i < count; i++) { |
| 14813 if (indices[i] >= static_cast<GLuint>(activeUniforms)) { |
| 14814 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, |
| 14815 "glGetActiveUniformsiv", "index >= active uniforms"); |
| 14816 return error::kNoError; |
| 14817 } |
| 14818 } |
| 14806 GLuint service_id = program->service_id(); | 14819 GLuint service_id = program->service_id(); |
| 14807 GLint link_status = GL_FALSE; | 14820 GLint link_status = GL_FALSE; |
| 14808 glGetProgramiv(service_id, GL_LINK_STATUS, &link_status); | 14821 glGetProgramiv(service_id, GL_LINK_STATUS, &link_status); |
| 14809 if (link_status != GL_TRUE) { | 14822 if (link_status != GL_TRUE) { |
| 14810 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, | 14823 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, |
| 14811 "glGetActiveUniformsiv", "program not linked"); | 14824 "glGetActiveUniformsiv", "program not linked"); |
| 14812 return error::kNoError; | 14825 return error::kNoError; |
| 14813 } | 14826 } |
| 14814 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetActiveUniformsiv"); | |
| 14815 glGetActiveUniformsiv(service_id, count, indices, pname, params); | 14827 glGetActiveUniformsiv(service_id, count, indices, pname, params); |
| 14816 GLenum error = glGetError(); | 14828 result->SetNumResults(count); |
| 14817 if (error == GL_NO_ERROR) { | |
| 14818 result->SetNumResults(count); | |
| 14819 } else { | |
| 14820 LOCAL_SET_GL_ERROR(error, "GetActiveUniformsiv", ""); | |
| 14821 } | |
| 14822 return error::kNoError; | 14829 return error::kNoError; |
| 14823 } | 14830 } |
| 14824 | 14831 |
| 14825 error::Error GLES2DecoderImpl::HandleGetActiveAttrib( | 14832 error::Error GLES2DecoderImpl::HandleGetActiveAttrib( |
| 14826 uint32_t immediate_data_size, | 14833 uint32_t immediate_data_size, |
| 14827 const volatile void* cmd_data) { | 14834 const volatile void* cmd_data) { |
| 14828 const volatile gles2::cmds::GetActiveAttrib& c = | 14835 const volatile gles2::cmds::GetActiveAttrib& c = |
| 14829 *static_cast<const volatile gles2::cmds::GetActiveAttrib*>(cmd_data); | 14836 *static_cast<const volatile gles2::cmds::GetActiveAttrib*>(cmd_data); |
| 14830 GLuint program_id = c.program; | 14837 GLuint program_id = c.program; |
| 14831 GLuint index = c.index; | 14838 GLuint index = c.index; |
| (...skipping 3928 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 18760 } | 18767 } |
| 18761 | 18768 |
| 18762 // Include the auto-generated part of this file. We split this because it means | 18769 // Include the auto-generated part of this file. We split this because it means |
| 18763 // we can easily edit the non-auto generated parts right here in this file | 18770 // we can easily edit the non-auto generated parts right here in this file |
| 18764 // instead of having to edit some template or the code generator. | 18771 // instead of having to edit some template or the code generator. |
| 18765 #include "base/macros.h" | 18772 #include "base/macros.h" |
| 18766 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 18773 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
| 18767 | 18774 |
| 18768 } // namespace gles2 | 18775 } // namespace gles2 |
| 18769 } // namespace gpu | 18776 } // namespace gpu |
| OLD | NEW |