Index: src/gpu/GrProgramDesc.h |
diff --git a/src/gpu/GrProgramDesc.h b/src/gpu/GrProgramDesc.h |
index 66e0e06b8c88ed629c1ba7eeb06c795923895ce7..e07e116733b8a5313402d00fa0c7595c481fcef3 100644 |
--- a/src/gpu/GrProgramDesc.h |
+++ b/src/gpu/GrProgramDesc.h |
@@ -55,6 +55,9 @@ public: |
} |
struct KeyHeader { |
+ uint8_t fDstReadKey; // set by GrGLShaderBuilder if there |
+ // are effects that must read the dst. |
+ // Otherwise, 0. |
uint8_t fFragPosKey; // set by GrGLShaderBuilder if there are |
// effects that read the fragment position. |
// Otherwise, 0. |
@@ -76,6 +79,20 @@ public: |
// This should really only be used internally, base classes should return their own headers |
const KeyHeader& header() const { return *this->atOffset<KeyHeader, kHeaderOffset>(); } |
+ // A struct to communicate descriptor information to the program descriptor builder |
+ struct DescInfo { |
+ bool operator==(const DescInfo& that) const { |
+ return fReadsDst == that.fReadsDst && |
+ fReadsFragPosition == that.fReadsFragPosition; |
+ } |
+ bool operator!=(const DescInfo& that) const { return !(*this == that); }; |
+ |
+ // These flags give aggregated info on the processor stages that are used when building |
+ // programs. |
+ bool fReadsDst; |
+ bool fReadsFragPosition; |
+ }; |
+ |
private: |
template<typename T, size_t OFFSET> T* atOffset() { |
return reinterpret_cast<T*>(reinterpret_cast<intptr_t>(fKey.begin()) + OFFSET); |