OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 // This is a GPU-backend specific test. It relies on static intializers to work | 9 // This is a GPU-backend specific test. It relies on static intializers to work |
10 | 10 |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 bool onIsEqual(const GrFragmentProcessor&) const override { return true; } | 86 bool onIsEqual(const GrFragmentProcessor&) const override { return true; } |
87 void onComputeInvariantOutput(GrInvariantOutput* inout) const override { } | 87 void onComputeInvariantOutput(GrInvariantOutput* inout) const override { } |
88 | 88 |
89 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; | 89 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; |
90 | 90 |
91 typedef GrFragmentProcessor INHERITED; | 91 typedef GrFragmentProcessor INHERITED; |
92 }; | 92 }; |
93 | 93 |
94 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(BigKeyProcessor); | 94 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(BigKeyProcessor); |
95 | 95 |
96 GrFragmentProcessor* BigKeyProcessor::TestCreate(SkRandom*, | 96 GrFragmentProcessor* BigKeyProcessor::TestCreate(GrProcessorTestData*) { |
97 GrContext*, | |
98 const GrCaps&, | |
99 GrTexture*[]) { | |
100 return BigKeyProcessor::Create(); | 97 return BigKeyProcessor::Create(); |
101 } | 98 } |
102 | 99 |
103 /* | 100 /* |
104 * Begin test code | 101 * Begin test code |
105 */ | 102 */ |
106 static const int kRenderTargetHeight = 1; | 103 static const int kRenderTargetHeight = 1; |
107 static const int kRenderTargetWidth = 1; | 104 static const int kRenderTargetWidth = 1; |
108 | 105 |
109 static GrRenderTarget* random_render_target(GrTextureProvider* textureProvider,
SkRandom* random, | 106 static GrRenderTarget* random_render_target(GrTextureProvider* textureProvider,
SkRandom* random, |
(...skipping 19 matching lines...) Expand all Loading... |
129 GrTexture* texture = textureProvider->findAndRefTextureByUniqueKey(key); | 126 GrTexture* texture = textureProvider->findAndRefTextureByUniqueKey(key); |
130 if (!texture) { | 127 if (!texture) { |
131 texture = textureProvider->createTexture(texDesc, true); | 128 texture = textureProvider->createTexture(texDesc, true); |
132 if (texture) { | 129 if (texture) { |
133 textureProvider->assignUniqueKeyToTexture(key, texture); | 130 textureProvider->assignUniqueKeyToTexture(key, texture); |
134 } | 131 } |
135 } | 132 } |
136 return texture ? texture->asRenderTarget() : NULL; | 133 return texture ? texture->asRenderTarget() : NULL; |
137 } | 134 } |
138 | 135 |
139 static void set_random_xpf(GrContext* context, const GrCaps& caps, | 136 static void set_random_xpf(GrPipelineBuilder* pipelineBuilder, GrProcessorTestDa
ta* d) { |
140 GrPipelineBuilder* pipelineBuilder, SkRandom* random, | 137 SkAutoTUnref<const GrXPFactory> xpf(GrProcessorTestFactory<GrXPFactory>::Cre
ateStage(d)); |
141 GrTexture* dummyTextures[]) { | |
142 SkAutoTUnref<const GrXPFactory> xpf( | |
143 GrProcessorTestFactory<GrXPFactory>::CreateStage(random, context, caps,
dummyTextures)); | |
144 SkASSERT(xpf); | 138 SkASSERT(xpf); |
145 pipelineBuilder->setXPFactory(xpf.get()); | 139 pipelineBuilder->setXPFactory(xpf.get()); |
146 } | 140 } |
147 | 141 |
148 static void set_random_color_coverage_stages(GrGpu* gpu, | 142 static void set_random_color_coverage_stages(GrPipelineBuilder* pipelineBuilder, |
149 GrPipelineBuilder* pipelineBuilder, | 143 GrProcessorTestData* d, int maxStag
es) { |
150 int maxStages, | 144 int numProcs = d->fRandom->nextULessThan(maxStages + 1); |
151 SkRandom* random, | 145 int numColorProcs = d->fRandom->nextULessThan(numProcs + 1); |
152 GrTexture* dummyTextures[]) { | |
153 int numProcs = random->nextULessThan(maxStages + 1); | |
154 int numColorProcs = random->nextULessThan(numProcs + 1); | |
155 | 146 |
156 for (int s = 0; s < numProcs;) { | 147 for (int s = 0; s < numProcs;) { |
157 SkAutoTUnref<const GrFragmentProcessor> fp( | 148 SkAutoTUnref<const GrFragmentProcessor> fp( |
158 GrProcessorTestFactory<GrFragmentProcessor>::CreateStage(random, | 149 GrProcessorTestFactory<GrFragmentProcessor>::CreateStage(d)); |
159 gpu->ge
tContext(), | |
160 *gpu->c
aps(), | |
161 dummyTe
xtures)); | |
162 SkASSERT(fp); | 150 SkASSERT(fp); |
163 | 151 |
164 // finally add the stage to the correct pipeline in the drawstate | 152 // finally add the stage to the correct pipeline in the drawstate |
165 if (s < numColorProcs) { | 153 if (s < numColorProcs) { |
166 pipelineBuilder->addColorProcessor(fp); | 154 pipelineBuilder->addColorProcessor(fp); |
167 } else { | 155 } else { |
168 pipelineBuilder->addCoverageProcessor(fp); | 156 pipelineBuilder->addCoverageProcessor(fp); |
169 } | 157 } |
170 ++s; | 158 ++s; |
171 } | 159 } |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 return false; | 237 return false; |
250 } | 238 } |
251 | 239 |
252 GrPipelineBuilder pipelineBuilder; | 240 GrPipelineBuilder pipelineBuilder; |
253 pipelineBuilder.setRenderTarget(rt.get()); | 241 pipelineBuilder.setRenderTarget(rt.get()); |
254 pipelineBuilder.setClip(clip); | 242 pipelineBuilder.setClip(clip); |
255 | 243 |
256 SkAutoTUnref<GrBatch> batch(GrRandomBatch(&random, context)); | 244 SkAutoTUnref<GrBatch> batch(GrRandomBatch(&random, context)); |
257 SkASSERT(batch); | 245 SkASSERT(batch); |
258 | 246 |
259 set_random_color_coverage_stages(fGpu, | 247 GrShaderDataManager shaderDataManager; |
260 &pipelineBuilder, | 248 GrProcessorTestData ptd(&random, context, &shaderDataManager, fGpu->caps
(), dummyTextures); |
261 maxStages, | 249 set_random_color_coverage_stages(&pipelineBuilder, &ptd, maxStages); |
262 &random, | 250 set_random_xpf(&pipelineBuilder, &ptd); |
263 dummyTextures); | |
264 | |
265 // creates a random xfer processor factory on the draw state | |
266 set_random_xpf(context, *fGpu->caps(), &pipelineBuilder, &random, dummyT
extures); | |
267 | |
268 set_random_state(&pipelineBuilder, &random); | 251 set_random_state(&pipelineBuilder, &random); |
269 set_random_stencil(&pipelineBuilder, &random); | 252 set_random_stencil(&pipelineBuilder, &random); |
270 | 253 |
271 this->drawBatch(&pipelineBuilder, batch); | 254 this->drawBatch(&pipelineBuilder, batch); |
272 } | 255 } |
273 | 256 |
274 // Flush everything, test passes if flush is successful(ie, no asserts are h
it, no crashes) | 257 // Flush everything, test passes if flush is successful(ie, no asserts are h
it, no crashes) |
275 this->flush(); | 258 this->flush(); |
276 return true; | 259 return true; |
277 } | 260 } |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 } | 299 } |
317 #endif | 300 #endif |
318 GrTestTarget target; | 301 GrTestTarget target; |
319 context->getTestTarget(&target); | 302 context->getTestTarget(&target); |
320 REPORTER_ASSERT(reporter, target.target()->programUnitTest(context,
maxStages)); | 303 REPORTER_ASSERT(reporter, target.target()->programUnitTest(context,
maxStages)); |
321 } | 304 } |
322 } | 305 } |
323 } | 306 } |
324 | 307 |
325 #endif | 308 #endif |
OLD | NEW |