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 5399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5410 LogClientServiceForInfo(program, program_id, "glLinkProgram"); | 5410 LogClientServiceForInfo(program, program_id, "glLinkProgram"); |
5411 ShaderTranslator* vertex_translator = NULL; | 5411 ShaderTranslator* vertex_translator = NULL; |
5412 ShaderTranslator* fragment_translator = NULL; | 5412 ShaderTranslator* fragment_translator = NULL; |
5413 if (use_shader_translator_) { | 5413 if (use_shader_translator_) { |
5414 vertex_translator = vertex_translator_.get(); | 5414 vertex_translator = vertex_translator_.get(); |
5415 fragment_translator = fragment_translator_.get(); | 5415 fragment_translator = fragment_translator_.get(); |
5416 } | 5416 } |
5417 if (program->Link(shader_manager(), | 5417 if (program->Link(shader_manager(), |
5418 vertex_translator, | 5418 vertex_translator, |
5419 fragment_translator, | 5419 fragment_translator, |
5420 feature_info_.get(), | |
5421 shader_cache_callback_)) { | 5420 shader_cache_callback_)) { |
5422 if (program == state_.current_program.get()) { | 5421 if (program == state_.current_program.get()) { |
5423 if (workarounds().use_current_program_after_successful_link) { | 5422 if (workarounds().use_current_program_after_successful_link) |
5424 glUseProgram(program->service_id()); | 5423 glUseProgram(program->service_id()); |
5425 } | 5424 if (workarounds().clear_uniforms_before_program_use) |
5426 program_manager()->ClearUniforms(program); | 5425 program_manager()->ClearUniforms(program); |
5427 } | 5426 } |
5428 } | 5427 } |
5429 }; | 5428 }; |
5430 | 5429 |
5431 void GLES2DecoderImpl::DoTexParameterf( | 5430 void GLES2DecoderImpl::DoTexParameterf( |
5432 GLenum target, GLenum pname, GLfloat param) { | 5431 GLenum target, GLenum pname, GLfloat param) { |
5433 TextureRef* texture = texture_manager()->GetTextureInfoForTarget( | 5432 TextureRef* texture = texture_manager()->GetTextureInfoForTarget( |
5434 &state_, target); | 5433 &state_, target); |
5435 if (!texture) { | 5434 if (!texture) { |
5436 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glTexParameterf", "unknown texture"); | 5435 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glTexParameterf", "unknown texture"); |
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5882 } | 5881 } |
5883 if (state_.current_program.get()) { | 5882 if (state_.current_program.get()) { |
5884 program_manager()->UnuseProgram(shader_manager(), | 5883 program_manager()->UnuseProgram(shader_manager(), |
5885 state_.current_program.get()); | 5884 state_.current_program.get()); |
5886 } | 5885 } |
5887 state_.current_program = program; | 5886 state_.current_program = program; |
5888 LogClientServiceMapping("glUseProgram", program_id, service_id); | 5887 LogClientServiceMapping("glUseProgram", program_id, service_id); |
5889 glUseProgram(service_id); | 5888 glUseProgram(service_id); |
5890 if (state_.current_program.get()) { | 5889 if (state_.current_program.get()) { |
5891 program_manager()->UseProgram(state_.current_program.get()); | 5890 program_manager()->UseProgram(state_.current_program.get()); |
| 5891 if (workarounds().clear_uniforms_before_program_use) |
| 5892 program_manager()->ClearUniforms(program); |
5892 } | 5893 } |
5893 } | 5894 } |
5894 | 5895 |
5895 void GLES2DecoderImpl::RenderWarning( | 5896 void GLES2DecoderImpl::RenderWarning( |
5896 const char* filename, int line, const std::string& msg) { | 5897 const char* filename, int line, const std::string& msg) { |
5897 logger_.LogMessage(filename, line, std::string("RENDER WARNING: ") + msg); | 5898 logger_.LogMessage(filename, line, std::string("RENDER WARNING: ") + msg); |
5898 } | 5899 } |
5899 | 5900 |
5900 void GLES2DecoderImpl::PerformanceWarning( | 5901 void GLES2DecoderImpl::PerformanceWarning( |
5901 const char* filename, int line, const std::string& msg) { | 5902 const char* filename, int line, const std::string& msg) { |
(...skipping 707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6609 Shader* shader = GetShaderInfoNotProgram(client_id, "glCompileShader"); | 6610 Shader* shader = GetShaderInfoNotProgram(client_id, "glCompileShader"); |
6610 if (!shader) { | 6611 if (!shader) { |
6611 return; | 6612 return; |
6612 } | 6613 } |
6613 ShaderTranslator* translator = NULL; | 6614 ShaderTranslator* translator = NULL; |
6614 if (use_shader_translator_) { | 6615 if (use_shader_translator_) { |
6615 translator = shader->shader_type() == GL_VERTEX_SHADER ? | 6616 translator = shader->shader_type() == GL_VERTEX_SHADER ? |
6616 vertex_translator_.get() : fragment_translator_.get(); | 6617 vertex_translator_.get() : fragment_translator_.get(); |
6617 } | 6618 } |
6618 | 6619 |
6619 program_manager()->DoCompileShader(shader, translator, feature_info_.get()); | 6620 program_manager()->DoCompileShader( |
| 6621 shader, |
| 6622 translator, |
| 6623 feature_info_->feature_flags().angle_translated_shader_source); |
6620 }; | 6624 }; |
6621 | 6625 |
6622 void GLES2DecoderImpl::DoGetShaderiv( | 6626 void GLES2DecoderImpl::DoGetShaderiv( |
6623 GLuint shader_id, GLenum pname, GLint* params) { | 6627 GLuint shader_id, GLenum pname, GLint* params) { |
6624 Shader* shader = GetShaderInfoNotProgram(shader_id, "glGetShaderiv"); | 6628 Shader* shader = GetShaderInfoNotProgram(shader_id, "glGetShaderiv"); |
6625 if (!shader) { | 6629 if (!shader) { |
6626 return; | 6630 return; |
6627 } | 6631 } |
6628 switch (pname) { | 6632 switch (pname) { |
6629 case GL_SHADER_SOURCE_LENGTH: | 6633 case GL_SHADER_SOURCE_LENGTH: |
(...skipping 3886 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10516 DoDidUseTexImageIfNeeded(texture, texture->target()); | 10520 DoDidUseTexImageIfNeeded(texture, texture->target()); |
10517 } | 10521 } |
10518 | 10522 |
10519 // Include the auto-generated part of this file. We split this because it means | 10523 // Include the auto-generated part of this file. We split this because it means |
10520 // we can easily edit the non-auto generated parts right here in this file | 10524 // we can easily edit the non-auto generated parts right here in this file |
10521 // instead of having to edit some template or the code generator. | 10525 // instead of having to edit some template or the code generator. |
10522 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 10526 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
10523 | 10527 |
10524 } // namespace gles2 | 10528 } // namespace gles2 |
10525 } // namespace gpu | 10529 } // namespace gpu |
OLD | NEW |