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 |
11 #include "SkTypes.h" | 11 #include "SkTypes.h" |
12 | 12 |
13 #if SK_SUPPORT_GPU && SK_ALLOW_STATIC_GLOBAL_INITIALIZERS | 13 #if SK_SUPPORT_GPU && SK_ALLOW_STATIC_GLOBAL_INITIALIZERS |
14 | 14 |
15 #include "GrContextFactory.h" | 15 #include "GrContextFactory.h" |
16 #include "GrInvariantOutput.h" | 16 #include "GrInvariantOutput.h" |
17 #include "GrOptDrawState.h" | 17 #include "GrOptDrawState.h" |
18 #include "GrTBackendProcessorFactory.h" | |
19 #include "GrTest.h" | 18 #include "GrTest.h" |
20 #include "SkChecksum.h" | 19 #include "SkChecksum.h" |
21 #include "SkRandom.h" | 20 #include "SkRandom.h" |
22 #include "Test.h" | 21 #include "Test.h" |
23 #include "effects/GrConfigConversionEffect.h" | 22 #include "effects/GrConfigConversionEffect.h" |
24 #include "gl/GrGLPathRendering.h" | 23 #include "gl/GrGLPathRendering.h" |
25 #include "gl/GrGpuGL.h" | 24 #include "gl/GrGpuGL.h" |
26 #include "gl/builders/GrGLProgramBuilder.h" | 25 #include "gl/builders/GrGLProgramBuilder.h" |
27 | 26 |
28 /* | 27 /* |
29 * A dummy processor which just tries to insert a massive key and verify that it
can retrieve the | 28 * A dummy processor which just tries to insert a massive key and verify that it
can retrieve the |
30 * whole thing correctly | 29 * whole thing correctly |
31 */ | 30 */ |
32 static const uint32_t kMaxKeySize = 1024; | 31 static const uint32_t kMaxKeySize = 1024; |
33 | 32 |
34 class GLBigKeyProcessor; | 33 class GLBigKeyProcessor : public GrGLFragmentProcessor { |
| 34 public: |
| 35 GLBigKeyProcessor(const GrProcessor&) {} |
| 36 |
| 37 virtual void emitCode(GrGLFPBuilder* builder, |
| 38 const GrFragmentProcessor& fp, |
| 39 const char* outputColor, |
| 40 const char* inputColor, |
| 41 const TransformedCoordsArray&, |
| 42 const TextureSamplerArray&) {} |
| 43 |
| 44 static void GenKey(const GrProcessor& processor, const GrGLCaps&, GrProcesso
rKeyBuilder* b) { |
| 45 for (uint32_t i = 0; i < kMaxKeySize; i++) { |
| 46 b->add32(i); |
| 47 } |
| 48 } |
| 49 |
| 50 private: |
| 51 typedef GrGLFragmentProcessor INHERITED; |
| 52 }; |
35 | 53 |
36 class BigKeyProcessor : public GrFragmentProcessor { | 54 class BigKeyProcessor : public GrFragmentProcessor { |
37 public: | 55 public: |
38 static GrFragmentProcessor* Create() { | 56 static GrFragmentProcessor* Create() { |
39 GR_CREATE_STATIC_PROCESSOR(gBigKeyProcessor, BigKeyProcessor, ()) | 57 GR_CREATE_STATIC_PROCESSOR(gBigKeyProcessor, BigKeyProcessor, ()) |
40 return SkRef(gBigKeyProcessor); | 58 return SkRef(gBigKeyProcessor); |
41 } | 59 } |
42 | 60 |
43 static const char* Name() { return "Big ol' Key"; } | 61 virtual const char* name() const SK_OVERRIDE { return "Big Ole Key"; } |
44 | 62 |
45 virtual const GrBackendFragmentProcessorFactory& getFactory() const SK_OVERR
IDE { | 63 virtual void getGLProcessorKey(const GrGLCaps& caps, |
46 return GrTBackendFragmentProcessorFactory<BigKeyProcessor>::getInstance(
); | 64 GrProcessorKeyBuilder* b) const SK_OVERRIDE { |
| 65 GLBigKeyProcessor::GenKey(*this, caps, b); |
47 } | 66 } |
48 | 67 |
49 typedef GLBigKeyProcessor GLProcessor; | 68 virtual GrGLFragmentProcessor* createGLInstance() const SK_OVERRIDE { |
| 69 return SkNEW_ARGS(GLBigKeyProcessor, (*this)); |
| 70 } |
50 | 71 |
51 private: | 72 private: |
52 BigKeyProcessor() { } | 73 BigKeyProcessor() { |
| 74 this->initClassID<BigKeyProcessor>(); |
| 75 } |
53 virtual bool onIsEqual(const GrFragmentProcessor&) const SK_OVERRIDE { retur
n true; } | 76 virtual bool onIsEqual(const GrFragmentProcessor&) const SK_OVERRIDE { retur
n true; } |
54 virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVE
RRIDE { } | 77 virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVE
RRIDE { } |
55 | 78 |
56 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; | 79 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; |
57 | 80 |
58 typedef GrFragmentProcessor INHERITED; | 81 typedef GrFragmentProcessor INHERITED; |
59 }; | 82 }; |
60 | 83 |
61 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(BigKeyProcessor); | 84 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(BigKeyProcessor); |
62 | 85 |
63 GrFragmentProcessor* BigKeyProcessor::TestCreate(SkRandom*, | 86 GrFragmentProcessor* BigKeyProcessor::TestCreate(SkRandom*, |
64 GrContext*, | 87 GrContext*, |
65 const GrDrawTargetCaps&, | 88 const GrDrawTargetCaps&, |
66 GrTexture*[]) { | 89 GrTexture*[]) { |
67 return BigKeyProcessor::Create(); | 90 return BigKeyProcessor::Create(); |
68 } | 91 } |
69 | 92 |
70 class GLBigKeyProcessor : public GrGLFragmentProcessor { | |
71 public: | |
72 GLBigKeyProcessor(const GrBackendProcessorFactory& factory, const GrProcesso
r&) | |
73 : INHERITED(factory) {} | |
74 | |
75 virtual void emitCode(GrGLFPBuilder* builder, | |
76 const GrFragmentProcessor& fp, | |
77 const char* outputColor, | |
78 const char* inputColor, | |
79 const TransformedCoordsArray&, | |
80 const TextureSamplerArray&) {} | |
81 | |
82 static void GenKey(const GrProcessor& processor, const GrGLCaps&, GrProcesso
rKeyBuilder* b) { | |
83 for (uint32_t i = 0; i < kMaxKeySize; i++) { | |
84 b->add32(i); | |
85 } | |
86 } | |
87 | |
88 private: | |
89 typedef GrGLFragmentProcessor INHERITED; | |
90 }; | |
91 | |
92 /* | 93 /* |
93 * Begin test code | 94 * Begin test code |
94 */ | 95 */ |
95 static const int kRenderTargetHeight = 1; | 96 static const int kRenderTargetHeight = 1; |
96 static const int kRenderTargetWidth = 1; | 97 static const int kRenderTargetWidth = 1; |
97 | 98 |
98 static GrRenderTarget* random_render_target(GrContext* context, | 99 static GrRenderTarget* random_render_target(GrContext* context, |
99 const GrCacheID& cacheId, | 100 const GrCacheID& cacheId, |
100 SkRandom* random) { | 101 SkRandom* random) { |
101 // setup render target | 102 // setup render target |
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
430 } | 431 } |
431 #endif | 432 #endif |
432 GrTestTarget target; | 433 GrTestTarget target; |
433 context->getTestTarget(&target); | 434 context->getTestTarget(&target); |
434 REPORTER_ASSERT(reporter, target.target()->programUnitTest(maxStages
)); | 435 REPORTER_ASSERT(reporter, target.target()->programUnitTest(maxStages
)); |
435 } | 436 } |
436 } | 437 } |
437 } | 438 } |
438 | 439 |
439 #endif | 440 #endif |
OLD | NEW |