aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/gl/GrGLShaderBuilder.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/gl/GrGLShaderBuilder.h')
-rw-r--r--src/gpu/gl/GrGLShaderBuilder.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/gpu/gl/GrGLShaderBuilder.h b/src/gpu/gl/GrGLShaderBuilder.h
index f110628627..16a11e29a0 100644
--- a/src/gpu/gl/GrGLShaderBuilder.h
+++ b/src/gpu/gl/GrGLShaderBuilder.h
@@ -9,6 +9,7 @@
#define GrGLShaderBuilder_DEFINED
#include "GrAllocator.h"
+#include "GrCustomStage.h"
#include "gl/GrGLShaderVar.h"
#include "gl/GrGLSL.h"
#include "gl/GrGLUniformManager.h"
@@ -55,6 +56,22 @@ public:
void emitDefaultFetch(const char* outColor,
const char* samplerName);
+ /** Emits a texture lookup to the shader code with the form:
+ texture2D{Proj}(samplerName, coordName).swizzle
+ The routine selects the type of texturing based on samplerMode.
+ The generated swizzle state is built based on the format of the texture and the requested
+ swizzle access pattern. */
+ void emitCustomTextureLookup(SamplerMode samplerMode,
+ const GrTextureAccess& textureAccess,
+ const char* samplerName,
+ const char* coordName);
+
+ /** Generates a StageKey for the shader code based on the texture access parameters and the
+ capabilities of the GL context. This is useful for keying the shader programs that may
+ have multiple representations, based on the type/format of textures used. */
+ static GrCustomStage::StageKey KeyForTextureAccess(const GrTextureAccess& access,
+ const GrGLCaps& caps);
+
/** Add a uniform variable to the current program, that has visibilty in one or more shaders.
visibility is a bitfield of ShaderType values indicating from which shaders the uniform
should be accessible. At least one bit must be set. Geometry shader uniforms are not