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