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.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 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