| Index: src/gpu/gl/GrGLProgramDesc.cpp
|
| diff --git a/src/gpu/gl/GrGLProgramDesc.cpp b/src/gpu/gl/GrGLProgramDesc.cpp
|
| index d5dc84c65bb94cb759c9c8a6bd6480126520340f..631cf42adc13c542684e5a04c709b8572ad7747c 100644
|
| --- a/src/gpu/gl/GrGLProgramDesc.cpp
|
| +++ b/src/gpu/gl/GrGLProgramDesc.cpp
|
| @@ -40,62 +40,6 @@ static bool swizzle_requires_alpha_remapping(const GrGLCaps& caps,
|
| return false;
|
| }
|
|
|
| -/**
|
| - * The key for an individual coord transform is made up of a matrix type, a precision, and a bit
|
| - * that indicates the source of the input coords.
|
| - */
|
| -enum {
|
| - kMatrixTypeKeyBits = 1,
|
| - kMatrixTypeKeyMask = (1 << kMatrixTypeKeyBits) - 1,
|
| -
|
| - kPrecisionBits = 2,
|
| - kPrecisionShift = kMatrixTypeKeyBits,
|
| -
|
| - kPositionCoords_Flag = (1 << (kPrecisionShift + kPrecisionBits)),
|
| - kDeviceCoords_Flag = kPositionCoords_Flag + kPositionCoords_Flag,
|
| -
|
| - kTransformKeyBits = kMatrixTypeKeyBits + kPrecisionBits + 2,
|
| -};
|
| -
|
| -GR_STATIC_ASSERT(kHigh_GrSLPrecision < (1 << kPrecisionBits));
|
| -
|
| -/**
|
| - * We specialize the vertex code for each of these matrix types.
|
| - */
|
| -enum MatrixType {
|
| - kNoPersp_MatrixType = 0,
|
| - kGeneral_MatrixType = 1,
|
| -};
|
| -
|
| -static uint32_t gen_transform_key(const GrPendingFragmentStage& stage, bool useExplicitLocalCoords) {
|
| - uint32_t totalKey = 0;
|
| - int numTransforms = stage.processor()->numTransforms();
|
| - for (int t = 0; t < numTransforms; ++t) {
|
| - uint32_t key = 0;
|
| - if (stage.isPerspectiveCoordTransform(t)) {
|
| - key |= kGeneral_MatrixType;
|
| - } else {
|
| - key |= kNoPersp_MatrixType;
|
| - }
|
| -
|
| - const GrCoordTransform& coordTransform = stage.processor()->coordTransform(t);
|
| - if (kLocal_GrCoordSet == coordTransform.sourceCoords() && !useExplicitLocalCoords) {
|
| - key |= kPositionCoords_Flag;
|
| - } else if (kDevice_GrCoordSet == coordTransform.sourceCoords()) {
|
| - key |= kDeviceCoords_Flag;
|
| - }
|
| -
|
| - GR_STATIC_ASSERT(kGrSLPrecisionCount <= (1 << kPrecisionBits));
|
| - key |= (coordTransform.precision() << kPrecisionShift);
|
| -
|
| - key <<= kTransformKeyBits * t;
|
| -
|
| - SkASSERT(0 == (totalKey & key)); // keys for each transform ought not to overlap
|
| - totalKey |= key;
|
| - }
|
| - return totalKey;
|
| -}
|
| -
|
| static uint32_t gen_texture_key(const GrProcessor& proc, const GrGLCaps& caps) {
|
| uint32_t key = 0;
|
| int numTextures = proc.numTextures();
|
| @@ -152,8 +96,6 @@ bool GrGLProgramDescBuilder::Build(const GrOptDrawState& optState,
|
| // bindings in use or other descriptor field settings) it should be set
|
| // to a canonical value to avoid duplicate programs with different keys.
|
|
|
| - bool requiresLocalCoordAttrib = descInfo.fRequiresLocalCoordAttrib;
|
| -
|
| GR_STATIC_ASSERT(0 == kProcessorKeysOffset % sizeof(uint32_t));
|
| // Make room for everything up to the effect keys.
|
| desc->fKey.reset();
|
| @@ -172,8 +114,7 @@ bool GrGLProgramDescBuilder::Build(const GrOptDrawState& optState,
|
| const GrPendingFragmentStage& fps = optState.getFragmentStage(s);
|
| const GrFragmentProcessor& fp = *fps.processor();
|
| fp.getGLProcessorKey(gpu->glCaps(), &b);
|
| - if (!get_meta_key(fp, gpu->glCaps(),
|
| - gen_transform_key(fps, requiresLocalCoordAttrib), &b)) {
|
| + if (!get_meta_key(fp, gpu->glCaps(), primProc.getTransformKey(fp.coordTransforms()), &b)) {
|
| desc->fKey.reset();
|
| return false;
|
| }
|
| @@ -197,7 +138,6 @@ bool GrGLProgramDescBuilder::Build(const GrOptDrawState& optState,
|
| bool isPathRendering = GrGpu::IsPathRenderingDrawType(drawType);
|
| if (gpu->caps()->pathRenderingSupport() && isPathRendering) {
|
| header->fUseNvpr = true;
|
| - SkASSERT(!optState.hasGeometryProcessor());
|
| } else {
|
| header->fUseNvpr = false;
|
| }
|
|
|