Add support for RG float textures
Adds kRG_float_GrPixelConfig.
Also removes default labels from switches on GrPixelConfig, in order
to help guide future enumerals to handle them properly.
BUG=skia:
Change-Id: Ie80b9413b4002b666df3ef1a7a8ea4c9c29ce43b
Reviewed-on: https://skia-review.googlesource.com/8226
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
diff --git a/tests/FloatingPointTextureTest.cpp b/tests/FloatingPointTextureTest.cpp
index 95917b4..84f2a59 100644
--- a/tests/FloatingPointTextureTest.cpp
+++ b/tests/FloatingPointTextureTest.cpp
@@ -26,6 +26,12 @@
template <typename T>
void runFPTest(skiatest::Reporter* reporter, GrContext* context,
T min, T max, T epsilon, T maxInt, int arraySize, GrPixelConfig config) {
+ if (0 != arraySize % 4) {
+ REPORT_FAILURE(reporter, "(0 != arraySize % 4)",
+ SkString("arraySize must be divisible by 4."));
+ return;
+ }
+
SkTDArray<T> controlPixelData, readBuffer;
controlPixelData.setCount(arraySize);
readBuffer.setCount(arraySize);
@@ -50,19 +56,28 @@
if (nullptr == fpTexture) {
continue;
}
- fpTexture->readPixels(0, 0, DEV_W, DEV_H, desc.fConfig, readBuffer.begin(), 0);
+ REPORTER_ASSERT(reporter,
+ 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 int RGBA32F_CONTROL_ARRAY_SIZE = DEV_W * DEV_H * 4;
static const float kMaxIntegerRepresentableInSPFloatingPoint = 16777216; // 2 ^ 24
DEF_GPUTEST_FOR_RENDERING_CONTEXTS(FloatingPointTextureTest, reporter, ctxInfo) {
runFPTest<float>(reporter, ctxInfo.grContext(), FLT_MIN, FLT_MAX, FLT_EPSILON,
kMaxIntegerRepresentableInSPFloatingPoint,
- FP_CONTROL_ARRAY_SIZE, kRGBA_float_GrPixelConfig);
+ RGBA32F_CONTROL_ARRAY_SIZE, kRGBA_float_GrPixelConfig);
+}
+
+static const int RG32F_CONTROL_ARRAY_SIZE = DEV_W * DEV_H * 2;
+
+DEF_GPUTEST_FOR_RENDERING_CONTEXTS(FloatingPointTextureTest_RG, reporter, ctxInfo) {
+ runFPTest<float>(reporter, ctxInfo.grContext(), FLT_MIN, FLT_MAX, FLT_EPSILON,
+ kMaxIntegerRepresentableInSPFloatingPoint,
+ RG32F_CONTROL_ARRAY_SIZE, kRG_float_GrPixelConfig);
}
static const int HALF_ALPHA_CONTROL_ARRAY_SIZE = DEV_W * DEV_H * 1 /*alpha-only*/;