| 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 "gl/GrGpuGL.h" | 15 #include "gl/GrGpuGL.h" |
| 16 #include "GrBackendEffectFactory.h" | 16 #include "GrBackendEffectFactory.h" |
| 17 #include "GrContextFactory.h" | 17 #include "GrContextFactory.h" |
| 18 #include "GrDrawEffect.h" | 18 #include "GrDrawEffect.h" |
| 19 #include "effects/GrConfigConversionEffect.h" | 19 #include "effects/GrConfigConversionEffect.h" |
| 20 | 20 |
| 21 #include "SkChecksum.h" | 21 #include "SkChecksum.h" |
| 22 #include "SkRandom.h" | 22 #include "SkRandom.h" |
| 23 #include "Test.h" | 23 #include "Test.h" |
| 24 #include "TestClassDef.h" |
| 24 | 25 |
| 25 void GrGLProgramDesc::setRandom(SkRandom* random, | 26 void GrGLProgramDesc::setRandom(SkRandom* random, |
| 26 const GrGpuGL* gpu, | 27 const GrGpuGL* gpu, |
| 27 const GrRenderTarget* dstRenderTarget, | 28 const GrRenderTarget* dstRenderTarget, |
| 28 const GrTexture* dstCopyTexture, | 29 const GrTexture* dstCopyTexture, |
| 29 const GrEffectStage* stages[], | 30 const GrEffectStage* stages[], |
| 30 int numColorStages, | 31 int numColorStages, |
| 31 int numCoverageStages, | 32 int numCoverageStages, |
| 32 int currAttribIndex) { | 33 int currAttribIndex) { |
| 33 int numEffects = numColorStages + numCoverageStages; | 34 int numEffects = numColorStages + numCoverageStages; |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 for (int s = 0; s < numStages; ++s) { | 220 for (int s = 0; s < numStages; ++s) { |
| 220 SkDELETE(stages[s]); | 221 SkDELETE(stages[s]); |
| 221 } | 222 } |
| 222 if (NULL == program.get()) { | 223 if (NULL == program.get()) { |
| 223 return false; | 224 return false; |
| 224 } | 225 } |
| 225 } | 226 } |
| 226 return true; | 227 return true; |
| 227 } | 228 } |
| 228 | 229 |
| 229 static void GLProgramsTest(skiatest::Reporter* reporter, GrContextFactory* facto
ry) { | 230 DEF_GPUTEST(GLPrograms, reporter, factory) { |
| 230 for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) { | 231 for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) { |
| 231 GrContext* context = factory->get(static_cast<GrContextFactory::GLContex
tType>(type)); | 232 GrContext* context = factory->get(static_cast<GrContextFactory::GLContex
tType>(type)); |
| 232 if (NULL != context) { | 233 if (NULL != context) { |
| 233 GrGpuGL* gpu = static_cast<GrGpuGL*>(context->getGpu()); | 234 GrGpuGL* gpu = static_cast<GrGpuGL*>(context->getGpu()); |
| 234 int maxStages = 6; | 235 int maxStages = 6; |
| 235 #if SK_ANGLE | 236 #if SK_ANGLE |
| 236 // Some long shaders run out of temporary registers in the D3D compi
ler on ANGLE. | 237 // Some long shaders run out of temporary registers in the D3D compi
ler on ANGLE. |
| 237 if (type == GrContextFactory::kANGLE_GLContextType) { | 238 if (type == GrContextFactory::kANGLE_GLContextType) { |
| 238 maxStages = 3; | 239 maxStages = 3; |
| 239 } | 240 } |
| 240 #endif | 241 #endif |
| 241 REPORTER_ASSERT(reporter, gpu->programUnitTest(maxStages)); | 242 REPORTER_ASSERT(reporter, gpu->programUnitTest(maxStages)); |
| 242 } | 243 } |
| 243 } | 244 } |
| 244 } | 245 } |
| 245 | 246 |
| 246 #include "TestClassDef.h" | |
| 247 DEFINE_GPUTESTCLASS("GLPrograms", GLProgramsTestClass, GLProgramsTest) | |
| 248 | |
| 249 // This is evil evil evil. The linker may throw away whole translation units as
dead code if it | 247 // This is evil evil evil. The linker may throw away whole translation units as
dead code if it |
| 250 // thinks none of the functions are called. It will do this even if there are st
atic initializers | 248 // thinks none of the functions are called. It will do this even if there are st
atic initializers |
| 251 // in the unit that could pass pointers to functions from the unit out to other
translation units! | 249 // in the unit that could pass pointers to functions from the unit out to other
translation units! |
| 252 // We force some of the effects that would otherwise be discarded to link here. | 250 // We force some of the effects that would otherwise be discarded to link here. |
| 253 | 251 |
| 254 #include "SkAlphaThresholdFilter.h" | 252 #include "SkAlphaThresholdFilter.h" |
| 255 #include "SkLightingImageFilter.h" | 253 #include "SkLightingImageFilter.h" |
| 256 #include "SkMagnifierImageFilter.h" | 254 #include "SkMagnifierImageFilter.h" |
| 257 #include "SkColorMatrixFilter.h" | 255 #include "SkColorMatrixFilter.h" |
| 258 | 256 |
| 259 void forceLinking(); | 257 void forceLinking(); |
| 260 | 258 |
| 261 void forceLinking() { | 259 void forceLinking() { |
| 262 SkLightingImageFilter::CreateDistantLitDiffuse(SkPoint3(0,0,0), 0, 0, 0); | 260 SkLightingImageFilter::CreateDistantLitDiffuse(SkPoint3(0,0,0), 0, 0, 0); |
| 263 SkAlphaThresholdFilter::Create(SkRegion(), .5f, .5f); | 261 SkAlphaThresholdFilter::Create(SkRegion(), .5f, .5f); |
| 264 SkMagnifierImageFilter mag(SkRect::MakeWH(SK_Scalar1, SK_Scalar1), SK_Scalar
1); | 262 SkMagnifierImageFilter mag(SkRect::MakeWH(SK_Scalar1, SK_Scalar1), SK_Scalar
1); |
| 265 GrConfigConversionEffect::Create(NULL, | 263 GrConfigConversionEffect::Create(NULL, |
| 266 false, | 264 false, |
| 267 GrConfigConversionEffect::kNone_PMConversio
n, | 265 GrConfigConversionEffect::kNone_PMConversio
n, |
| 268 SkMatrix::I()); | 266 SkMatrix::I()); |
| 269 SkScalar matrix[20]; | 267 SkScalar matrix[20]; |
| 270 SkColorMatrixFilter cmf(matrix); | 268 SkColorMatrixFilter cmf(matrix); |
| 271 } | 269 } |
| 272 | 270 |
| 273 #endif | 271 #endif |
| OLD | NEW |