| 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 <stdio.h> | 7 #include <stdio.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <list> | 10 #include <list> |
| (...skipping 5424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5435 LogClientServiceForInfo(program, program_id, "glLinkProgram"); | 5435 LogClientServiceForInfo(program, program_id, "glLinkProgram"); |
| 5436 ShaderTranslator* vertex_translator = NULL; | 5436 ShaderTranslator* vertex_translator = NULL; |
| 5437 ShaderTranslator* fragment_translator = NULL; | 5437 ShaderTranslator* fragment_translator = NULL; |
| 5438 if (use_shader_translator_) { | 5438 if (use_shader_translator_) { |
| 5439 vertex_translator = vertex_translator_.get(); | 5439 vertex_translator = vertex_translator_.get(); |
| 5440 fragment_translator = fragment_translator_.get(); | 5440 fragment_translator = fragment_translator_.get(); |
| 5441 } | 5441 } |
| 5442 if (program->Link(shader_manager(), | 5442 if (program->Link(shader_manager(), |
| 5443 vertex_translator, | 5443 vertex_translator, |
| 5444 fragment_translator, | 5444 fragment_translator, |
| 5445 feature_info_.get(), |
| 5445 shader_cache_callback_)) { | 5446 shader_cache_callback_)) { |
| 5446 if (program == state_.current_program.get()) { | 5447 if (program == state_.current_program.get()) { |
| 5447 if (workarounds().use_current_program_after_successful_link) | 5448 if (workarounds().use_current_program_after_successful_link) { |
| 5448 glUseProgram(program->service_id()); | 5449 glUseProgram(program->service_id()); |
| 5449 if (workarounds().clear_uniforms_before_first_program_use) | 5450 } |
| 5450 program_manager()->ClearUniforms(program); | 5451 program_manager()->ClearUniforms(program); |
| 5451 } | 5452 } |
| 5452 } | 5453 } |
| 5453 }; | 5454 }; |
| 5454 | 5455 |
| 5455 void GLES2DecoderImpl::DoTexParameterf( | 5456 void GLES2DecoderImpl::DoTexParameterf( |
| 5456 GLenum target, GLenum pname, GLfloat param) { | 5457 GLenum target, GLenum pname, GLfloat param) { |
| 5457 TextureRef* texture = texture_manager()->GetTextureInfoForTarget( | 5458 TextureRef* texture = texture_manager()->GetTextureInfoForTarget( |
| 5458 &state_, target); | 5459 &state_, target); |
| 5459 if (!texture) { | 5460 if (!texture) { |
| 5460 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glTexParameterf", "unknown texture"); | 5461 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glTexParameterf", "unknown texture"); |
| (...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5906 } | 5907 } |
| 5907 if (state_.current_program.get()) { | 5908 if (state_.current_program.get()) { |
| 5908 program_manager()->UnuseProgram(shader_manager(), | 5909 program_manager()->UnuseProgram(shader_manager(), |
| 5909 state_.current_program.get()); | 5910 state_.current_program.get()); |
| 5910 } | 5911 } |
| 5911 state_.current_program = program; | 5912 state_.current_program = program; |
| 5912 LogClientServiceMapping("glUseProgram", program_id, service_id); | 5913 LogClientServiceMapping("glUseProgram", program_id, service_id); |
| 5913 glUseProgram(service_id); | 5914 glUseProgram(service_id); |
| 5914 if (state_.current_program.get()) { | 5915 if (state_.current_program.get()) { |
| 5915 program_manager()->UseProgram(state_.current_program.get()); | 5916 program_manager()->UseProgram(state_.current_program.get()); |
| 5916 if (workarounds().clear_uniforms_before_first_program_use) | |
| 5917 program_manager()->ClearUniforms(program); | |
| 5918 } | 5917 } |
| 5919 } | 5918 } |
| 5920 | 5919 |
| 5921 void GLES2DecoderImpl::RenderWarning( | 5920 void GLES2DecoderImpl::RenderWarning( |
| 5922 const char* filename, int line, const std::string& msg) { | 5921 const char* filename, int line, const std::string& msg) { |
| 5923 logger_.LogMessage(filename, line, std::string("RENDER WARNING: ") + msg); | 5922 logger_.LogMessage(filename, line, std::string("RENDER WARNING: ") + msg); |
| 5924 } | 5923 } |
| 5925 | 5924 |
| 5926 void GLES2DecoderImpl::PerformanceWarning( | 5925 void GLES2DecoderImpl::PerformanceWarning( |
| 5927 const char* filename, int line, const std::string& msg) { | 5926 const char* filename, int line, const std::string& msg) { |
| (...skipping 729 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6657 Shader* shader = GetShaderInfoNotProgram(client_id, "glCompileShader"); | 6656 Shader* shader = GetShaderInfoNotProgram(client_id, "glCompileShader"); |
| 6658 if (!shader) { | 6657 if (!shader) { |
| 6659 return; | 6658 return; |
| 6660 } | 6659 } |
| 6661 ShaderTranslator* translator = NULL; | 6660 ShaderTranslator* translator = NULL; |
| 6662 if (use_shader_translator_) { | 6661 if (use_shader_translator_) { |
| 6663 translator = shader->shader_type() == GL_VERTEX_SHADER ? | 6662 translator = shader->shader_type() == GL_VERTEX_SHADER ? |
| 6664 vertex_translator_.get() : fragment_translator_.get(); | 6663 vertex_translator_.get() : fragment_translator_.get(); |
| 6665 } | 6664 } |
| 6666 | 6665 |
| 6667 program_manager()->DoCompileShader( | 6666 program_manager()->DoCompileShader(shader, translator, feature_info_.get()); |
| 6668 shader, | |
| 6669 translator, | |
| 6670 feature_info_->feature_flags().angle_translated_shader_source ? | |
| 6671 ProgramManager::kANGLE : ProgramManager::kGL); | |
| 6672 }; | 6667 }; |
| 6673 | 6668 |
| 6674 void GLES2DecoderImpl::DoGetShaderiv( | 6669 void GLES2DecoderImpl::DoGetShaderiv( |
| 6675 GLuint shader_id, GLenum pname, GLint* params) { | 6670 GLuint shader_id, GLenum pname, GLint* params) { |
| 6676 Shader* shader = GetShaderInfoNotProgram(shader_id, "glGetShaderiv"); | 6671 Shader* shader = GetShaderInfoNotProgram(shader_id, "glGetShaderiv"); |
| 6677 if (!shader) { | 6672 if (!shader) { |
| 6678 return; | 6673 return; |
| 6679 } | 6674 } |
| 6680 switch (pname) { | 6675 switch (pname) { |
| 6681 case GL_SHADER_SOURCE_LENGTH: | 6676 case GL_SHADER_SOURCE_LENGTH: |
| (...skipping 3972 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10654 DoDidUseTexImageIfNeeded(texture, texture->target()); | 10649 DoDidUseTexImageIfNeeded(texture, texture->target()); |
| 10655 } | 10650 } |
| 10656 | 10651 |
| 10657 // Include the auto-generated part of this file. We split this because it means | 10652 // Include the auto-generated part of this file. We split this because it means |
| 10658 // we can easily edit the non-auto generated parts right here in this file | 10653 // we can easily edit the non-auto generated parts right here in this file |
| 10659 // instead of having to edit some template or the code generator. | 10654 // instead of having to edit some template or the code generator. |
| 10660 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 10655 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
| 10661 | 10656 |
| 10662 } // namespace gles2 | 10657 } // namespace gles2 |
| 10663 } // namespace gpu | 10658 } // namespace gpu |
| OLD | NEW |