| OLD | NEW |
| 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 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 247 | 247 |
| 248 fFS.codeAppend("}"); | 248 fFS.codeAppend("}"); |
| 249 } | 249 } |
| 250 | 250 |
| 251 void GrGLProgramBuilder::emitAndInstallProc(const GrFragmentProcessor& fp, | 251 void GrGLProgramBuilder::emitAndInstallProc(const GrFragmentProcessor& fp, |
| 252 int index, | 252 int index, |
| 253 const char* outColor, | 253 const char* outColor, |
| 254 const char* inColor) { | 254 const char* inColor) { |
| 255 GrGLInstalledFragProc* ifp = new GrGLInstalledFragProc; | 255 GrGLInstalledFragProc* ifp = new GrGLInstalledFragProc; |
| 256 | 256 |
| 257 ifp->fGLProc.reset(fp.createGLInstance()); | 257 ifp->fGLProc.reset(fp.createGLSLInstance()); |
| 258 | 258 |
| 259 SkSTArray<4, GrGLSLTextureSampler> samplers(fp.numTextures()); | 259 SkSTArray<4, GrGLSLTextureSampler> samplers(fp.numTextures()); |
| 260 this->emitSamplers(fp, &samplers, ifp); | 260 this->emitSamplers(fp, &samplers, ifp); |
| 261 | 261 |
| 262 GrGLSLFragmentProcessor::EmitArgs args(this, | 262 GrGLSLFragmentProcessor::EmitArgs args(this, |
| 263 fp, | 263 fp, |
| 264 outColor, | 264 outColor, |
| 265 inColor, | 265 inColor, |
| 266 fOutCoords[index], | 266 fOutCoords[index], |
| 267 samplers); | 267 samplers); |
| 268 ifp->fGLProc->emitCode(args); | 268 ifp->fGLProc->emitCode(args); |
| 269 | 269 |
| 270 // We have to check that effects and the code they emit are consistent, ie i
f an effect | 270 // We have to check that effects and the code they emit are consistent, ie i
f an effect |
| 271 // asks for dst color, then the emit code needs to follow suit | 271 // asks for dst color, then the emit code needs to follow suit |
| 272 verify(fp); | 272 verify(fp); |
| 273 fFragmentProcessors->fProcs.push_back(ifp); | 273 fFragmentProcessors->fProcs.push_back(ifp); |
| 274 } | 274 } |
| 275 | 275 |
| 276 void GrGLProgramBuilder::emitAndInstallProc(const GrPrimitiveProcessor& gp, | 276 void GrGLProgramBuilder::emitAndInstallProc(const GrPrimitiveProcessor& gp, |
| 277 const char* outColor, | 277 const char* outColor, |
| 278 const char* outCoverage) { | 278 const char* outCoverage) { |
| 279 SkASSERT(!fGeometryProcessor); | 279 SkASSERT(!fGeometryProcessor); |
| 280 fGeometryProcessor = new GrGLInstalledGeoProc; | 280 fGeometryProcessor = new GrGLInstalledGeoProc; |
| 281 | 281 |
| 282 fGeometryProcessor->fGLProc.reset(gp.createGLInstance(*fGpu->glCaps().glslCa
ps())); | 282 fGeometryProcessor->fGLProc.reset(gp.createGLSLInstance(*fGpu->glCaps().glsl
Caps())); |
| 283 | 283 |
| 284 SkSTArray<4, GrGLSLTextureSampler> samplers(gp.numTextures()); | 284 SkSTArray<4, GrGLSLTextureSampler> samplers(gp.numTextures()); |
| 285 this->emitSamplers(gp, &samplers, fGeometryProcessor); | 285 this->emitSamplers(gp, &samplers, fGeometryProcessor); |
| 286 | 286 |
| 287 GrGLSLGeometryProcessor::EmitArgs args(this, gp, outColor, outCoverage, samp
lers, | 287 GrGLSLGeometryProcessor::EmitArgs args(this, gp, outColor, outCoverage, samp
lers, |
| 288 fCoordTransforms, &fOutCoords); | 288 fCoordTransforms, &fOutCoords); |
| 289 fGeometryProcessor->fGLProc->emitCode(args); | 289 fGeometryProcessor->fGLProc->emitCode(args); |
| 290 | 290 |
| 291 // We have to check that effects and the code they emit are consistent, ie i
f an effect | 291 // We have to check that effects and the code they emit are consistent, ie i
f an effect |
| 292 // asks for dst color, then the emit code needs to follow suit | 292 // asks for dst color, then the emit code needs to follow suit |
| 293 verify(gp); | 293 verify(gp); |
| 294 } | 294 } |
| 295 | 295 |
| 296 void GrGLProgramBuilder::emitAndInstallXferProc(const GrXferProcessor& xp, | 296 void GrGLProgramBuilder::emitAndInstallXferProc(const GrXferProcessor& xp, |
| 297 const GrGLSLExpr4& colorIn, | 297 const GrGLSLExpr4& colorIn, |
| 298 const GrGLSLExpr4& coverageIn) { | 298 const GrGLSLExpr4& coverageIn) { |
| 299 // Program builders have a bit of state we need to clear with each effect | 299 // Program builders have a bit of state we need to clear with each effect |
| 300 AutoStageAdvance adv(this); | 300 AutoStageAdvance adv(this); |
| 301 | 301 |
| 302 SkASSERT(!fXferProcessor); | 302 SkASSERT(!fXferProcessor); |
| 303 fXferProcessor = new GrGLInstalledXferProc; | 303 fXferProcessor = new GrGLInstalledXferProc; |
| 304 | 304 |
| 305 fXferProcessor->fGLProc.reset(xp.createGLInstance()); | 305 fXferProcessor->fGLProc.reset(xp.createGLSLInstance()); |
| 306 | 306 |
| 307 // Enable dual source secondary output if we have one | 307 // Enable dual source secondary output if we have one |
| 308 if (xp.hasSecondaryOutput()) { | 308 if (xp.hasSecondaryOutput()) { |
| 309 fFS.enableSecondaryOutput(); | 309 fFS.enableSecondaryOutput(); |
| 310 } | 310 } |
| 311 | 311 |
| 312 if (this->glslCaps()->mustDeclareFragmentShaderOutput()) { | 312 if (this->glslCaps()->mustDeclareFragmentShaderOutput()) { |
| 313 fFS.enableCustomOutput(); | 313 fFS.enableCustomOutput(); |
| 314 } | 314 } |
| 315 | 315 |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 536 } | 536 } |
| 537 | 537 |
| 538 ////////////////////////////////////////////////////////////////////////////////
/////////////////// | 538 ////////////////////////////////////////////////////////////////////////////////
/////////////////// |
| 539 | 539 |
| 540 GrGLInstalledFragProcs::~GrGLInstalledFragProcs() { | 540 GrGLInstalledFragProcs::~GrGLInstalledFragProcs() { |
| 541 int numProcs = fProcs.count(); | 541 int numProcs = fProcs.count(); |
| 542 for (int i = 0; i < numProcs; ++i) { | 542 for (int i = 0; i < numProcs; ++i) { |
| 543 delete fProcs[i]; | 543 delete fProcs[i]; |
| 544 } | 544 } |
| 545 } | 545 } |
| OLD | NEW |