Index: src/gpu/glsl/GrGLSLProgramDesc.h |
diff --git a/src/gpu/glsl/GrGLSLProgramDesc.h b/src/gpu/glsl/GrGLSLProgramDesc.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..149817988549422935afa0bf827bbb01e9bcb7ab |
--- /dev/null |
+++ b/src/gpu/glsl/GrGLSLProgramDesc.h |
@@ -0,0 +1,63 @@ |
+/* |
+* Copyright 2016 Google Inc. |
+* |
+* Use of this source code is governed by a BSD-style license that can be |
+* found in the LICENSE file. |
+*/ |
+ |
+#ifndef GrGLSLProgramDesc_DEFINED |
+#define GrGLSLProgramDesc_DEFINED |
+ |
+#include "GrColor.h" |
+#include "GrProgramDesc.h" |
+#include "GrGpu.h" |
+#include "GrTypesPriv.h" |
+ |
+class GrGLSLProgramDescBuilder; |
+ |
+class GrGLSLProgramDesc : public GrProgramDesc { |
+ friend class GrGLSLProgramDescBuilder; |
+}; |
+ |
+/** |
+* This class can be used to build a GrProgramDesc. It also provides helpers for accessing |
+* GL specific info in the header. |
+*/ |
+class GrGLSLProgramDescBuilder { |
+public: |
+ typedef GrProgramDesc::KeyHeader KeyHeader; |
+ // The key, stored in fKey, is composed of five parts(first 2 are defined in the key itself): |
+ // 1. uint32_t for total key length. |
+ // 2. uint32_t for a checksum. |
+ // 3. Header struct defined above. |
+ // 4. Backend-specific information including per-processor keys and their key lengths. |
+ // Each processor's key is a variable length array of uint32_t. |
+ enum { |
+ // Part 3. |
+ kHeaderOffset = GrGLSLProgramDesc::kHeaderOffset, |
+ kHeaderSize = SkAlign4(sizeof(KeyHeader)), |
+ // Part 4. |
+ // This is the offset into the backenend specific part of the key, which includes |
+ // per-processor keys. |
+ kProcessorKeysOffset = kHeaderOffset + kHeaderSize, |
+ }; |
+ |
+ /** |
+ * Builds a GLSL specific program descriptor |
+ * |
+ * @param GrPrimitiveProcessor The geometry |
+ * @param GrPipeline The optimized drawstate. The descriptor will represent a program |
+ * which this optstate can use to draw with. The optstate contains |
+ * general draw information, as well as the specific color, geometry, |
+ * and coverage stages which will be used to generate the GL Program for |
+ * this optstate. |
+ * @param GrGLSLCaps Capabilities of the GLSL backend. |
+ * @param GrProgramDesc The built and finalized descriptor |
+ **/ |
+ static bool Build(GrProgramDesc*, |
+ const GrPrimitiveProcessor&, |
+ const GrPipeline&, |
+ const GrGLSLCaps&); |
+}; |
+ |
+#endif |