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())); |
} |
} |
} |