1/*
2 * Copyright 2014 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 "GrGLGeometryShaderBuilder.h"
9#include "GrGLProgramBuilder.h"
10#include "../GrGLGpu.h"
11
12GrGLGeometryBuilder::GrGLGeometryBuilder(GrGLProgramBuilder* program)
13    : INHERITED(program) {
14
15}
16
17void GrGLGeometryBuilder::addVarying(const char* name, GrGLVarying* v) {
18    // if we have a GS take each varying in as an array
19    // and output as non-array.
20    if (v->vsVarying()) {
21        fInputs.push_back();
22        fInputs.back().setType(v->fType);
23        fInputs.back().setTypeModifier(GrGLShaderVar::kVaryingIn_TypeModifier);
24        fInputs.back().setUnsizedArray();
25        *fInputs.back().accessName() = v->fVsOut;
26        v->fGsIn = v->fVsOut;
27    }
28
29    if (v->fsVarying()) {
30        fOutputs.push_back();
31        fOutputs.back().setType(v->fType);
32        fOutputs.back().setTypeModifier(GrGLShaderVar::kVaryingOut_TypeModifier);
33        fProgramBuilder->nameVariable(fOutputs.back().accessName(), 'g', name);
34        v->fGsOut = fOutputs.back().getName().c_str();
35    }
36}
37
38bool GrGLGeometryBuilder::compileAndAttachShaders(GrGLuint programId,
39        SkTDArray<GrGLuint>* shaderIds) {
40    SkFAIL("Geometry shaders are not currently supported");
41    return false;
42}
43