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 
GrGLGeometryBuilder(GrGLProgramBuilder * program)12 GrGLGeometryBuilder::GrGLGeometryBuilder(GrGLProgramBuilder* program)
13     : INHERITED(program) {
14 
15 }
16 
addVarying(const char * name,GrGLVarying * v)17 void 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 
compileAndAttachShaders(GrGLuint programId,SkTDArray<GrGLuint> * shaderIds)38 bool GrGLGeometryBuilder::compileAndAttachShaders(GrGLuint programId,
39         SkTDArray<GrGLuint>* shaderIds) {
40     SkFAIL("Geometry shaders are not currently supported");
41     return false;
42 }
43