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

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

Issue 788733003: Make addUniform take a precision (Closed) Base URL: https://skia.googlesource.com/skia.git@move_prec
Patch Set: rebase Created 6 years 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 | « src/gpu/gl/GrGLShaderVar.h ('k') | src/gpu/gl/builders/GrGLProgramBuilder.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 "GrGLFragmentShaderBuilder.h" 8 #include "GrGLFragmentShaderBuilder.h"
9 #include "GrGLShaderStringBuilder.h" 9 #include "GrGLShaderStringBuilder.h"
10 #include "GrGLProgramBuilder.h" 10 #include "GrGLProgramBuilder.h"
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 static const char* kCoordName = "fragCoordYDown"; 140 static const char* kCoordName = "fragCoordYDown";
141 if (!fSetupFragPosition) { 141 if (!fSetupFragPosition) {
142 // temporarily change the stage index because we're inserting non-st age code. 142 // temporarily change the stage index because we're inserting non-st age code.
143 GrGLProgramBuilder::AutoStageRestore asr(fProgramBuilder); 143 GrGLProgramBuilder::AutoStageRestore asr(fProgramBuilder);
144 SkASSERT(!fProgramBuilder->fUniformHandles.fRTHeightUni.isValid()); 144 SkASSERT(!fProgramBuilder->fUniformHandles.fRTHeightUni.isValid());
145 const char* rtHeightName; 145 const char* rtHeightName;
146 146
147 fProgramBuilder->fUniformHandles.fRTHeightUni = 147 fProgramBuilder->fUniformHandles.fRTHeightUni =
148 fProgramBuilder->addUniform(GrGLProgramBuilder::kFragment_Vi sibility, 148 fProgramBuilder->addUniform(GrGLProgramBuilder::kFragment_Vi sibility,
149 kFloat_GrSLType, 149 kFloat_GrSLType,
150 kDefault_GrSLPrecision,
150 "RTHeight", 151 "RTHeight",
151 &rtHeightName); 152 &rtHeightName);
152 153
153 // Using glFragCoord.zw for the last two components tickles an Adren o driver bug that 154 // Using glFragCoord.zw for the last two components tickles an Adren o driver bug that
154 // causes programs to fail to link. Making this function return a ve c2() didn't fix the 155 // causes programs to fail to link. Making this function return a ve c2() didn't fix the
155 // problem but using 1.0 for the last two components does. 156 // problem but using 1.0 for the last two components does.
156 this->codePrependf("\tvec4 %s = vec4(gl_FragCoord.x, %s - gl_FragCoo rd.y, 1.0, " 157 this->codePrependf("\tvec4 %s = vec4(gl_FragCoord.x, %s - gl_FragCoo rd.y, 1.0, "
157 "1.0);\n", kCoordName, rtHeightName); 158 "1.0);\n", kCoordName, rtHeightName);
158 fSetupFragPosition = true; 159 fSetupFragPosition = true;
159 } 160 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 const char* dstCopySamplerName; 193 const char* dstCopySamplerName;
193 uint32_t configMask; 194 uint32_t configMask;
194 if (SkToBool(kUseAlphaConfig_DstReadKeyBit & fProgramBuilder->header().fDstR eadKey)) { 195 if (SkToBool(kUseAlphaConfig_DstReadKeyBit & fProgramBuilder->header().fDstR eadKey)) {
195 configMask = kA_GrColorComponentFlag; 196 configMask = kA_GrColorComponentFlag;
196 } else { 197 } else {
197 configMask = kRGBA_GrColorComponentFlags; 198 configMask = kRGBA_GrColorComponentFlags;
198 } 199 }
199 fProgramBuilder->fUniformHandles.fDstCopySamplerUni = 200 fProgramBuilder->fUniformHandles.fDstCopySamplerUni =
200 fProgramBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility , 201 fProgramBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility ,
201 kSampler2D_GrSLType, 202 kSampler2D_GrSLType,
203 kDefault_GrSLPrecision,
202 "DstCopySampler", 204 "DstCopySampler",
203 &dstCopySamplerName); 205 &dstCopySamplerName);
204 fProgramBuilder->fUniformHandles.fDstCopyTopLeftUni = 206 fProgramBuilder->fUniformHandles.fDstCopyTopLeftUni =
205 fProgramBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility , 207 fProgramBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility ,
206 kVec2f_GrSLType, 208 kVec2f_GrSLType,
209 kDefault_GrSLPrecision,
207 "DstCopyUpperLeft", 210 "DstCopyUpperLeft",
208 &dstCopyTopLeftName); 211 &dstCopyTopLeftName);
209 fProgramBuilder->fUniformHandles.fDstCopyScaleUni = 212 fProgramBuilder->fUniformHandles.fDstCopyScaleUni =
210 fProgramBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility , 213 fProgramBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility ,
211 kVec2f_GrSLType, 214 kVec2f_GrSLType,
215 kDefault_GrSLPrecision,
212 "DstCopyCoordScale", 216 "DstCopyCoordScale",
213 &dstCopyCoordScaleName); 217 &dstCopyCoordScaleName);
214 const char* fragPos = this->fragmentPosition(); 218 const char* fragPos = this->fragmentPosition();
215 219
216 this->codeAppend("// Read color from copy of the destination.\n"); 220 this->codeAppend("// Read color from copy of the destination.\n");
217 this->codeAppendf("vec2 _dstTexCoord = (%s.xy - %s) * %s;", 221 this->codeAppendf("vec2 _dstTexCoord = (%s.xy - %s) * %s;",
218 fragPos, dstCopyTopLeftName, dstCopyCoordScaleName); 222 fragPos, dstCopyTopLeftName, dstCopyCoordScaleName);
219 if (!topDown) { 223 if (!topDown) {
220 this->codeAppend("_dstTexCoord.y = 1.0 - _dstTexCoord.y;"); 224 this->codeAppend("_dstTexCoord.y = 1.0 - _dstTexCoord.y;");
221 } 225 }
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 } 346 }
343 } 347 }
344 348
345 void GrGLFragmentShaderBuilder::addVarying(GrGLVarying* v, GrSLPrecision fsPrec) { 349 void GrGLFragmentShaderBuilder::addVarying(GrGLVarying* v, GrSLPrecision fsPrec) {
346 v->fFsIn = v->fVsOut; 350 v->fFsIn = v->fVsOut;
347 if (v->fGsOut) { 351 if (v->fGsOut) {
348 v->fFsIn = v->fGsOut; 352 v->fFsIn = v->fGsOut;
349 } 353 }
350 fInputs.push_back().set(v->fType, GrGLShaderVar::kVaryingIn_TypeModifier, v- >fFsIn, fsPrec); 354 fInputs.push_back().set(v->fType, GrGLShaderVar::kVaryingIn_TypeModifier, v- >fFsIn, fsPrec);
351 } 355 }
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLShaderVar.h ('k') | src/gpu/gl/builders/GrGLProgramBuilder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698