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

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

Issue 7358006: Cache OpenGL program info on the client side of the command buffer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 9 years, 4 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 4709 matching lines...) Expand 10 before | Expand all | Expand 10 after
4720 } 4720 }
4721 4721
4722 error::Error GLES2DecoderImpl::HandleGetProgramInfoLog( 4722 error::Error GLES2DecoderImpl::HandleGetProgramInfoLog(
4723 uint32 immediate_data_size, const gles2::GetProgramInfoLog& c) { 4723 uint32 immediate_data_size, const gles2::GetProgramInfoLog& c) {
4724 GLuint program = c.program; 4724 GLuint program = c.program;
4725 uint32 bucket_id = static_cast<uint32>(c.bucket_id); 4725 uint32 bucket_id = static_cast<uint32>(c.bucket_id);
4726 Bucket* bucket = CreateBucket(bucket_id); 4726 Bucket* bucket = CreateBucket(bucket_id);
4727 ProgramManager::ProgramInfo* info = GetProgramInfoNotShader( 4727 ProgramManager::ProgramInfo* info = GetProgramInfoNotShader(
4728 program, "glGetProgramInfoLog"); 4728 program, "glGetProgramInfoLog");
4729 if (!info || !info->log_info()) { 4729 if (!info || !info->log_info()) {
4730 bucket->SetSize(0); 4730 bucket->SetFromString("");
4731 return error::kNoError; 4731 return error::kNoError;
4732 } 4732 }
4733 bucket->SetFromString(info->log_info()->c_str()); 4733 bucket->SetFromString(info->log_info()->c_str());
4734 return error::kNoError; 4734 return error::kNoError;
4735 } 4735 }
4736 4736
4737 error::Error GLES2DecoderImpl::HandleGetShaderInfoLog( 4737 error::Error GLES2DecoderImpl::HandleGetShaderInfoLog(
4738 uint32 immediate_data_size, const gles2::GetShaderInfoLog& c) { 4738 uint32 immediate_data_size, const gles2::GetShaderInfoLog& c) {
4739 GLuint shader = c.shader; 4739 GLuint shader = c.shader;
4740 uint32 bucket_id = static_cast<uint32>(c.bucket_id); 4740 uint32 bucket_id = static_cast<uint32>(c.bucket_id);
4741 Bucket* bucket = CreateBucket(bucket_id); 4741 Bucket* bucket = CreateBucket(bucket_id);
4742 ShaderManager::ShaderInfo* info = GetShaderInfoNotProgram( 4742 ShaderManager::ShaderInfo* info = GetShaderInfoNotProgram(
4743 shader, "glGetShaderInfoLog"); 4743 shader, "glGetShaderInfoLog");
4744 if (!info || !info->log_info()) { 4744 if (!info || !info->log_info()) {
4745 bucket->SetSize(0); 4745 bucket->SetFromString("");
4746 return error::kNoError; 4746 return error::kNoError;
4747 } 4747 }
4748 bucket->SetFromString(info->log_info()->c_str()); 4748 bucket->SetFromString(info->log_info()->c_str());
4749 return error::kNoError; 4749 return error::kNoError;
4750 } 4750 }
4751 4751
4752 bool GLES2DecoderImpl::DoIsBuffer(GLuint client_id) { 4752 bool GLES2DecoderImpl::DoIsBuffer(GLuint client_id) {
4753 const BufferManager::BufferInfo* info = GetBufferInfo(client_id); 4753 const BufferManager::BufferInfo* info = GetBufferInfo(client_id);
4754 return info && info->IsValid(); 4754 return info && info->IsValid();
4755 } 4755 }
(...skipping 2029 matching lines...) Expand 10 before | Expand all | Expand 10 after
6785 return error::kNoError; 6785 return error::kNoError;
6786 } 6786 }
6787 6787
6788 error::Error GLES2DecoderImpl::HandleGetProgramInfoCHROMIUM( 6788 error::Error GLES2DecoderImpl::HandleGetProgramInfoCHROMIUM(
6789 uint32 immediate_data_size, const gles2::GetProgramInfoCHROMIUM& c) { 6789 uint32 immediate_data_size, const gles2::GetProgramInfoCHROMIUM& c) {
6790 GLuint program = static_cast<GLuint>(c.program); 6790 GLuint program = static_cast<GLuint>(c.program);
6791 uint32 bucket_id = c.bucket_id; 6791 uint32 bucket_id = c.bucket_id;
6792 Bucket* bucket = CreateBucket(bucket_id); 6792 Bucket* bucket = CreateBucket(bucket_id);
6793 bucket->SetSize(sizeof(ProgramInfoHeader)); // in case we fail. 6793 bucket->SetSize(sizeof(ProgramInfoHeader)); // in case we fail.
6794 ProgramManager::ProgramInfo* info = NULL; 6794 ProgramManager::ProgramInfo* info = NULL;
6795 if (program) { 6795 info = GetProgramInfo(program);
6796 info = GetProgramInfoNotShader(program, "glGetProgramInfoCHROMIUM"); 6796 if (!info || !info->IsValid()) {
6797 if (!info) { 6797 return error::kNoError;
6798 return error::kNoError;
6799 }
6800 if (!info->IsValid()) {
6801 // Program was not linked successfully. (ie, glLinkProgram)
6802 SetGLError(GL_INVALID_OPERATION,
6803 "glGetProgramInfoCHROMIUM: program not linked");
6804 return error::kNoError;
6805 }
6806 } 6798 }
6807 info->GetProgramInfo(bucket); 6799 info->GetProgramInfo(bucket);
6808 return error::kNoError; 6800 return error::kNoError;
6809 } 6801 }
6810 6802
6811 error::ContextLostReason GLES2DecoderImpl::GetContextLostReason() { 6803 error::ContextLostReason GLES2DecoderImpl::GetContextLostReason() {
6812 switch (reset_status_) { 6804 switch (reset_status_) {
6813 case GL_NO_ERROR: 6805 case GL_NO_ERROR:
6814 // TODO(kbr): improve the precision of the error code in this case. 6806 // TODO(kbr): improve the precision of the error code in this case.
6815 // Consider delegating to context for error code if MakeCurrent fails. 6807 // Consider delegating to context for error code if MakeCurrent fails.
(...skipping 25 matching lines...) Expand all
6841 return false; 6833 return false;
6842 } 6834 }
6843 6835
6844 // Include the auto-generated part of this file. We split this because it means 6836 // Include the auto-generated part of this file. We split this because it means
6845 // we can easily edit the non-auto generated parts right here in this file 6837 // we can easily edit the non-auto generated parts right here in this file
6846 // instead of having to edit some template or the code generator. 6838 // instead of having to edit some template or the code generator.
6847 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 6839 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
6848 6840
6849 } // namespace gles2 6841 } // namespace gles2
6850 } // namespace gpu 6842 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/client/program_info_manager_unittest.cc ('k') | gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698