Line data Source code
1 : /*
2 : * Copyright 2015 Google Inc.
3 : *
4 : * Use of this source code is governed by a BSD-style license that can be
5 : * found in the LICENSE file.
6 : */
7 :
8 : #include "gl/GrGLVaryingHandler.h"
9 :
10 : #include "gl/GrGLGpu.h"
11 : #include "gl/builders/GrGLProgramBuilder.h"
12 :
13 :
14 0 : GrGLSLVaryingHandler::VaryingHandle GrGLVaryingHandler::addPathProcessingVarying(
15 : const char* name,
16 : GrGLSLVertToFrag* v,
17 : GrSLPrecision fsPrecision) {
18 : #ifdef SK_DEBUG
19 0 : GrGLProgramBuilder* glPB = (GrGLProgramBuilder*) fProgramBuilder;
20 : // This call is not used for non-NVPR backends.
21 0 : SkASSERT(glPB->gpu()->glCaps().shaderCaps()->pathRenderingSupport() &&
22 : glPB->fPrimProc.isPathRendering() &&
23 : !glPB->fPrimProc.willUseGeoShader() &&
24 : glPB->fPrimProc.numAttribs() == 0);
25 : #endif
26 0 : this->addVarying(name, v, fsPrecision);
27 0 : auto varyingInfo = fPathProcVaryingInfos.push_back();
28 0 : varyingInfo.fLocation = fPathProcVaryingInfos.count() - 1;
29 0 : return VaryingHandle(varyingInfo.fLocation);
30 : }
31 :
32 0 : void GrGLVaryingHandler::onFinalize() {
33 0 : SkASSERT(fPathProcVaryingInfos.empty() || fPathProcVaryingInfos.count() == fFragInputs.count());
34 0 : for (int i = 0; i < fPathProcVaryingInfos.count(); ++i) {
35 0 : fPathProcVaryingInfos[i].fVariable = fFragInputs[i];
36 : }
37 0 : }
|