| Index: tests/FloatingPointTextureTest.cpp
|
| diff --git a/tests/FloatingPointTextureTest.cpp b/tests/FloatingPointTextureTest.cpp
|
| index 15f2e2eafa61601c05a79d6866dbe560d5718a7e..3bc87f61028e9c01aaa671aadef887a58557c18a 100644
|
| --- a/tests/FloatingPointTextureTest.cpp
|
| +++ b/tests/FloatingPointTextureTest.cpp
|
| @@ -22,7 +22,7 @@
|
| #include "SkHalf.h"
|
|
|
| static const int DEV_W = 100, DEV_H = 100;
|
| -static const int FP_CONTROL_ARRAY_SIZE = DEV_W * DEV_H * 4;
|
| +static const int FP_CONTROL_ARRAY_SIZE = DEV_W * DEV_H * 4/*RGBA*/;
|
| static const float kMaxIntegerRepresentableInSPFloatingPoint = 16777216; // 2 ^ 24
|
|
|
| static const SkIRect DEV_RECT = SkIRect::MakeWH(DEV_W, DEV_H);
|
| @@ -33,55 +33,46 @@ DEF_GPUTEST(FloatingPointTextureTest, reporter, factory) {
|
| readBuffer.setCount(FP_CONTROL_ARRAY_SIZE);
|
|
|
| for (int i = 0; i < FP_CONTROL_ARRAY_SIZE; i += 4) {
|
| - controlPixelData[i] = FLT_MIN;
|
| + controlPixelData[i + 0] = FLT_MIN;
|
| controlPixelData[i + 1] = FLT_MAX;
|
| controlPixelData[i + 2] = FLT_EPSILON;
|
| controlPixelData[i + 3] = kMaxIntegerRepresentableInSPFloatingPoint;
|
| }
|
|
|
| for (int origin = 0; origin < 2; ++origin) {
|
| - int glCtxTypeCnt = 1;
|
| - glCtxTypeCnt = GrContextFactory::kGLContextTypeCnt;
|
| - for (int glCtxType = 0; glCtxType < glCtxTypeCnt; ++glCtxType) {
|
| + for (int glCtxType = 0; glCtxType < GrContextFactory::kGLContextTypeCnt; ++glCtxType) {
|
| GrSurfaceDesc desc;
|
| - desc.fFlags = kRenderTarget_GrSurfaceFlag;
|
| - desc.fWidth = DEV_W;
|
| + desc.fFlags = kRenderTarget_GrSurfaceFlag;
|
| + desc.fWidth = DEV_W;
|
| desc.fHeight = DEV_H;
|
| desc.fConfig = kRGBA_float_GrPixelConfig;
|
| desc.fOrigin = 0 == origin ?
|
| kTopLeft_GrSurfaceOrigin : kBottomLeft_GrSurfaceOrigin;
|
|
|
| - GrContext* context = NULL;
|
| GrContextFactory::GLContextType type =
|
| - static_cast<GrContextFactory::GLContextType>(glCtxType);
|
| + static_cast<GrContextFactory::GLContextType>(glCtxType);
|
| if (!GrContextFactory::IsRenderingGLContext(type)) {
|
| continue;
|
| }
|
| - context = factory->get(type);
|
| + GrContext* context = factory->get(type);
|
| if (NULL == context){
|
| continue;
|
| }
|
|
|
| - SkAutoTUnref<GrTexture> fpTexture(context->createUncachedTexture(desc,
|
| - NULL,
|
| - 0));
|
| -
|
| + SkAutoTUnref<GrTexture> fpTexture(
|
| + context->createUncachedTexture(desc, controlPixelData.begin(), 0));
|
| // Floating point textures are NOT supported everywhere
|
| if (NULL == fpTexture) {
|
| continue;
|
| }
|
| -
|
| - // write square
|
| - fpTexture->writePixels(0, 0, DEV_W, DEV_H, desc.fConfig, controlPixelData.begin(), 0);
|
| fpTexture->readPixels(0, 0, DEV_W, DEV_H, desc.fConfig, readBuffer.begin(), 0);
|
| - for (int j = 0; j < FP_CONTROL_ARRAY_SIZE; ++j) {
|
| - REPORTER_ASSERT(reporter, readBuffer[j] == controlPixelData[j]);
|
| - }
|
| + REPORTER_ASSERT(reporter,
|
| + 0 == memcmp(readBuffer.begin(), controlPixelData.begin(), readBuffer.bytes()));
|
| }
|
| }
|
| }
|
|
|
| -static const int HALF_CONTROL_ARRAY_SIZE = DEV_W * DEV_H;
|
| +static const int HALF_CONTROL_ARRAY_SIZE = DEV_W * DEV_H * 1 /*alpha-only*/;
|
|
|
| DEF_GPUTEST(HalfFloatTextureTest, reporter, factory) {
|
| SkTDArray<SkHalf> controlPixelData, readBuffer;
|
| @@ -89,50 +80,41 @@ DEF_GPUTEST(HalfFloatTextureTest, reporter, factory) {
|
| readBuffer.setCount(HALF_CONTROL_ARRAY_SIZE);
|
|
|
| for (int i = 0; i < HALF_CONTROL_ARRAY_SIZE; i += 4) {
|
| - controlPixelData[i] = SK_HalfMin;
|
| + controlPixelData[i + 0] = SK_HalfMin;
|
| controlPixelData[i + 1] = SK_HalfMax;
|
| controlPixelData[i + 2] = SK_HalfEpsilon;
|
| controlPixelData[i + 3] = 0x6800; // 2^11
|
| }
|
|
|
| for (int origin = 0; origin < 2; ++origin) {
|
| - int glCtxTypeCnt = 1;
|
| - glCtxTypeCnt = GrContextFactory::kGLContextTypeCnt;
|
| - for (int glCtxType = 0; glCtxType < glCtxTypeCnt; ++glCtxType) {
|
| + for (int glCtxType = 0; glCtxType < GrContextFactory::kGLContextTypeCnt; ++glCtxType) {
|
| GrSurfaceDesc desc;
|
| - desc.fFlags = kRenderTarget_GrSurfaceFlag;
|
| - desc.fWidth = DEV_W;
|
| + desc.fFlags = kRenderTarget_GrSurfaceFlag;
|
| + desc.fWidth = DEV_W;
|
| desc.fHeight = DEV_H;
|
| desc.fConfig = kAlpha_half_GrPixelConfig;
|
| desc.fOrigin = 0 == origin ?
|
| - kTopLeft_GrSurfaceOrigin : kBottomLeft_GrSurfaceOrigin;
|
| + kTopLeft_GrSurfaceOrigin : kBottomLeft_GrSurfaceOrigin;
|
|
|
| - GrContext* context = NULL;
|
| GrContextFactory::GLContextType type =
|
| - static_cast<GrContextFactory::GLContextType>(glCtxType);
|
| + static_cast<GrContextFactory::GLContextType>(glCtxType);
|
| if (!GrContextFactory::IsRenderingGLContext(type)) {
|
| continue;
|
| }
|
| - context = factory->get(type);
|
| + GrContext* context = factory->get(type);
|
| if (NULL == context){
|
| continue;
|
| }
|
|
|
| - SkAutoTUnref<GrTexture> fpTexture(context->createUncachedTexture(desc,
|
| - NULL,
|
| - 0));
|
| -
|
| + SkAutoTUnref<GrTexture> fpTexture(
|
| + context->createUncachedTexture(desc, controlPixelData.begin(), 0));
|
| // 16-bit floating point textures are NOT supported everywhere
|
| if (NULL == fpTexture) {
|
| continue;
|
| }
|
| -
|
| - // write square
|
| - fpTexture->writePixels(0, 0, DEV_W, DEV_H, desc.fConfig, controlPixelData.begin(), 0);
|
| fpTexture->readPixels(0, 0, DEV_W, DEV_H, desc.fConfig, readBuffer.begin(), 0);
|
| - for (int j = 0; j < HALF_CONTROL_ARRAY_SIZE; ++j) {
|
| - REPORTER_ASSERT(reporter, readBuffer[j] == controlPixelData[j]);
|
| - }
|
| + REPORTER_ASSERT(reporter,
|
| + 0 == memcmp(readBuffer.begin(), controlPixelData.begin(), readBuffer.bytes()));
|
| }
|
| }
|
| }
|
|
|