diff options
author | 2016-11-07 09:53:44 -0500 | |
---|---|---|
committer | 2016-11-07 15:38:03 +0000 | |
commit | 739c5bf111baf977fe418a24fa00ce260989ee9a (patch) | |
tree | b8a2bbe94bc66fef1912497a72f24bf993a69bf4 /tests | |
parent | 4394cc4b00a4b3af9037d3c6a86cfb1f016050a7 (diff) |
Revert "Revert "Limit GL_TEXTURE_RECTANGLE filtering to bilinear.""
This reverts commit ce4d04ae8eace6ba53ff8b8c8d8f4a2e6af4e59f.
BUG=skia:5932
Original CL description:
>
>Limit GL_TEXTURE_RECTANGLE filtering to bilinear.
>
>Adds a clamp for GrTexture filtering that can be set by a subclass at construction. The clamping is performed by GrTextureParams. GrGLTexture limits filtering to bilinear for rectangle and external textures.
>
>Also moves samplerType() to GrTexturePriv from GrTexture.
>
>BUG=skia:5932
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4455
Change-Id: I4a9f4abac44979cb900f5b04fe741524eade66b1
Reviewed-on: https://skia-review.googlesource.com/4455
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/RectangleTextureTest.cpp | 38 |
1 files changed, 31 insertions, 7 deletions
diff --git a/tests/RectangleTextureTest.cpp b/tests/RectangleTextureTest.cpp index 10c392ddb0..21540d99c0 100644 --- a/tests/RectangleTextureTest.cpp +++ b/tests/RectangleTextureTest.cpp @@ -15,20 +15,19 @@ #include "gl/GLTestContext.h" static void test_read_pixels(skiatest::Reporter* reporter, GrContext* context, - GrTexture* rectangleTexture, uint32_t expectedPixelValues[]) { - int pixelCnt = rectangleTexture->width() * rectangleTexture->height(); + GrTexture* texture, uint32_t expectedPixelValues[]) { + int pixelCnt = texture->width() * texture->height(); SkAutoTMalloc<uint32_t> pixels(pixelCnt); memset(pixels.get(), 0, sizeof(uint32_t)*pixelCnt); - bool read = rectangleTexture->readPixels(0, 0, rectangleTexture->width(), - rectangleTexture->height(), kRGBA_8888_GrPixelConfig, - pixels.get()); + bool read = texture->readPixels(0, 0, texture->width(), texture->height(), + kRGBA_8888_GrPixelConfig, pixels.get()); if (!read) { ERRORF(reporter, "Error reading rectangle texture."); } for (int i = 0; i < pixelCnt; ++i) { if (pixels.get()[i] != expectedPixelValues[i]) { - ERRORF(reporter, "Error, rectangle texture pixel value %d should be 0x%08x," - " got 0x%08x.", i, expectedPixelValues[i], pixels.get()[i]); + ERRORF(reporter, "Error, pixel value %d should be 0x%08x, got 0x%08x.", i, + expectedPixelValues[i], pixels.get()[i]); break; } } @@ -90,6 +89,29 @@ static void test_copy_surface_dst(skiatest::Reporter* reporter, GrContext* conte } } +// skbug.com/5932 +static void test_basic_draw(skiatest::Reporter* reporter, GrContext* context, + GrTexture* rectangleTexture, uint32_t expectedPixelValues[]) { + sk_sp<GrRenderTargetContext> rtContext( + context->makeRenderTargetContext(SkBackingFit::kExact, rectangleTexture->width(), + rectangleTexture->height(), rectangleTexture->config(), + nullptr)); + SkMatrix m; + m.setIDiv(rectangleTexture->width(), rectangleTexture->height()); + for (auto filter : {GrTextureParams::kNone_FilterMode, + GrTextureParams::kBilerp_FilterMode, + GrTextureParams::kMipMap_FilterMode}) { + rtContext->clear(nullptr, 0xDDCCBBAA, true); + sk_sp<GrFragmentProcessor> fp(GrSimpleTextureEffect::Make(rectangleTexture, + nullptr, m, filter)); + GrPaint paint; + paint.setPorterDuffXPFactory(SkBlendMode::kSrc); + paint.addColorFragmentProcessor(std::move(fp)); + rtContext->drawPaint(GrNoClip(), paint, SkMatrix::I()); + test_read_pixels(reporter, context, rtContext->asTexture().get(), expectedPixelValues); + } +} + static void test_clear(skiatest::Reporter* reporter, GrContext* context, GrTexture* rectangleTexture) { if (rectangleTexture->asRenderTarget()) { @@ -200,6 +222,8 @@ DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(RectangleTexture, reporter, ctxInfo) { test_read_pixels(reporter, context, rectangleTexture.get(), refPixels); + test_basic_draw(reporter, context, rectangleTexture.get(), refPixels); + test_copy_surface_src(reporter, context, rectangleTexture.get(), refPixels); test_copy_surface_dst(reporter, context, rectangleTexture.get()); |