| /* |
| * 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]; |
| } |
| } |