blob: 8a957c54698593a2340d3e200eb184552a439ca6 [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
Mike Kleinc0bd9f92019-04-23 12:05:21 -05008#include "src/gpu/gl/GrGLVaryingHandler.h"
egdaniel0eafe792015-11-20 14:01:22 -08009
Mike Kleinc0bd9f92019-04-23 12:05:21 -050010#include "src/gpu/gl/GrGLGpu.h"
11#include "src/gpu/gl/builders/GrGLProgramBuilder.h"
egdaniel0eafe792015-11-20 14:01:22 -080012
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() &&
Robert Phillips901aff02019-10-08 12:32:56 -040021 fProgramBuilder->fProgramInfo.isNVPR());
egdaniel0eafe792015-11-20 14:01:22 -080022#endif
Chris Daltonfdde34e2017-10-16 14:15:26 -060023 this->addVarying(name, v);
cdaltonc08f1962016-02-12 12:14:06 -080024 auto varyingInfo = fPathProcVaryingInfos.push_back();
egdaniel0eafe792015-11-20 14:01:22 -080025 varyingInfo.fLocation = fPathProcVaryingInfos.count() - 1;
26 return VaryingHandle(varyingInfo.fLocation);
27}
cdaltonc08f1962016-02-12 12:14:06 -080028
29void GrGLVaryingHandler::onFinalize() {
30 SkASSERT(fPathProcVaryingInfos.empty() || fPathProcVaryingInfos.count() == fFragInputs.count());
Michael Ludwig45191342020-03-24 12:29:39 -040031 VarArray::Iter::Item fragInputIter = fFragInputs.items().begin();
32 for (auto& varyingInfo : fPathProcVaryingInfos.items()) {
33 varyingInfo.fVariable = *fragInputIter;
34 ++fragInputIter;
cdaltonc08f1962016-02-12 12:14:06 -080035 }
36}