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

Unified Diff: gpu/command_buffer/service/shader_manager.cc

Issue 900543004: Clean up some of the shader compilation code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added shader length unit test and fixed length check Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.cc ('k') | gpu/command_buffer/service/shader_translator.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/command_buffer/service/shader_manager.cc
diff --git a/gpu/command_buffer/service/shader_manager.cc b/gpu/command_buffer/service/shader_manager.cc
index 2707b90b92de4105d6b8c9f1dad28a0663158f0e..819b80faf03aea132c5fd0fc87a2d75640610c6e 100644
--- a/gpu/command_buffer/service/shader_manager.cc
+++ b/gpu/command_buffer/service/shader_manager.cc
@@ -61,13 +61,14 @@ void Shader::DoCompile(ShaderTranslatorInterface* translator,
glGetShaderiv(service_id_,
GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE,
&max_len);
- scoped_ptr<char[]> buffer(new char[max_len]);
+ translated_source_.resize(max_len);
GLint len = 0;
glGetTranslatedShaderSourceANGLE(
- service_id_, max_len, &len, buffer.get());
+ service_id_, translated_source_.size(),
+ &len, &translated_source_.at(0));
DCHECK(max_len == 0 || len < max_len);
- DCHECK(len == 0 || buffer[len] == '\0');
- translated_source_ = std::string(buffer.get(), len);
+ DCHECK(len == 0 || translated_source_[len] == '\0');
+ translated_source_.resize(len);
}
GLint status = GL_FALSE;
@@ -78,13 +79,13 @@ void Shader::DoCompile(ShaderTranslatorInterface* translator,
// All translated shaders must compile.
GLint max_len = 0;
glGetShaderiv(service_id_, GL_INFO_LOG_LENGTH, &max_len);
- scoped_ptr<char[]> buffer(new char[max_len]);
+ log_info_.resize(max_len);
GLint len = 0;
- glGetShaderInfoLog(service_id_, max_len, &len, buffer.get());
+ glGetShaderInfoLog(service_id_, log_info_.size(), &len, &log_info_.at(0));
DCHECK(max_len == 0 || len < max_len);
- DCHECK(len == 0 || buffer[len] == '\0');
+ DCHECK(len == 0 || log_info_[len] == '\0');
valid_ = false;
- log_info_ = std::string(buffer.get(), len);
+ log_info_.resize(len);
LOG_IF(ERROR, translator)
<< "Shader translator allowed/produced an invalid shader "
<< "unless the driver is buggy:"
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.cc ('k') | gpu/command_buffer/service/shader_translator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698