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 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
499 ++t; | 499 ++t; |
500 } | 500 } |
501 return true; | 501 return true; |
502 } | 502 } |
503 | 503 |
504 DEF_GPUTEST(GLPrograms, reporter, factory) { | 504 DEF_GPUTEST(GLPrograms, reporter, factory) { |
505 for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) { | 505 for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) { |
506 GrContext* context = factory->get(static_cast<GrContextFactory::GLContex
tType>(type)); | 506 GrContext* context = factory->get(static_cast<GrContextFactory::GLContex
tType>(type)); |
507 if (context) { | 507 if (context) { |
508 GrGpuGL* gpu = static_cast<GrGpuGL*>(context->getGpu()); | 508 GrGpuGL* gpu = static_cast<GrGpuGL*>(context->getGpu()); |
509 int maxStages = 6; | 509 |
| 510 /* |
| 511 * For the time being, we only support the test with desktop GL or f
or android on |
| 512 * ARM platforms |
| 513 * TODO When we run ES 3.00 GLSL in more places, test again |
| 514 */ |
| 515 int maxStages; |
| 516 if (kGL_GrGLStandard == gpu->glStandard() || |
| 517 kARM_GrGLVendor == gpu->ctxInfo().vendor()) { |
| 518 maxStages = 6; |
| 519 } else if (kTegra3_GrGLRenderer == gpu->ctxInfo().renderer() || |
| 520 kOther_GrGLRenderer == gpu->ctxInfo().renderer()) { |
| 521 maxStages = 1; |
| 522 } else { |
| 523 return; |
| 524 } |
510 #if SK_ANGLE | 525 #if SK_ANGLE |
511 // Some long shaders run out of temporary registers in the D3D compi
ler on ANGLE. | 526 // Some long shaders run out of temporary registers in the D3D compi
ler on ANGLE. |
512 if (type == GrContextFactory::kANGLE_GLContextType) { | 527 if (type == GrContextFactory::kANGLE_GLContextType) { |
513 maxStages = 3; | 528 maxStages = 3; |
514 } | 529 } |
515 #endif | 530 #endif |
516 REPORTER_ASSERT(reporter, gpu->programUnitTest(maxStages)); | 531 REPORTER_ASSERT(reporter, gpu->programUnitTest(maxStages)); |
517 } | 532 } |
518 } | 533 } |
519 } | 534 } |
520 | 535 |
521 // This is evil evil evil. The linker may throw away whole translation units as
dead code if it | |
522 // thinks none of the functions are called. It will do this even if there are st
atic initializers | |
523 // in the unit that could pass pointers to functions from the unit out to other
translation units! | |
524 // We force some of the effects that would otherwise be discarded to link here. | |
525 | |
526 #include "SkAlphaThresholdFilter.h" | |
527 #include "SkColorMatrixFilter.h" | |
528 #include "SkLightingImageFilter.h" | |
529 #include "SkMagnifierImageFilter.h" | |
530 | |
531 void forceLinking(); | |
532 | |
533 void forceLinking() { | |
534 SkLightingImageFilter::CreateDistantLitDiffuse(SkPoint3(0,0,0), 0, 0, 0); | |
535 SkAlphaThresholdFilter::Create(SkRegion(), .5f, .5f); | |
536 SkAutoTUnref<SkImageFilter> mag(SkMagnifierImageFilter::Create( | |
537 SkRect::MakeWH(SK_Scalar1, SK_Scalar1), SK_Scalar1)); | |
538 GrConfigConversionEffect::Create(NULL, | |
539 false, | |
540 GrConfigConversionEffect::kNone_PMConversio
n, | |
541 SkMatrix::I()); | |
542 SkScalar matrix[20]; | |
543 SkAutoTUnref<SkColorMatrixFilter> cmf(SkColorMatrixFilter::Create(matrix)); | |
544 } | |
545 | |
546 #endif | 536 #endif |
OLD | NEW |