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

Side by Side Diff: src/gpu/gl/builders/GrGLProgramBuilder.cpp

Issue 1689703002: Finalize gpu shaders in ProgramBuilding. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 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
« no previous file with comments | « no previous file | src/gpu/glsl/GrGLSLProgramBuilder.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2014 Google Inc. 2 * Copyright 2014 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "GrGLProgramBuilder.h" 8 #include "GrGLProgramBuilder.h"
9 9
10 #include "GrAutoLocaleSetter.h" 10 #include "GrAutoLocaleSetter.h"
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 127
128 GrGLProgram* GrGLProgramBuilder::finalize() { 128 GrGLProgram* GrGLProgramBuilder::finalize() {
129 // verify we can get a program id 129 // verify we can get a program id
130 GrGLuint programID; 130 GrGLuint programID;
131 GL_CALL_RET(programID, CreateProgram()); 131 GL_CALL_RET(programID, CreateProgram());
132 if (0 == programID) { 132 if (0 == programID) {
133 this->cleanupFragmentProcessors(); 133 this->cleanupFragmentProcessors();
134 return nullptr; 134 return nullptr;
135 } 135 }
136 136
137 this->finalizeShaders();
138
137 // compile shaders and bind attributes / uniforms 139 // compile shaders and bind attributes / uniforms
138 SkTDArray<GrGLuint> shadersToDelete; 140 SkTDArray<GrGLuint> shadersToDelete;
139 fVS.finalize(GrGLSLUniformHandler::kVertex_Visibility);
140 if (!this->compileAndAttachShaders(fVS, programID, GR_GL_VERTEX_SHADER, &sha dersToDelete)) { 141 if (!this->compileAndAttachShaders(fVS, programID, GR_GL_VERTEX_SHADER, &sha dersToDelete)) {
141 this->cleanupProgram(programID, shadersToDelete); 142 this->cleanupProgram(programID, shadersToDelete);
142 return nullptr; 143 return nullptr;
143 } 144 }
144 145
145 // NVPR actually requires a vertex shader to compile 146 // NVPR actually requires a vertex shader to compile
146 bool useNvpr = primitiveProcessor().isPathRendering(); 147 bool useNvpr = primitiveProcessor().isPathRendering();
147 if (!useNvpr) { 148 if (!useNvpr) {
148 const GrPrimitiveProcessor& primProc = this->primitiveProcessor(); 149 const GrPrimitiveProcessor& primProc = this->primitiveProcessor();
149 150
150 int vaCount = primProc.numAttribs(); 151 int vaCount = primProc.numAttribs();
151 for (int i = 0; i < vaCount; i++) { 152 for (int i = 0; i < vaCount; i++) {
152 GL_CALL(BindAttribLocation(programID, i, primProc.getAttrib(i).fName )); 153 GL_CALL(BindAttribLocation(programID, i, primProc.getAttrib(i).fName ));
153 } 154 }
154 } 155 }
155 156
156 fFS.finalize(GrGLSLUniformHandler::kFragment_Visibility);
157 if (!this->compileAndAttachShaders(fFS, programID, GR_GL_FRAGMENT_SHADER, &s hadersToDelete)) { 157 if (!this->compileAndAttachShaders(fFS, programID, GR_GL_FRAGMENT_SHADER, &s hadersToDelete)) {
158 this->cleanupProgram(programID, shadersToDelete); 158 this->cleanupProgram(programID, shadersToDelete);
159 return nullptr; 159 return nullptr;
160 } 160 }
161 161
162 this->bindProgramResourceLocations(programID); 162 this->bindProgramResourceLocations(programID);
163 163
164 GL_CALL(LinkProgram(programID)); 164 GL_CALL(LinkProgram(programID));
165 165
166 // Calling GetProgramiv is expensive in Chromium. Assume success in release builds. 166 // Calling GetProgramiv is expensive in Chromium. Assume success in release builds.
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 fUniformHandles, 264 fUniformHandles,
265 programID, 265 programID,
266 fUniformHandler.fUniforms, 266 fUniformHandler.fUniforms,
267 fVaryingHandler.fPathProcVaryingInfos, 267 fVaryingHandler.fPathProcVaryingInfos,
268 fGeometryProcessor, 268 fGeometryProcessor,
269 fXferProcessor, 269 fXferProcessor,
270 fFragmentProcessors, 270 fFragmentProcessors,
271 &fSamplerUniforms); 271 &fSamplerUniforms);
272 } 272 }
273 273
OLDNEW
« no previous file with comments | « no previous file | src/gpu/glsl/GrGLSLProgramBuilder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698