/* * Copyright 2015 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "gl/GrGLVaryingHandler.h" #include "gl/GrGLGpu.h" #include "gl/builders/GrGLProgramBuilder.h" GrGLSLVaryingHandler::VaryingHandle GrGLVaryingHandler::addPathProcessingVarying( const char* name, GrGLSLVarying* v) { #ifdef SK_DEBUG GrGLProgramBuilder* glPB = (GrGLProgramBuilder*) fProgramBuilder; // This call is not used for non-NVPR backends. SkASSERT(glPB->gpu()->glCaps().shaderCaps()->pathRenderingSupport() && glPB->fPrimProc.isPathRendering() && !glPB->fPrimProc.willUseGeoShader() && !glPB->fPrimProc.numVertexAttributes() && !glPB->fPrimProc.numInstanceAttributes()); #endif this->addVarying(name, v); auto varyingInfo = fPathProcVaryingInfos.push_back(); varyingInfo.fLocation = fPathProcVaryingInfos.count() - 1; return VaryingHandle(varyingInfo.fLocation); } void GrGLVaryingHandler::onFinalize() { SkASSERT(fPathProcVaryingInfos.empty() || fPathProcVaryingInfos.count() == fFragInputs.count()); for (int i = 0; i < fPathProcVaryingInfos.count(); ++i) { fPathProcVaryingInfos[i].fVariable = fFragInputs[i]; } }