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 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.numAttribs() == 0); 24 #endif 25 this->addVarying(name, v); 26 auto varyingInfo = fPathProcVaryingInfos.push_back(); 27 varyingInfo.fLocation = fPathProcVaryingInfos.count() - 1; 28 return VaryingHandle(varyingInfo.fLocation); 29 } 30 31 void GrGLVaryingHandler::onFinalize() { 32 SkASSERT(fPathProcVaryingInfos.empty() || fPathProcVaryingInfos.count() == fFragInputs.count()); 33 for (int i = 0; i < fPathProcVaryingInfos.count(); ++i) { 34 fPathProcVaryingInfos[i].fVariable = fFragInputs[i]; 35 } 36 } 37