Index: src/gpu/gl/GrGLProgramDesc.cpp |
diff --git a/src/gpu/gl/GrGLProgramDesc.cpp b/src/gpu/gl/GrGLProgramDesc.cpp |
index 79088137caa004519ddcd91d2ad13ad000f5ab40..bfbe95f78b73ec6dc19c0960f8db24a62af6a30c 100644 |
--- a/src/gpu/gl/GrGLProgramDesc.cpp |
+++ b/src/gpu/gl/GrGLProgramDesc.cpp |
@@ -4,15 +4,15 @@ |
* Use of this source code is governed by a BSD-style license that can be |
* found in the LICENSE file. |
*/ |
- |
-#include "gl/builders/GrGLFragmentShaderBuilder.h" |
#include "GrGLProgramDesc.h" |
+ |
+#include "GrGLProcessor.h" |
#include "GrBackendProcessorFactory.h" |
#include "GrProcessor.h" |
#include "GrGpuGL.h" |
#include "GrOptDrawState.h" |
- |
#include "SkChecksum.h" |
+#include "gl/builders/GrGLFragmentShaderBuilder.h" |
/** |
* The key for an individual coord transform is made up of a matrix type and a bit that |
@@ -179,7 +179,7 @@ bool |
GrGLProgramDesc::BuildStagedProcessorKey(const typename ProcessorKeyBuilder::StagedProcessor& stage, |
const GrGLCaps& caps, |
bool requiresLocalCoordAttrib, |
- GrGLProgramDesc* desc, |
+ GrProgramDesc* desc, |
int* offsetAndSizeIndex) { |
GrProcessorKeyBuilder b(&desc->fKey); |
uint16_t processorKeySize; |
@@ -204,7 +204,7 @@ bool GrGLProgramDesc::Build(const GrOptDrawState& optState, |
GrGpu::DrawType drawType, |
GrGpuGL* gpu, |
const GrDeviceCoordTexture* dstCopy, |
- GrGLProgramDesc* desc) { |
+ GrProgramDesc* desc) { |
bool inputColorIsUsed = optState.inputColorIsUsed(); |
bool inputCoverageIsUsed = optState.inputCoverageIsUsed(); |
@@ -248,7 +248,7 @@ bool GrGLProgramDesc::Build(const GrOptDrawState& optState, |
// --------DO NOT MOVE HEADER ABOVE THIS LINE-------------------------------------------------- |
// Because header is a pointer into the dynamic array, we can't push any new data into the key |
// below here. |
- KeyHeader* header = desc->header(); |
+ GLKeyHeader* header = desc->atOffset<GLKeyHeader, kHeaderOffset>(); |
// make sure any padding in the header is zeroed. |
memset(header, 0, kHeaderSize); |
@@ -270,11 +270,11 @@ bool GrGLProgramDesc::Build(const GrOptDrawState& optState, |
GR_GL_NO_CONSTANT_ATTRIBUTES; |
if (!inputColorIsUsed) { |
- header->fColorInput = kAllOnes_ColorInput; |
+ header->fColorInput = GrProgramDesc::kAllOnes_ColorInput; |
} else if (defaultToUniformInputs && !optState.hasColorVertexAttribute()) { |
- header->fColorInput = kUniform_ColorInput; |
+ header->fColorInput = GrProgramDesc::kUniform_ColorInput; |
} else { |
- header->fColorInput = kAttribute_ColorInput; |
+ header->fColorInput = GrProgramDesc::kAttribute_ColorInput; |
SkASSERT(!header->fUseFragShaderOnly); |
} |
@@ -282,11 +282,11 @@ bool GrGLProgramDesc::Build(const GrOptDrawState& optState, |
0xffffffff == optState.getCoverageColor(); |
if (covIsSolidWhite || !inputCoverageIsUsed) { |
- header->fCoverageInput = kAllOnes_ColorInput; |
+ header->fCoverageInput = GrProgramDesc::kAllOnes_ColorInput; |
} else if (defaultToUniformInputs && !optState.hasCoverageVertexAttribute()) { |
- header->fCoverageInput = kUniform_ColorInput; |
+ header->fCoverageInput = GrProgramDesc::kUniform_ColorInput; |
} else { |
- header->fCoverageInput = kAttribute_ColorInput; |
+ header->fCoverageInput = GrProgramDesc::kAttribute_ColorInput; |
SkASSERT(!header->fUseFragShaderOnly); |
} |
@@ -319,7 +319,7 @@ bool GrGLProgramDesc::Build(const GrOptDrawState& optState, |
int availableAttributeIndex = optState.getVertexAttribCount(); |
if (optState.hasColorVertexAttribute()) { |
header->fColorAttributeIndex = optState.colorVertexAttributeIndex(); |
- } else if (GrGLProgramDesc::kAttribute_ColorInput == header->fColorInput) { |
+ } else if (GrProgramDesc::kAttribute_ColorInput == header->fColorInput) { |
SkASSERT(availableAttributeIndex < GrDrawState::kMaxVertexAttribCnt); |
header->fColorAttributeIndex = availableAttributeIndex; |
availableAttributeIndex++; |
@@ -329,7 +329,7 @@ bool GrGLProgramDesc::Build(const GrOptDrawState& optState, |
if (optState.hasCoverageVertexAttribute()) { |
header->fCoverageAttributeIndex = optState.coverageVertexAttributeIndex(); |
- } else if (GrGLProgramDesc::kAttribute_ColorInput == header->fCoverageInput) { |
+ } else if (GrProgramDesc::kAttribute_ColorInput == header->fCoverageInput) { |
SkASSERT(availableAttributeIndex < GrDrawState::kMaxVertexAttribCnt); |
header->fCoverageAttributeIndex = availableAttributeIndex; |
} else { |
@@ -341,23 +341,17 @@ bool GrGLProgramDesc::Build(const GrOptDrawState& optState, |
header->fColorEffectCnt = optState.numColorStages(); |
header->fCoverageEffectCnt = optState.numCoverageStages(); |
- desc->finalize(); |
+ GrGLProgramDesc::Finalize(desc); |
return true; |
} |
-void GrGLProgramDesc::finalize() { |
- int keyLength = fKey.count(); |
+void GrGLProgramDesc::Finalize(GrProgramDesc* desc) { |
bsalomon
2014/10/23 18:10:30
Should this be moved to GrProgramDesc (even if it
|
+ int keyLength = desc->fKey.count(); |
SkASSERT(0 == (keyLength % 4)); |
- *this->atOffset<uint32_t, kLengthOffset>() = SkToU32(keyLength); |
+ *(desc->atOffset<uint32_t, GrProgramDesc::kLengthOffset>()) = SkToU32(keyLength); |
- uint32_t* checksum = this->atOffset<uint32_t, kChecksumOffset>(); |
+ uint32_t* checksum = desc->atOffset<uint32_t, GrProgramDesc::kChecksumOffset>(); |
*checksum = 0; |
- *checksum = SkChecksum::Compute(reinterpret_cast<uint32_t*>(fKey.begin()), keyLength); |
+ *checksum = SkChecksum::Compute(reinterpret_cast<uint32_t*>(desc->fKey.begin()), keyLength); |
} |
-GrGLProgramDesc& GrGLProgramDesc::operator= (const GrGLProgramDesc& other) { |
- size_t keyLength = other.keyLength(); |
- fKey.reset(keyLength); |
- memcpy(fKey.begin(), other.fKey.begin(), keyLength); |
- return *this; |
-} |