Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(161)

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder.cc

Issue 147593011: Hookup clear_uniforms_before_first_program_use workaround with implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: same Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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_first_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
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_first_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
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 ?
6624 ProgramManager::kANGLE : ProgramManager::kGL);
6620 }; 6625 };
6621 6626
6622 void GLES2DecoderImpl::DoGetShaderiv( 6627 void GLES2DecoderImpl::DoGetShaderiv(
6623 GLuint shader_id, GLenum pname, GLint* params) { 6628 GLuint shader_id, GLenum pname, GLint* params) {
6624 Shader* shader = GetShaderInfoNotProgram(shader_id, "glGetShaderiv"); 6629 Shader* shader = GetShaderInfoNotProgram(shader_id, "glGetShaderiv");
6625 if (!shader) { 6630 if (!shader) {
6626 return; 6631 return;
6627 } 6632 }
6628 switch (pname) { 6633 switch (pname) {
6629 case GL_SHADER_SOURCE_LENGTH: 6634 case GL_SHADER_SOURCE_LENGTH:
(...skipping 3886 matching lines...) Expand 10 before | Expand all | Expand 10 after
10516 DoDidUseTexImageIfNeeded(texture, texture->target()); 10521 DoDidUseTexImageIfNeeded(texture, texture->target());
10517 } 10522 }
10518 10523
10519 // Include the auto-generated part of this file. We split this because it means 10524 // 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 10525 // 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. 10526 // instead of having to edit some template or the code generator.
10522 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 10527 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
10523 10528
10524 } // namespace gles2 10529 } // namespace gles2
10525 } // namespace gpu 10530 } // namespace gpu
OLDNEW
« no previous file with comments | « no previous file | gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698