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,GrGLSLVertToFrag * v,GrSLPrecision fsPrecision)14GrGLSLVaryingHandler::VaryingHandle GrGLVaryingHandler::addPathProcessingVarying( 15 const char* name, 16 GrGLSLVertToFrag* v, 17 GrSLPrecision fsPrecision) { 18 #ifdef SK_DEBUG 19 GrGLProgramBuilder* glPB = (GrGLProgramBuilder*) fProgramBuilder; 20 // This call is not used for non-NVPR backends. 21 SkASSERT(glPB->gpu()->glCaps().shaderCaps()->pathRenderingSupport() && 22 glPB->fArgs.fPrimitiveProcessor->isPathRendering() && 23 !glPB->fArgs.fPrimitiveProcessor->willUseGeoShader() && 24 glPB->fArgs.fPrimitiveProcessor->numAttribs() == 0); 25 #endif 26 this->addVarying(name, v, fsPrecision); 27 auto varyingInfo = fPathProcVaryingInfos.push_back(); 28 varyingInfo.fLocation = fPathProcVaryingInfos.count() - 1; 29 return VaryingHandle(varyingInfo.fLocation); 30 } 31 onFinalize()32void 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