130ba436f04e61d4505fb854d5fc56079636e0788joshualitt/*
230ba436f04e61d4505fb854d5fc56079636e0788joshualitt * Copyright 2014 Google Inc.
330ba436f04e61d4505fb854d5fc56079636e0788joshualitt *
430ba436f04e61d4505fb854d5fc56079636e0788joshualitt * Use of this source code is governed by a BSD-style license that can be
530ba436f04e61d4505fb854d5fc56079636e0788joshualitt * found in the LICENSE file.
630ba436f04e61d4505fb854d5fc56079636e0788joshualitt */
730ba436f04e61d4505fb854d5fc56079636e0788joshualitt
830ba436f04e61d4505fb854d5fc56079636e0788joshualitt#ifndef GrGLGeometryShaderBuilder_DEFINED
930ba436f04e61d4505fb854d5fc56079636e0788joshualitt#define GrGLGeometryShaderBuilder_DEFINED
1030ba436f04e61d4505fb854d5fc56079636e0788joshualitt
1130ba436f04e61d4505fb854d5fc56079636e0788joshualitt#include "GrGLShaderBuilder.h"
1230ba436f04e61d4505fb854d5fc56079636e0788joshualitt
1330ba436f04e61d4505fb854d5fc56079636e0788joshualittclass GrGLProgramBuilder;
1430ba436f04e61d4505fb854d5fc56079636e0788joshualitt
1530ba436f04e61d4505fb854d5fc56079636e0788joshualittclass GrGLGeometryShaderBuilder : public GrGLFullShaderBuilder {
1630ba436f04e61d4505fb854d5fc56079636e0788joshualittpublic:
1730ba436f04e61d4505fb854d5fc56079636e0788joshualitt    GrGLGeometryShaderBuilder(GrGLFullProgramBuilder* program);
1830ba436f04e61d4505fb854d5fc56079636e0788joshualittprivate:
1930ba436f04e61d4505fb854d5fc56079636e0788joshualitt    /*
2030ba436f04e61d4505fb854d5fc56079636e0788joshualitt     * an internal call for GrGLFullProgramBuilder to add varyings
2130ba436f04e61d4505fb854d5fc56079636e0788joshualitt     */
2230ba436f04e61d4505fb854d5fc56079636e0788joshualitt    void addVarying(GrSLType type,
2330ba436f04e61d4505fb854d5fc56079636e0788joshualitt                   const char* name,
2430ba436f04e61d4505fb854d5fc56079636e0788joshualitt                   const char** gsOutName);
2530ba436f04e61d4505fb854d5fc56079636e0788joshualitt
2630ba436f04e61d4505fb854d5fc56079636e0788joshualitt    bool compileAndAttachShaders(GrGLuint programId, SkTDArray<GrGLuint>* shaderIds) const;
2730ba436f04e61d4505fb854d5fc56079636e0788joshualitt
2830ba436f04e61d4505fb854d5fc56079636e0788joshualitt    friend class GrGLFullProgramBuilder;
2930ba436f04e61d4505fb854d5fc56079636e0788joshualitt    typedef GrGLFullShaderBuilder INHERITED;
3030ba436f04e61d4505fb854d5fc56079636e0788joshualitt};
3130ba436f04e61d4505fb854d5fc56079636e0788joshualitt
3230ba436f04e61d4505fb854d5fc56079636e0788joshualitt#endif
33