blob: e426d46e14ec23ce0970c3c30da59128575a0537 [file] [log] [blame]
egdaniel0eafe792015-11-20 14:01:22 -08001/*
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,
Chris Dalton27372882017-12-08 13:34:21 -070016 GrGLSLVarying* v) {
egdaniel0eafe792015-11-20 14:01:22 -080017#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() &&
egdaniel0e1853c2016-03-17 11:35:45 -070021 glPB->fPrimProc.isPathRendering() &&
22 !glPB->fPrimProc.willUseGeoShader() &&
Brian Salomon92be2f72018-06-19 14:33:47 -040023 !glPB->fPrimProc.numVertexAttributes() &&
24 !glPB->fPrimProc.numInstanceAttributes());
egdaniel0eafe792015-11-20 14:01:22 -080025#endif
Chris Daltonfdde34e2017-10-16 14:15:26 -060026 this->addVarying(name, v);
cdaltonc08f1962016-02-12 12:14:06 -080027 auto varyingInfo = fPathProcVaryingInfos.push_back();
egdaniel0eafe792015-11-20 14:01:22 -080028 varyingInfo.fLocation = fPathProcVaryingInfos.count() - 1;
29 return VaryingHandle(varyingInfo.fLocation);
30}
cdaltonc08f1962016-02-12 12:14:06 -080031
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}