diff options
author | 2016-11-23 01:02:43 +0000 | |
---|---|---|
committer | 2016-11-23 01:02:57 +0000 | |
commit | 59dc41175d99d0a31c046aec0c26c4d82a3a3574 (patch) | |
tree | 5e1d050baec746da7f2fd2a83a128ab4e9d9cd1b /tests/ImageStorageTest.cpp | |
parent | 83a3b390dbeafb703af9b34049220e88834d10be (diff) |
Revert "Initial OpenGL Image support."
This reverts commit be34882042048db096baca32ddf4a8b472529804.
Reason for revert: Test failures and shader compilation issues on Android.
Original change's description:
> Initial OpenGL Image support.
>
> This change along with recently landed changes is enough to make the new unit test work and not much else. imageLoad is support but not stores or any other image functions (atomics). Barriers in the shading language or the GL API are not yet hooked up.
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4182
>
> Change-Id: I5958b7c89e40ae5ee05f7bbaca3b3738162fe5ce
> Reviewed-on: https://skia-review.googlesource.com/4182
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Reviewed-by: Chris Dalton <csmartdalton@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>
>
TBR=egdaniel@google.com,bsalomon@google.com,csmartdalton@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: I29a2502c296ae39ed9a999957800414ae46e6f0f
Reviewed-on: https://skia-review.googlesource.com/5129
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'tests/ImageStorageTest.cpp')
-rw-r--r-- | tests/ImageStorageTest.cpp | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/tests/ImageStorageTest.cpp b/tests/ImageStorageTest.cpp deleted file mode 100644 index 99949d07ce..0000000000 --- a/tests/ImageStorageTest.cpp +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright 2016 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "Test.h" - -#if SK_SUPPORT_GPU - -#include "GrFragmentProcessor.h" -#include "GrInvariantOutput.h" -#include "GrRenderTargetContext.h" -#include "GrTexture.h" -#include "glsl/GrGLSLFragmentProcessor.h" -#include "glsl/GrGLSLFragmentShaderBuilder.h" - -DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageStorageLoad, reporter, ctxInfo) { - class TestFP : public GrFragmentProcessor { - public: - static sk_sp<GrFragmentProcessor> Make(sk_sp<GrTexture> texture) { - return sk_sp<GrFragmentProcessor>(new TestFP(std::move(texture))); - } - - const char* name() const override { return "Image Load Test FP"; } - - private: - TestFP(sk_sp<GrTexture> texture) : fImageStorageAccess(std::move(texture), kRead_GrIOType) { - this->initClassID<TestFP>(); - this->setWillReadFragmentPosition(); - this->addImageStorageAccess(&fImageStorageAccess); - } - - void onGetGLSLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const override {} - - void onComputeInvariantOutput(GrInvariantOutput* inout) const override { - inout->setToUnknown(GrInvariantOutput::kWillNot_ReadInput); - } - - bool onIsEqual(const GrFragmentProcessor& that) const override { return true; } - - GrGLSLFragmentProcessor* onCreateGLSLInstance() const override { - class GLSLProcessor : public GrGLSLFragmentProcessor { - public: - GLSLProcessor() = default; - void emitCode(EmitArgs& args) override { - const TestFP& tfp = args.fFp.cast<TestFP>(); - GrGLSLFPFragmentBuilder* fb = args.fFragBuilder; - SkString imageLoadStr; - fb->codeAppendf("vec2 coord = %s.xy;", args.fFragBuilder->fragmentPosition()); - fb->appendImageStorageLoad(&imageLoadStr, args.fImageStorages[0], - "ivec2(coord)"); - if (GrPixelConfigIsSint(tfp.fImageStorageAccess.texture()->config())) { - // Map the signed bytes so that when then get read back as unorm values they - // will have their original bit pattern. - fb->codeAppendf("ivec4 ivals = %s;", imageLoadStr.c_str()); - // NV gives a linker error for this: - // fb->codeAppend("ivals += - // "mix(ivec4(0), ivec4(256), lessThan(ivals, ivec4(0)));"); - fb->codeAppend("if (ivals.r < 0) { ivals.r += 256; }"); - fb->codeAppend("if (ivals.g < 0) { ivals.g += 256; }"); - fb->codeAppend("if (ivals.b < 0) { ivals.b += 256; }"); - fb->codeAppend("if (ivals.a < 0) { ivals.a += 256; }"); - fb->codeAppendf("%s = (vec4(ivals) + vec4(0.5))/255;", args.fOutputColor); - } else { - fb->codeAppendf("%s = %s;", args.fOutputColor, imageLoadStr.c_str()); - } - } - }; - return new GLSLProcessor; - } - - ImageStorageAccess fImageStorageAccess; - }; - - static constexpr int kS = 256; - GrContext* context = ctxInfo.grContext(); - if (!context->caps()->shaderCaps()->imageLoadStoreSupport()) { - return; - } - - std::unique_ptr<uint32_t[]> data(new uint32_t[kS * kS]); - for (int j = 0; j < kS; ++j) { - for (int i = 0; i < kS; ++i) { - data[i + kS * j] = GrColorPackRGBA(i, j, 0, 0); - } - } - - std::unique_ptr<uint32_t[]> idata(new uint32_t[kS * kS]); - for (int j = 0; j < kS; ++j) { - for (int i = 0; i < kS; ++i) { - int8_t r = i - 128; - int8_t g = j - 128; - int8_t b = -128; - int8_t a = -128; - idata[i + kS * j] = ((uint8_t)a << 24) | ((uint8_t)b << 16) | - ((uint8_t)g << 8) | (uint8_t)r; - } - } - - // Currently image accesses always have "top left" semantics. - GrSurfaceDesc desc; - desc.fOrigin = kTopLeft_GrSurfaceOrigin; - desc.fWidth = kS; - desc.fHeight = kS; - struct { - GrPixelConfig fConfig; - std::unique_ptr<uint32_t[]> fData; - } tests[] = { - { - kRGBA_8888_GrPixelConfig, - std::move(data) - }, - { - kRGBA_8888_sint_GrPixelConfig, - std::move(idata) - }, - }; - for (const auto& test : tests) { - desc.fConfig = test.fConfig; - sk_sp<GrTexture> imageStorageTexture(context->textureProvider()->createTexture(desc, - SkBudgeted::kYes, test.fData.get(), 0)); - - sk_sp<GrRenderTargetContext> rtContext = - context->makeRenderTargetContext(SkBackingFit::kExact, kS, kS, kRGBA_8888_GrPixelConfig, - nullptr); - GrPaint paint; - paint.setPorterDuffXPFactory(SkBlendMode::kSrc); - paint.addColorFragmentProcessor(TestFP::Make(imageStorageTexture)); - rtContext->drawPaint(GrNoClip(), paint, SkMatrix::I()); - std::unique_ptr<uint32_t[]> readData(new uint32_t[kS * kS]); - SkImageInfo info = SkImageInfo::Make(kS, kS, kRGBA_8888_SkColorType, kPremul_SkAlphaType); - rtContext->readPixels(info, readData.get(), 0, 0, 0); - int failed = false; - for (int j = 0; j < kS && !failed; ++j) { - for (int i = 0; i < kS && !failed; ++i) { - uint32_t d = test.fData[j * kS + i]; - uint32_t rd = readData[j * kS + i]; - if (d != rd) { - failed = true; - ERRORF(reporter, "Expected 0x%08x, got 0x%08x at %d, %d.", d, rd, i, j); - } - } - } - } -} - -#endif |