Index: src/gpu/GrProgramDesc.h |
diff --git a/src/gpu/GrProgramDesc.h b/src/gpu/GrProgramDesc.h |
index 66e0e06b8c88ed629c1ba7eeb06c795923895ce7..b837ceea95fd9f4a4f0db15858bb8a5bc3822a2e 100644 |
--- a/src/gpu/GrProgramDesc.h |
+++ b/src/gpu/GrProgramDesc.h |
@@ -12,8 +12,6 @@ |
#include "GrTypesPriv.h" |
#include "SkChecksum.h" |
-class GrGLGpu; |
- |
/** This class describes a program to generate. It also serves as a program cache key. Very little |
of this is GL-specific. The GL-specific parts could be factored out into a subclass. */ |
class GrProgramDesc { |
@@ -76,7 +74,7 @@ public: |
// This should really only be used internally, base classes should return their own headers |
const KeyHeader& header() const { return *this->atOffset<KeyHeader, kHeaderOffset>(); } |
-private: |
+protected: |
template<typename T, size_t OFFSET> T* atOffset() { |
return reinterpret_cast<T*>(reinterpret_cast<intptr_t>(fKey.begin()) + OFFSET); |
} |
@@ -95,21 +93,21 @@ private: |
*checksum = SkChecksum::Compute(reinterpret_cast<uint32_t*>(fKey.begin()), keyLength); |
} |
- // The key, stored in fKey, is composed of four parts: |
- // 1. uint32_t for total key length. |
- // 2. uint32_t for a checksum. |
- // 3. Header struct defined above. Also room for extensions to the header |
- // 4. A Backend specific payload. Room is preallocated for this |
- enum KeyOffsets { |
- // Part 1. |
- kLengthOffset = 0, |
- // Part 2. |
- kChecksumOffset = kLengthOffset + sizeof(uint32_t), |
- // Part 3. |
- kHeaderOffset = kChecksumOffset + sizeof(uint32_t), |
- kHeaderSize = SkAlign4(2 * sizeof(KeyHeader)), |
- }; |
- |
+ // The key, stored in fKey, is composed of four parts: |
+ // 1. uint32_t for total key length. |
+ // 2. uint32_t for a checksum. |
+ // 3. Header struct defined above. Also room for extensions to the header |
+ // 4. A Backend specific payload. Room is preallocated for this |
+ enum KeyOffsets { |
+ // Part 1. |
+ kLengthOffset = 0, |
+ // Part 2. |
+ kChecksumOffset = kLengthOffset + sizeof(uint32_t), |
+ // Part 3. |
+ kHeaderOffset = kChecksumOffset + sizeof(uint32_t), |
+ kHeaderSize = SkAlign4(2 * sizeof(KeyHeader)), |
+ }; |
+ |
enum { |
kMaxPreallocProcessors = 8, |
kIntsPerProcessor = 4, // This is an overestimate of the average effect key size. |
@@ -117,9 +115,11 @@ private: |
kMaxPreallocProcessors * sizeof(uint32_t) * kIntsPerProcessor, |
}; |
- SkSTArray<kPreAllocSize, uint8_t, true> fKey; |
+ SkSTArray<kPreAllocSize, uint8_t, true>& key() { return fKey; } |
+ const SkSTArray<kPreAllocSize, uint8_t, true>& key() const { return fKey; } |
- friend class GrGLProgramDescBuilder; |
+private: |
+ SkSTArray<kPreAllocSize, uint8_t, true> fKey; |
}; |
#endif |