| Index: tests/FloatingPointTextureTest.cpp
|
| diff --git a/tests/FloatingPointTextureTest.cpp b/tests/FloatingPointTextureTest.cpp
|
| index c5103c813fba95a28a153a42fc06d341382c6abc..04f73c7cd9558cba7befb874600564acbc43d778 100644
|
| --- a/tests/FloatingPointTextureTest.cpp
|
| +++ b/tests/FloatingPointTextureTest.cpp
|
| @@ -14,19 +14,17 @@
|
|
|
| #include <float.h>
|
| #include "Test.h"
|
| +
|
| #if SK_SUPPORT_GPU
|
| #include "GrContext.h"
|
| #include "GrTexture.h"
|
| -#include "GrContextFactory.h"
|
| -
|
| -#include "SkGpuDevice.h"
|
| #include "SkHalf.h"
|
|
|
| static const int DEV_W = 100, DEV_H = 100;
|
| static const SkIRect DEV_RECT = SkIRect::MakeWH(DEV_W, DEV_H);
|
|
|
| template <typename T>
|
| -void runFPTest(skiatest::Reporter* reporter, GrContextFactory* factory,
|
| +void runFPTest(skiatest::Reporter* reporter, GrContext* context,
|
| T min, T max, T epsilon, T maxInt, int arraySize, GrPixelConfig config) {
|
| SkTDArray<T> controlPixelData, readBuffer;
|
| controlPixelData.setCount(arraySize);
|
| @@ -40,43 +38,30 @@ void runFPTest(skiatest::Reporter* reporter, GrContextFactory* factory,
|
| }
|
|
|
| for (int origin = 0; origin < 2; ++origin) {
|
| - for (int glCtxType = 0; glCtxType < GrContextFactory::kGLContextTypeCnt; ++glCtxType) {
|
| - GrSurfaceDesc desc;
|
| - desc.fFlags = kRenderTarget_GrSurfaceFlag;
|
| - desc.fWidth = DEV_W;
|
| - desc.fHeight = DEV_H;
|
| - desc.fConfig = config;
|
| - desc.fOrigin = 0 == origin ?
|
| + GrSurfaceDesc desc;
|
| + desc.fFlags = kRenderTarget_GrSurfaceFlag;
|
| + desc.fWidth = DEV_W;
|
| + desc.fHeight = DEV_H;
|
| + desc.fConfig = config;
|
| + desc.fOrigin = 0 == origin ?
|
| kTopLeft_GrSurfaceOrigin : kBottomLeft_GrSurfaceOrigin;
|
| -
|
| - GrContextFactory::GLContextType type =
|
| - static_cast<GrContextFactory::GLContextType>(glCtxType);
|
| - if (!GrContextFactory::IsRenderingGLContext(type)) {
|
| - continue;
|
| - }
|
| - GrContext* context = factory->get(type);
|
| - if (nullptr == context) {
|
| - continue;
|
| - }
|
| -
|
| - SkAutoTUnref<GrTexture> fpTexture(context->textureProvider()->createTexture(
|
| - desc, false, controlPixelData.begin(), 0));
|
| - // Floating point textures are NOT supported everywhere
|
| - if (nullptr == fpTexture) {
|
| - continue;
|
| - }
|
| - fpTexture->readPixels(0, 0, DEV_W, DEV_H, desc.fConfig, readBuffer.begin(), 0);
|
| - REPORTER_ASSERT(reporter,
|
| - 0 == memcmp(readBuffer.begin(), controlPixelData.begin(), readBuffer.bytes()));
|
| + SkAutoTUnref<GrTexture> fpTexture(context->textureProvider()->createTexture(
|
| + desc, false, controlPixelData.begin(), 0));
|
| + // Floating point textures are NOT supported everywhere
|
| + if (nullptr == fpTexture) {
|
| + continue;
|
| }
|
| + fpTexture->readPixels(0, 0, DEV_W, DEV_H, desc.fConfig, readBuffer.begin(), 0);
|
| + REPORTER_ASSERT(reporter,
|
| + 0 == memcmp(readBuffer.begin(), controlPixelData.begin(), readBuffer.bytes()));
|
| }
|
| }
|
|
|
| static const int FP_CONTROL_ARRAY_SIZE = DEV_W * DEV_H * 4/*RGBA*/;
|
| static const float kMaxIntegerRepresentableInSPFloatingPoint = 16777216; // 2 ^ 24
|
|
|
| -DEF_GPUTEST(FloatingPointTextureTest, reporter, factory) {
|
| - runFPTest<float>(reporter, factory, FLT_MIN, FLT_MAX, FLT_EPSILON,
|
| +DEF_GPUTEST_FOR_RENDERING_CONTEXTS(FloatingPointTextureTest, reporter, context) {
|
| + runFPTest<float>(reporter, context, FLT_MIN, FLT_MAX, FLT_EPSILON,
|
| kMaxIntegerRepresentableInSPFloatingPoint,
|
| FP_CONTROL_ARRAY_SIZE, kRGBA_float_GrPixelConfig);
|
| }
|
| @@ -84,16 +69,16 @@ DEF_GPUTEST(FloatingPointTextureTest, reporter, factory) {
|
| static const int HALF_ALPHA_CONTROL_ARRAY_SIZE = DEV_W * DEV_H * 1 /*alpha-only*/;
|
| static const SkHalf kMaxIntegerRepresentableInHalfFloatingPoint = 0x6800; // 2 ^ 11
|
|
|
| -DEF_GPUTEST(HalfFloatAlphaTextureTest, reporter, factory) {
|
| - runFPTest<SkHalf>(reporter, factory, SK_HalfMin, SK_HalfMax, SK_HalfEpsilon,
|
| +DEF_GPUTEST_FOR_RENDERING_CONTEXTS(HalfFloatAlphaTextureTest, reporter, context) {
|
| + runFPTest<SkHalf>(reporter, context, SK_HalfMin, SK_HalfMax, SK_HalfEpsilon,
|
| kMaxIntegerRepresentableInHalfFloatingPoint,
|
| HALF_ALPHA_CONTROL_ARRAY_SIZE, kAlpha_half_GrPixelConfig);
|
| }
|
|
|
| static const int HALF_RGBA_CONTROL_ARRAY_SIZE = DEV_W * DEV_H * 4 /*RGBA*/;
|
|
|
| -DEF_GPUTEST(HalfFloatRGBATextureTest, reporter, factory) {
|
| - runFPTest<SkHalf>(reporter, factory, SK_HalfMin, SK_HalfMax, SK_HalfEpsilon,
|
| +DEF_GPUTEST_FOR_RENDERING_CONTEXTS(HalfFloatRGBATextureTest, reporter, context) {
|
| + runFPTest<SkHalf>(reporter, context, SK_HalfMin, SK_HalfMax, SK_HalfEpsilon,
|
| kMaxIntegerRepresentableInHalfFloatingPoint,
|
| HALF_RGBA_CONTROL_ARRAY_SIZE, kRGBA_half_GrPixelConfig);
|
| }
|
|
|