aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/ReadWritePixelsGpuTest.cpp120
1 files changed, 89 insertions, 31 deletions
diff --git a/tests/ReadWritePixelsGpuTest.cpp b/tests/ReadWritePixelsGpuTest.cpp
index 0fcff04dea..4ee5034593 100644
--- a/tests/ReadWritePixelsGpuTest.cpp
+++ b/tests/ReadWritePixelsGpuTest.cpp
@@ -693,10 +693,11 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceAsyncReadPixels,
}
}
-DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageAsyncReadPixels,
- reporter,
- ctxInfo,
- CtsEnforcement::kApiLevel_T) {
+// Manually parameterized by GrRenderable and GrSurfaceOrigin to reduce per-test run time.
+static void image_async_read_pixels(GrRenderable renderable,
+ GrSurfaceOrigin origin,
+ skiatest::Reporter* reporter,
+ const sk_gpu_test::ContextInfo& ctxInfo) {
using Image = sk_sp<SkImage>;
auto context = ctxInfo.directContext();
auto reader = std::function<GpuReadSrcFn<Image>>([context](const Image& image,
@@ -734,16 +735,44 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageAsyncReadPixels,
rules.fAllowUnpremulSrc = true;
rules.fUncontainedRectSucceeds = false;
- for (auto origin : {kTopLeft_GrSurfaceOrigin, kBottomLeft_GrSurfaceOrigin}) {
- for (auto renderable : {GrRenderable::kNo, GrRenderable::kYes}) {
- auto factory = std::function<GpuSrcFactory<Image>>([&](const SkPixmap& src) {
- return sk_gpu_test::MakeBackendTextureImage(ctxInfo.directContext(), src,
- renderable, origin);
- });
- auto label = SkStringPrintf("Renderable: %d, Origin: %d", (int)renderable, origin);
- gpu_read_pixels_test_driver(reporter, rules, factory, reader, label);
- }
- }
+ auto factory = std::function<GpuSrcFactory<Image>>([&](const SkPixmap& src) {
+ return sk_gpu_test::MakeBackendTextureImage(ctxInfo.directContext(), src,
+ renderable, origin);
+ });
+ auto label = SkStringPrintf("Renderable: %d, Origin: %d", (int)renderable, origin);
+ gpu_read_pixels_test_driver(reporter, rules, factory, reader, label);
+}
+
+DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageAsyncReadPixels_NonRenderable_TopLeft,
+ reporter,
+ ctxInfo,
+ CtsEnforcement::kApiLevel_T) {
+ image_async_read_pixels(GrRenderable::kNo, GrSurfaceOrigin::kTopLeft_GrSurfaceOrigin,
+ reporter, ctxInfo);
+}
+
+DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageAsyncReadPixels_NonRenderable_BottomLeft,
+ reporter,
+ ctxInfo,
+ CtsEnforcement::kApiLevel_T) {
+ image_async_read_pixels(GrRenderable::kNo, GrSurfaceOrigin::kBottomLeft_GrSurfaceOrigin,
+ reporter, ctxInfo);
+}
+
+DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageAsyncReadPixels_Renderable_TopLeft,
+ reporter,
+ ctxInfo,
+ CtsEnforcement::kApiLevel_T) {
+ image_async_read_pixels(GrRenderable::kYes, GrSurfaceOrigin::kTopLeft_GrSurfaceOrigin,
+ reporter, ctxInfo);
+}
+
+DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageAsyncReadPixels_Renderable_BottomLeft,
+ reporter,
+ ctxInfo,
+ CtsEnforcement::kApiLevel_T) {
+ image_async_read_pixels(GrRenderable::kYes, GrSurfaceOrigin::kBottomLeft_GrSurfaceOrigin,
+ reporter, ctxInfo);
}
DEF_GANESH_TEST(AsyncReadPixelsContextShutdown, reporter, options, CtsEnforcement::kApiLevel_T) {
@@ -1117,10 +1146,11 @@ static void gpu_write_pixels_test_driver(skiatest::Reporter* reporter,
}
}
-DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceContextWritePixels,
- reporter,
- ctxInfo,
- CtsEnforcement::kApiLevel_T) {
+// Manually parameterized by GrRenderable and GrSurfaceOrigin to reduce per-test run time.
+static void surface_context_write_pixels(GrRenderable renderable,
+ GrSurfaceOrigin origin,
+ skiatest::Reporter* reporter,
+ const sk_gpu_test::ContextInfo& ctxInfo) {
using Surface = std::unique_ptr<skgpu::v1::SurfaceContext>;
GrDirectContext* direct = ctxInfo.directContext();
auto writer = std::function<GpuWriteDstFn<Surface>>(
@@ -1146,20 +1176,48 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceContextWritePixels,
return result;
});
- for (auto renderable : {GrRenderable::kNo, GrRenderable::kYes}) {
- for (GrSurfaceOrigin origin : {kTopLeft_GrSurfaceOrigin, kBottomLeft_GrSurfaceOrigin}) {
- auto factory = std::function<GpuDstFactory<Surface>>(
- [direct, origin, renderable](const SkImageInfo& info) {
- return CreateSurfaceContext(direct,
- info,
- SkBackingFit::kExact,
- origin,
- renderable);
- });
+ auto factory = std::function<GpuDstFactory<Surface>>(
+ [direct, origin, renderable](const SkImageInfo& info) {
+ return CreateSurfaceContext(direct,
+ info,
+ SkBackingFit::kExact,
+ origin,
+ renderable);
+ });
- gpu_write_pixels_test_driver(reporter, factory, writer, reader);
- }
- }
+ gpu_write_pixels_test_driver(reporter, factory, writer, reader);
+}
+
+DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceContextWritePixels_NonRenderable_TopLeft,
+ reporter,
+ ctxInfo,
+ CtsEnforcement::kApiLevel_T) {
+ surface_context_write_pixels(GrRenderable::kNo, GrSurfaceOrigin::kTopLeft_GrSurfaceOrigin,
+ reporter, ctxInfo);
+}
+
+DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceContextWritePixels_NonRenderable_BottomLeft,
+ reporter,
+ ctxInfo,
+ CtsEnforcement::kApiLevel_T) {
+ surface_context_write_pixels(GrRenderable::kNo, GrSurfaceOrigin::kBottomLeft_GrSurfaceOrigin,
+ reporter, ctxInfo);
+}
+
+DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceContextWritePixels_Renderable_TopLeft,
+ reporter,
+ ctxInfo,
+ CtsEnforcement::kApiLevel_T) {
+ surface_context_write_pixels(GrRenderable::kYes, GrSurfaceOrigin::kTopLeft_GrSurfaceOrigin,
+ reporter, ctxInfo);
+}
+
+DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceContextWritePixels_Renderable_BottomLeft,
+ reporter,
+ ctxInfo,
+ CtsEnforcement::kApiLevel_T) {
+ surface_context_write_pixels(GrRenderable::kYes, GrSurfaceOrigin::kBottomLeft_GrSurfaceOrigin,
+ reporter, ctxInfo);
}
DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceContextWritePixelsMipped,