diff options
author | robertphillips <robertphillips@google.com> | 2016-07-26 11:38:17 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-07-26 11:38:17 -0700 |
commit | 7e922765545f42ce691e4f3d5fbbd4e44ba47ff1 (patch) | |
tree | 40f15d00e25acaf015f46e45d11d1858eb3b8cf6 /tests/ReadWriteAlphaTest.cpp | |
parent | 3a0dbde1cfa84b08c7dd5b597142e9f6179f2d07 (diff) |
Reduce usage of MakeRenderTargetDirect
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2187573002
Review-Url: https://codereview.chromium.org/2187573002
Diffstat (limited to 'tests/ReadWriteAlphaTest.cpp')
-rw-r--r-- | tests/ReadWriteAlphaTest.cpp | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/tests/ReadWriteAlphaTest.cpp b/tests/ReadWriteAlphaTest.cpp index 16f43ea310..e5240666aa 100644 --- a/tests/ReadWriteAlphaTest.cpp +++ b/tests/ReadWriteAlphaTest.cpp @@ -41,12 +41,10 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ReadWriteAlpha, reporter, ctxInfo) { bool match; static const size_t kRowBytes[] = {0, X_SIZE, X_SIZE + 1, 2 * X_SIZE - 1}; - for (int rt = 0; rt < 2; ++rt) { + { GrSurfaceDesc desc; - // let Skia know we will be using this texture as a render target - desc.fFlags = rt ? kRenderTarget_GrSurfaceFlag : kNone_GrSurfaceFlags; - // it is a single channel texture - desc.fConfig = kAlpha_8_GrPixelConfig; + desc.fFlags = kNone_GrSurfaceFlags; + desc.fConfig = kAlpha_8_GrPixelConfig; // it is a single channel texture desc.fWidth = X_SIZE; desc.fHeight = Y_SIZE; @@ -54,14 +52,16 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ReadWriteAlpha, reporter, ctxInfo) { memset(alphaData, 0, X_SIZE * Y_SIZE); SkAutoTUnref<GrTexture> texture( ctxInfo.grContext()->textureProvider()->createTexture(desc, SkBudgeted::kNo, alphaData, - 0)); + 0)); if (!texture) { - if (!rt) { - ERRORF(reporter, "Could not create alpha texture."); - } - continue; + ERRORF(reporter, "Could not create alpha texture."); + return; } + const SkImageInfo ii = SkImageInfo::MakeA8(X_SIZE, Y_SIZE); + sk_sp<SkSurface> surf(SkSurface::MakeRenderTarget(ctxInfo.grContext(), + SkBudgeted::kNo, ii)); + // create a distinctive texture for (int y = 0; y < Y_SIZE; ++y) { for (int x = 0; x < X_SIZE; ++x) { @@ -87,14 +87,12 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ReadWriteAlpha, reporter, ctxInfo) { // make sure the original & read back versions match SkString msg; - msg.printf("rt:%d, rb:%d A8", rt, SkToU32(rowBytes)); + msg.printf("rb:%d A8", SkToU32(rowBytes)); validate_alpha_data(reporter, X_SIZE, Y_SIZE, readback.get(), nonZeroRowBytes, alphaData, msg); - // Now try writing on the single channel texture (if we could create as a RT). - if (texture->asRenderTarget()) { - sk_sp<SkSurface> surf(SkSurface::MakeRenderTargetDirect(texture->asRenderTarget(), - nullptr)); + // Now try writing to a single channel surface (if we could create one). + if (surf) { SkCanvas* canvas = surf->getCanvas(); SkPaint paint; @@ -106,8 +104,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ReadWriteAlpha, reporter, ctxInfo) { canvas->drawRect(rect, paint); memset(readback.get(), kClearValue, nonZeroRowBytes * Y_SIZE); - result = texture->readPixels(0, 0, desc.fWidth, desc.fHeight, - desc.fConfig, readback.get(), rowBytes); + result = surf->readPixels(ii, readback.get(), nonZeroRowBytes, 0, 0); REPORTER_ASSERT_MESSAGE(reporter, result, "A8 readPixels after clear failed"); match = true; |