diff options
Diffstat (limited to 'src/gpu/gl/builders/GrGLNvprProgramBuilder.h')
-rw-r--r-- | src/gpu/gl/builders/GrGLNvprProgramBuilder.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/gpu/gl/builders/GrGLNvprProgramBuilder.h b/src/gpu/gl/builders/GrGLNvprProgramBuilder.h new file mode 100644 index 0000000000..cb1337521d --- /dev/null +++ b/src/gpu/gl/builders/GrGLNvprProgramBuilder.h @@ -0,0 +1,56 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrGLNvprProgramBuilder_DEFINED +#define GrGLNvprProgramBuilder_DEFINED + +#include "GrGLProgramBuilder.h" + +class GrGLNvprProgramBuilder : public GrGLProgramBuilder { +public: + GrGLNvprProgramBuilder(GrGpuGL*, const GrOptDrawState&, const GrGLProgramDesc&); + + /* + * The separable varying info must be passed to GrGLProgram so this must + * be part of the public interface + */ + struct SeparableVaryingInfo { + GrGLShaderVar fVariable; + GrGLint fLocation; + }; + + typedef GrTAllocator<SeparableVaryingInfo> SeparableVaryingInfoArray; + + virtual GrGLProgram* createProgram(GrGLuint programID); + +private: + virtual void emitTransforms(const GrProcessorStage&, + GrGLProcessor::TransformedCoordsArray* outCoords, + GrGLInstalledProcessors*) SK_OVERRIDE; + + typedef GrGLInstalledProcessors::ShaderVarHandle ShaderVarHandle; + + /** + * Add a separable varying input variable to the current program. + * A separable varying (fragment shader input) is a varying that can be used also when vertex + * shaders are not used. With a vertex shader, the operation is same as with other + * varyings. Without a vertex shader, such as with NV_path_rendering, GL APIs are used to + * populate the variable. The APIs can refer to the variable through the returned handle. + */ + ShaderVarHandle addSeparableVarying(GrSLType type, + const char* name, + const char** vsOutName, + const char** fsInName); + + void resolveSeparableVaryings(GrGLuint programId); + + SeparableVaryingInfoArray fSeparableVaryingInfos; + + typedef GrGLProgramBuilder INHERITED; +}; + +#endif |