From 6efeda4838f5944e4e14ff156be5593aa59cf1aa Mon Sep 17 00:00:00 2001 From: brianosman Date: Wed, 22 Jun 2016 07:10:06 -0700 Subject: Revert of Store mipmap levels in deferred texture image (patchset #15 id:280001 of https://codereview.chromium.org/2034933003/ ) Reason for revert: Crashes on a few different bots (including ASAN). Examples: https://build.chromium.org/p/client.skia.android/builders/Test-Android-GCC-Nexus7-GPU-Tegra3-Arm7-Release/builds/6324 https://build.chromium.org/p/client.skia/builders/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug/builds/5400 https://build.chromium.org/p/client.skia/builders/Test-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Debug-ASAN/builds/3539 Original issue's description: > Store mipmap levels in deferred texture image > > When creating the deferred texture image, detect if using medium / high > quality. If so, generate and store mipmaps in the deferred texture > image. > > When creating a texture from that be sure to read it back out. > > BUG=578304 > R=bsalomon@google.com > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2034933003 > > Committed: https://skia.googlesource.com/skia/+/b3105190a6e02d37f1d7f07a3a8bdd368ec7f157 TBR=bsalomon@google.com,ericrk@chromium.org,cblume@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=578304 Review-Url: https://codereview.chromium.org/2083393002 --- gm/deferredtextureimage.cpp | 117 -------------------------------------------- 1 file changed, 117 deletions(-) delete mode 100644 gm/deferredtextureimage.cpp (limited to 'gm') diff --git a/gm/deferredtextureimage.cpp b/gm/deferredtextureimage.cpp deleted file mode 100644 index 82dd90aa5f..0000000000 --- a/gm/deferredtextureimage.cpp +++ /dev/null @@ -1,117 +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 - -#include "gm.h" -#include "GrContext.h" -#include "SkMipMap.h" -#include "Resources.h" - -#if SK_SUPPORT_GPU - -class DeferredTextureImage_Medium : public skiagm::GM { -protected: - SkString onShortName() override { - return SkString("deferredtextureimage_medium"); - } - - SkISize onISize() override { - return SkISize::Make(512 + 512 + 30, 1110); - } - - void onDraw(SkCanvas* canvas) override { - GrContext* context = canvas->getGrContext(); - if (!context) { - skiagm::GM::DrawGpuOnlyMessage(canvas); - return; - } - - SkPaint paint; - paint.setFilterQuality(kMedium_SkFilterQuality); - - int mipLevelCount = SkMipMap::ComputeLevelCount(512, 512); - - // create the deferred texture image - SkImage::DeferredTextureImageUsageParams params[1]; - // These should cause mipmaps to be generated - params[0].fMatrix = SkMatrix::MakeScale(0.25f, 0.25f); - params[0].fQuality = kMedium_SkFilterQuality; - size_t requiredMemoryInBytes = fDecodedImage->getDeferredTextureImageData( - *context->threadSafeProxy(), params, 1, nullptr, SkSourceGammaTreatment::kRespect); - if (requiredMemoryInBytes == 0) { - SkDebugf("\nCould not create DeferredTextureImageData.\n"); - return; - } - - std::vector memory; - memory.resize(requiredMemoryInBytes); - fDecodedImage->getDeferredTextureImageData( - *context->threadSafeProxy(), params, 1, memory.data(), - SkSourceGammaTreatment::kRespect); - sk_sp uploadedImage = SkImage::MakeFromDeferredTextureImageData( - context, memory.data(), SkBudgeted::kNo); - - // draw a column using deferred texture images - SkScalar offsetHeight = 10.f; - // handle base mipmap level - canvas->save(); - canvas->translate(10.f, offsetHeight); - canvas->drawImage(uploadedImage, 0, 0, &paint); - canvas->restore(); - offsetHeight += 512 + 10; - // handle generated mipmap levels - for (int i = 0; i < mipLevelCount; i++) { - SkISize mipSize = SkMipMap::ComputeLevelSize(512, 512, i); - canvas->save(); - canvas->translate(10.f, offsetHeight); - canvas->scale(mipSize.width() / 512.f, mipSize.height() / 512.f); - canvas->drawImage(uploadedImage, 0, 0, &paint); - canvas->restore(); - offsetHeight += mipSize.height() + 10; - } - - // draw a column using SkImage - offsetHeight = 10; - // handle base mipmap level - canvas->save(); - canvas->translate(512.f + 20.f, offsetHeight); - canvas->drawImage(fDecodedImage, 0, 0, &paint); - canvas->restore(); - offsetHeight += 512 + 10; - // handle generated mipmap levels - for (int i = 0; i < mipLevelCount; i++) { - SkISize mipSize = SkMipMap::ComputeLevelSize(512, 512, i); - canvas->save(); - canvas->translate(512.f + 20.f, offsetHeight); - canvas->scale(mipSize.width() / 512.f, mipSize.height() / 512.f); - canvas->drawImage(fDecodedImage, 0, 0, &paint); - canvas->restore(); - offsetHeight += mipSize.height() + 10; - } - } - -private: - - void onOnceBeforeDraw() override { - SkBitmap bitmap; - if (!GetResourceAsBitmap("mandrill_512.png", &bitmap)) { - bitmap.allocN32Pixels(1, 1); - bitmap.eraseARGB(255, 255, 0, 0); // red == bad - } - fDecodedImage = SkImage::MakeFromBitmap(bitmap); - } - - sk_sp fDecodedImage; - - typedef skiagm::GM INHERITED; -}; - -////////////////////////////////////////////////////////////////////////////// - -DEF_GM( return new DeferredTextureImage_Medium; ) - -#endif -- cgit v1.2.3