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

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

Issue 952893003: Update from https://crrev.com/317530 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Fix gn for nacl Created 5 years, 9 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
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/shader_manager.h" 5 #include "gpu/command_buffer/service/shader_manager.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 source_for_driver = translated_source_.c_str(); 74 source_for_driver = translated_source_.c_str();
75 } 75 }
76 76
77 glShaderSource(service_id_, 1, &source_for_driver, NULL); 77 glShaderSource(service_id_, 1, &source_for_driver, NULL);
78 glCompileShader(service_id_); 78 glCompileShader(service_id_);
79 if (source_type_ == kANGLE) { 79 if (source_type_ == kANGLE) {
80 GLint max_len = 0; 80 GLint max_len = 0;
81 glGetShaderiv(service_id_, 81 glGetShaderiv(service_id_,
82 GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE, 82 GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE,
83 &max_len); 83 &max_len);
84 source_for_driver = "\0";
84 translated_source_.resize(max_len); 85 translated_source_.resize(max_len);
85 GLint len = 0; 86 if (max_len) {
86 glGetTranslatedShaderSourceANGLE( 87 GLint len = 0;
87 service_id_, translated_source_.size(), 88 glGetTranslatedShaderSourceANGLE(
88 &len, &translated_source_.at(0)); 89 service_id_, translated_source_.size(),
89 DCHECK(max_len == 0 || len < max_len); 90 &len, &translated_source_.at(0));
90 DCHECK(len == 0 || translated_source_[len] == '\0'); 91 DCHECK(max_len == 0 || len < max_len);
91 translated_source_.resize(len); 92 DCHECK(len == 0 || translated_source_[len] == '\0');
92 source_for_driver = translated_source_.c_str(); 93 translated_source_.resize(len);
94 source_for_driver = translated_source_.c_str();
95 }
93 } 96 }
94 97
95 GLint status = GL_FALSE; 98 GLint status = GL_FALSE;
96 glGetShaderiv(service_id_, GL_COMPILE_STATUS, &status); 99 glGetShaderiv(service_id_, GL_COMPILE_STATUS, &status);
97 if (status == GL_TRUE) { 100 if (status == GL_TRUE) {
98 valid_ = true; 101 valid_ = true;
99 } else { 102 } else {
103 valid_ = false;
104
100 // We cannot reach here if we are using the shader translator. 105 // We cannot reach here if we are using the shader translator.
101 // All invalid shaders must be rejected by the translator. 106 // All invalid shaders must be rejected by the translator.
102 // All translated shaders must compile. 107 // All translated shaders must compile.
103 GLint max_len = 0; 108 GLint max_len = 0;
104 glGetShaderiv(service_id_, GL_INFO_LOG_LENGTH, &max_len); 109 glGetShaderiv(service_id_, GL_INFO_LOG_LENGTH, &max_len);
105 log_info_.resize(max_len); 110 log_info_.resize(max_len);
106 GLint len = 0; 111 if (max_len) {
107 glGetShaderInfoLog(service_id_, log_info_.size(), &len, &log_info_.at(0)); 112 GLint len = 0;
108 DCHECK(max_len == 0 || len < max_len); 113 glGetShaderInfoLog(service_id_, log_info_.size(), &len, &log_info_.at(0));
109 DCHECK(len == 0 || log_info_[len] == '\0'); 114 DCHECK(max_len == 0 || len < max_len);
110 valid_ = false; 115 DCHECK(len == 0 || log_info_[len] == '\0');
111 log_info_.resize(len); 116 log_info_.resize(len);
117 }
112 LOG_IF(ERROR, translator) 118 LOG_IF(ERROR, translator)
113 << "Shader translator allowed/produced an invalid shader " 119 << "Shader translator allowed/produced an invalid shader "
114 << "unless the driver is buggy:" 120 << "unless the driver is buggy:"
115 << "\n--original-shader--\n" << last_compiled_source_ 121 << "\n--original-shader--\n" << last_compiled_source_
116 << "\n--translated-shader--\n" << source_for_driver 122 << "\n--translated-shader--\n" << source_for_driver
117 << "\n--info-log--\n" << log_info_; 123 << "\n--info-log--\n" << log_info_;
118 } 124 }
119 } 125 }
120 126
121 void Shader::IncUseCount() { 127 void Shader::IncUseCount() {
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 DCHECK(shader); 264 DCHECK(shader);
259 DCHECK(IsOwned(shader)); 265 DCHECK(IsOwned(shader));
260 shader->DecUseCount(); 266 shader->DecUseCount();
261 RemoveShader(shader); 267 RemoveShader(shader);
262 } 268 }
263 269
264 } // namespace gles2 270 } // namespace gles2
265 } // namespace gpu 271 } // namespace gpu
266 272
267 273
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/mailbox_manager_unittest.cc ('k') | gpu/command_buffer/service/texture_definition.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698