diff options
-rw-r--r-- | tests/ReadWritePixelsGpuTest.cpp | 120 |
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, |