Index: src/gpu/gl/GrGLUniformHandler.h |
diff --git a/src/gpu/gl/GrGLUniformHandler.h b/src/gpu/gl/GrGLUniformHandler.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a782bcb1c3d7494aa11a317d5da6913bdea7fc3f |
--- /dev/null |
+++ b/src/gpu/gl/GrGLUniformHandler.h |
@@ -0,0 +1,61 @@ |
+/* |
+ * Copyright 2015 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+#ifndef GrGLUniformHandler_DEFINED |
+#define GrGLUniformHandler_DEFINED |
+ |
+#include "glsl/GrGLSLUniformHandler.h" |
+ |
+#include "gl/GrGLProgramDataManager.h" |
+ |
+class GrGLCaps; |
+ |
+static const int kUniformsPerBlock = 8; |
+ |
+class GrGLUniformHandler : public GrGLSLUniformHandler { |
+public: |
+ const GrGLSLShaderVar& getUniformVariable(UniformHandle u) const override { |
+ return fUniforms[u.toIndex()].fVariable; |
+ } |
+ |
+ const char* getUniformCStr(UniformHandle u) const override { |
+ return this->getUniformVariable(u).c_str(); |
+ } |
+private: |
+ explicit GrGLUniformHandler(GrGLSLProgramBuilder* program) |
+ : INHERITED(program) |
+ , fUniforms(kUniformsPerBlock) {} |
+ |
+ UniformHandle internalAddUniformArray(uint32_t visibility, |
+ GrSLType type, |
+ GrSLPrecision precision, |
+ const char* name, |
+ bool mangleName, |
+ int arrayCount, |
+ const char** outName) override; |
+ |
+ void appendUniformDecls(ShaderVisibility, SkString*) const override; |
+ |
+ // Manually set uniform locations for all our uniforms. |
+ void bindUniformLocations(GrGLuint programID, const GrGLCaps& caps); |
+ |
+ // Updates the loction of the Uniforms if we cannot bind uniform locations manually |
+ void getUniformLocations(GrGLuint programID, const GrGLCaps& caps); |
+ |
+ const GrGLGpu* glGpu() const; |
+ |
+ typedef GrGLProgramDataManager::UniformInfo UniformInfo; |
+ typedef GrGLProgramDataManager::UniformInfoArray UniformInfoArray; |
+ |
+ UniformInfoArray fUniforms; |
+ |
+ friend class GrGLProgramBuilder; |
+ |
+ typedef GrGLSLUniformHandler INHERITED; |
+}; |
+ |
+#endif |