diff options
Diffstat (limited to 'src/gpu/gl/GrGLProgramDesc.h')
-rw-r--r-- | src/gpu/gl/GrGLProgramDesc.h | 30 |
1 files changed, 6 insertions, 24 deletions
diff --git a/src/gpu/gl/GrGLProgramDesc.h b/src/gpu/gl/GrGLProgramDesc.h index c8aae19503..d7652f473c 100644 --- a/src/gpu/gl/GrGLProgramDesc.h +++ b/src/gpu/gl/GrGLProgramDesc.h @@ -172,20 +172,14 @@ private: // 1. uint32_t for total key length. // 2. uint32_t for a checksum. // 3. Header struct defined above. - // 4. An array of offsets to effect keys and their sizes (see 5). uint16_t for each - // offset and size. + // 4. uint32_t offsets to beginning of every effects' key (see 5). // 5. per-effect keys. Each effect's key is a variable length array of uint32_t. enum { - // Part 1. kLengthOffset = 0, - // Part 2. kChecksumOffset = kLengthOffset + sizeof(uint32_t), - // Part 3. kHeaderOffset = kChecksumOffset + sizeof(uint32_t), kHeaderSize = SkAlign4(sizeof(KeyHeader)), - // Part 4. - // This is the offset in the overall key to the array of per-effect offset,length pairs. - kEffectKeyOffsetsAndLengthOffset = kHeaderOffset + kHeaderSize, + kEffectKeyLengthsOffset = kHeaderOffset + kHeaderSize, }; template<typename T, size_t OFFSET> T* atOffset() { @@ -200,16 +194,6 @@ private: KeyHeader* header() { return this->atOffset<KeyHeader, kHeaderOffset>(); } - // Shared code between setRandom() and Build(). - static bool GetEffectKeyAndUpdateStats(const GrEffectStage& stage, - const GrGLCaps& caps, - bool useExplicitLocalCoords, - GrEffectKeyBuilder* b, - uint16_t* effectKeySize, - bool* setTrueIfReadsDst, - bool* setTrueIfReadsPos, - bool* setTrueIfHasVertexCode); - void finalize(); const KeyHeader& getHeader() const { return *this->atOffset<KeyHeader, kHeaderOffset>(); } @@ -228,11 +212,9 @@ private: } EffectKey get(int index) const { - const uint16_t* offsets = reinterpret_cast<const uint16_t*>( - fDesc->fKey.begin() + kEffectKeyOffsetsAndLengthOffset); - // We store two uint16_ts per effect, one for the offset to the effect's key and one for - // its length. Here we just need the offset. - uint16_t offset = offsets[2 * (fBaseIndex + index)]; + const uint32_t* offsets = reinterpret_cast<const uint32_t*>(fDesc->fKey.begin() + + kEffectKeyLengthsOffset); + uint32_t offset = offsets[fBaseIndex + index]; return *reinterpret_cast<const EffectKey*>(fDesc->fKey.begin() + offset); } private: @@ -243,7 +225,7 @@ private: enum { kMaxPreallocEffects = 8, kIntsPerEffect = 4, // This is an overestimate of the average effect key size. - kPreAllocSize = kEffectKeyOffsetsAndLengthOffset + + kPreAllocSize = kEffectKeyLengthsOffset + kMaxPreallocEffects * sizeof(uint32_t) * kIntsPerEffect, }; |