GrGLVaryingHandler.cpp revision c08f196648463d44eb85e17c5815dbf8f709a42a
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 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 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