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 |