diff options
author | 2014-09-23 09:50:21 -0700 | |
---|---|---|
committer | 2014-09-23 09:50:21 -0700 | |
commit | b0a8a377f832c59cee939ad721e1f87d378b7142 (patch) | |
tree | 7edeac33c817af28d73f3fbe1b31776ac34e8773 /tests/GLProgramsTest.cpp | |
parent | e51ac563de24ed4b25fde97c225580a30a55e9ca (diff) |
Patch to create a distinct geometry processor. The vast majority of this patch
is just a rename. The meat is in GrGeometryProcessor, GrProcessor,
GrGL*Processor, GrProcessorStage, Gr*BackendProcessorFactory,
GrProcessUnitTestFactory, and the builders
BUG=skia:
R=bsalomon@google.com
Author: joshualitt@chromium.org
Review URL: https://codereview.chromium.org/582963002
Diffstat (limited to 'tests/GLProgramsTest.cpp')
-rw-r--r-- | tests/GLProgramsTest.cpp | 68 |
1 files changed, 28 insertions, 40 deletions
diff --git a/tests/GLProgramsTest.cpp b/tests/GLProgramsTest.cpp index e4d9675bff..a16173b965 100644 --- a/tests/GLProgramsTest.cpp +++ b/tests/GLProgramsTest.cpp @@ -12,7 +12,7 @@ #if SK_SUPPORT_GPU && SK_ALLOW_STATIC_GLOBAL_INITIALIZERS -#include "GrBackendEffectFactory.h" +#include "GrBackendProcessorFactory.h" #include "GrContextFactory.h" #include "GrOptDrawState.h" #include "effects/GrConfigConversionEffect.h" @@ -22,25 +22,22 @@ #include "SkRandom.h" #include "Test.h" -static void get_stage_stats(const GrEffectStage stage, bool* readsDst, +static void get_stage_stats(const GrFragmentStage stage, bool* readsDst, bool* readsFragPosition, bool* requiresVertexShader) { - if (stage.getEffect()->willReadDstColor()) { + if (stage.getFragmentProcessor()->willReadDstColor()) { *readsDst = true; } - if (stage.getEffect()->willReadFragmentPosition()) { + if (stage.getProcessor()->willReadFragmentPosition()) { *readsFragPosition = true; } - if (stage.getEffect()->requiresVertexShader()) { - *requiresVertexShader = true; - } } bool GrGLProgramDesc::setRandom(SkRandom* random, GrGpuGL* gpu, const GrRenderTarget* dstRenderTarget, const GrTexture* dstCopyTexture, - const GrEffectStage* geometryProcessor, - const GrEffectStage* stages[], + const GrGeometryStage* geometryProcessor, + const GrFragmentStage* stages[], int numColorStages, int numCoverageStages, int currAttribIndex, @@ -64,7 +61,7 @@ bool GrGLProgramDesc::setRandom(SkRandom* random, bool vertexShader = SkToBool(geometryProcessor); int offset = 0; if (geometryProcessor) { - const GrEffectStage* stage = geometryProcessor; + const GrGeometryStage* stage = geometryProcessor; uint16_t* offsetAndSize = reinterpret_cast<uint16_t*>(fKey.begin() + kEffectKeyOffsetsAndLengthOffset + offset * 2 * sizeof(uint16_t)); @@ -73,20 +70,21 @@ bool GrGLProgramDesc::setRandom(SkRandom* random, fKey.reset(); return false; } - GrEffectKeyBuilder b(&fKey); + GrProcessorKeyBuilder b(&fKey); uint16_t effectKeySize; - if (!GetEffectKey(*stage, gpu->glCaps(), useLocalCoords, &b, &effectKeySize)) { + if (!GetProcessorKey(*stage, gpu->glCaps(), useLocalCoords, &b, &effectKeySize)) { fKey.reset(); return false; } - get_stage_stats(*stage, &dstRead, &fragPos, &vertexShader); + vertexShader = true; + fragPos = stage->getProcessor()->willReadFragmentPosition(); offsetAndSize[0] = effectKeyOffset; offsetAndSize[1] = effectKeySize; offset++; } for (int s = 0; s < numStages; ++s, ++offset) { - const GrEffectStage* stage = stages[s]; + const GrFragmentStage* stage = stages[s]; uint16_t* offsetAndSize = reinterpret_cast<uint16_t*>(fKey.begin() + kEffectKeyOffsetsAndLengthOffset + offset * 2 * sizeof(uint16_t)); @@ -95,9 +93,9 @@ bool GrGLProgramDesc::setRandom(SkRandom* random, fKey.reset(); return false; } - GrEffectKeyBuilder b(&fKey); + GrProcessorKeyBuilder b(&fKey); uint16_t effectKeySize; - if (!GetEffectKey(*stages[s], gpu->glCaps(), useLocalCoords, &b, &effectKeySize)) { + if (!GetProcessorKey(*stages[s], gpu->glCaps(), useLocalCoords, &b, &effectKeySize)) { fKey.reset(); return false; } @@ -190,8 +188,8 @@ bool GrGLProgramDesc::setRandom(SkRandom* random, // than two attributes. GrVertexAttrib genericVertexAttribs[] = { { kVec2f_GrVertexAttribType, 0, kPosition_GrVertexAttribBinding }, - { kVec2f_GrVertexAttribType, 0, kEffect_GrVertexAttribBinding }, - { kVec2f_GrVertexAttribType, 0, kEffect_GrVertexAttribBinding } + { kVec2f_GrVertexAttribType, 0, kGeometryProcessor_GrVertexAttribBinding }, + { kVec2f_GrVertexAttribType, 0, kGeometryProcessor_GrVertexAttribBinding } }; /* @@ -256,37 +254,31 @@ bool GrGpuGL::programUnitTest(int maxStages) { int numColorStages = random.nextULessThan(numStages + 1); int numCoverageStages = numStages - numColorStages; - SkAutoSTMalloc<8, const GrEffectStage*> stages(numStages); + SkAutoSTMalloc<8, const GrFragmentStage*> stages(numStages); bool usePathRendering = this->glCaps().pathRenderingSupport() && random.nextBool(); GrGpu::DrawType drawType = usePathRendering ? GrGpu::kDrawPath_DrawType : GrGpu::kDrawPoints_DrawType; - SkAutoTDelete<GrEffectStage> geometryProcessor; + SkAutoTDelete<GrGeometryStage> geometryProcessor; bool hasGeometryProcessor = usePathRendering ? false : random.nextBool(); if (hasGeometryProcessor) { while (true) { - SkAutoTUnref<const GrEffect> effect(GrEffectTestFactory::CreateStage( - &random, - this->getContext(), - *this->caps(), - dummyTextures)); + SkAutoTUnref<const GrGeometryProcessor> effect( + GrProcessorTestFactory<GrGeometryProcessor>::CreateStage(&random, this->getContext(), *this->caps(), + dummyTextures)); SkASSERT(effect); // Only geometryProcessor can use vertex shader - if (!effect->requiresVertexShader()) { - continue; - } - - GrEffectStage* stage = SkNEW_ARGS(GrEffectStage, (effect.get())); + GrGeometryStage* stage = SkNEW_ARGS(GrGeometryStage, (effect.get())); geometryProcessor.reset(stage); // we have to set dummy vertex attribs - const GrEffect::VertexAttribArray& v = effect->getVertexAttribs(); + const GrGeometryProcessor::VertexAttribArray& v = effect->getVertexAttribs(); int numVertexAttribs = v.count(); - SkASSERT(GrEffect::kMaxVertexAttribs == 2 && - GrEffect::kMaxVertexAttribs >= numVertexAttribs); + SkASSERT(GrGeometryProcessor::kMaxVertexAttribs == 2 && + GrGeometryProcessor::kMaxVertexAttribs >= numVertexAttribs); size_t runningStride = GrVertexAttribTypeSize(genericVertexAttribs[0].fType); for (int i = 0; i < numVertexAttribs; i++) { genericVertexAttribs[i + 1].fOffset = runningStride; @@ -303,18 +295,14 @@ bool GrGpuGL::programUnitTest(int maxStages) { } } for (int s = 0; s < numStages;) { - SkAutoTUnref<const GrEffect> effect(GrEffectTestFactory::CreateStage( + SkAutoTUnref<const GrFragmentProcessor> effect( + GrProcessorTestFactory<GrFragmentProcessor>::CreateStage( &random, this->getContext(), *this->caps(), dummyTextures)); SkASSERT(effect); - // Only geometryProcessor can use vertex shader - if (effect->requiresVertexShader()) { - continue; - } - // If adding this effect would exceed the max texture coord set count then generate a // new random effect. if (usePathRendering && this->glPathRendering()->texturingMode() == @@ -325,7 +313,7 @@ bool GrGpuGL::programUnitTest(int maxStages) { } currTextureCoordSet += numTransforms; } - GrEffectStage* stage = SkNEW_ARGS(GrEffectStage, (effect.get())); + GrFragmentStage* stage = SkNEW_ARGS(GrFragmentStage, (effect.get())); stages[s] = stage; ++s; |