Use vertexless shaders when NVpr is available
Adds support for vertexless shaders and enables them when
NV_path_rendering is available. This takes a
GrGLFragmentOnlyShaderBuilder class, a GrGLTexGenEffectArray class,
support for setting TexGen and the projection matrix in GrGpuGL, and
code for setting the GL fixed function state where necessary.
R=bsalomon@google.com, kkinnunen@nvidia.com
Author: cdalton@nvidia.com
Review URL: https://codereview.chromium.org/25846002
git-svn-id: http://skia.googlecode.com/svn/trunk@11620 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/gl/GrGLProgram.h b/src/gpu/gl/GrGLProgram.h
index c8bcbf4..23ed456 100644
--- a/src/gpu/gl/GrGLProgram.h
+++ b/src/gpu/gl/GrGLProgram.h
@@ -62,6 +62,8 @@
*/
GrGLuint programID() const { return fProgramID; }
+ bool hasVertexShader() const { return fHasVertexShader; }
+
/**
* Some GL state that is relevant to programs is not stored per-program. In particular color
* and coverage attributes can be global state. This struct is read and updated by
@@ -160,7 +162,9 @@
* This is the heavy initialization routine for building a GLProgram. colorStages and
* coverageStages correspond to the output of GrGLProgramDesc::Build().
*/
- bool genProgram(const GrEffectStage* colorStages[], const GrEffectStage* coverageStages[]);
+ bool genProgram(GrGLShaderBuilder* builder,
+ const GrEffectStage* colorStages[],
+ const GrEffectStage* coverageStages[]);
// Sets the texture units for samplers
void initSamplerUniforms();
@@ -195,6 +199,9 @@
GrGLUniformManager fUniformManager;
UniformHandles fUniformHandles;
+ bool fHasVertexShader;
+ int fNumTexCoordSets;
+
typedef SkRefCnt INHERITED;
};