• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
addPathProcessingVarying(const char * name,GrGLSLVarying * v)14 GrGLSLVaryingHandler::VaryingHandle GrGLVaryingHandler::addPathProcessingVarying(
15                                                                        const char* name,
16                                                                        GrGLSLVarying* v) {
17 #ifdef SK_DEBUG
18     GrGLProgramBuilder* glPB = (GrGLProgramBuilder*) fProgramBuilder;
19     // This call is not used for non-NVPR backends.
20     SkASSERT(glPB->gpu()->glCaps().shaderCaps()->pathRenderingSupport() &&
21              glPB->fPrimProc.isPathRendering() &&
22              !glPB->fPrimProc.willUseGeoShader() &&
23              !glPB->fPrimProc.numVertexAttributes() &&
24              !glPB->fPrimProc.numInstanceAttributes());
25 #endif
26     this->addVarying(name, v);
27     auto varyingInfo = fPathProcVaryingInfos.push_back();
28     varyingInfo.fLocation = fPathProcVaryingInfos.count() - 1;
29     return VaryingHandle(varyingInfo.fLocation);
30 }
31 
onFinalize()32 void GrGLVaryingHandler::onFinalize() {
33     SkASSERT(fPathProcVaryingInfos.empty() || fPathProcVaryingInfos.count() == fFragInputs.count());
34     for (int i = 0; i < fPathProcVaryingInfos.count(); ++i) {
35         fPathProcVaryingInfos[i].fVariable = fFragInputs[i];
36     }
37 }
38