| Index: tests/RecordReplaceDrawTest.cpp
|
| diff --git a/tests/RecordReplaceDrawTest.cpp b/tests/RecordReplaceDrawTest.cpp
|
| deleted file mode 100644
|
| index 388bee8d7b5dd1efffbe0cefee9aaa1470d27f97..0000000000000000000000000000000000000000
|
| --- a/tests/RecordReplaceDrawTest.cpp
|
| +++ /dev/null
|
| @@ -1,159 +0,0 @@
|
| -/*
|
| - * Copyright 2014 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 "GrContext.h"
|
| -#include "GrLayerCache.h"
|
| -#include "GrRecordReplaceDraw.h"
|
| -#include "RecordTestUtils.h"
|
| -#include "SkBBHFactory.h"
|
| -#include "SkPictureRecorder.h"
|
| -#include "SkRecordDraw.h"
|
| -#include "SkRecorder.h"
|
| -#include "SkUtils.h"
|
| -
|
| -static const int kWidth = 100;
|
| -static const int kHeight = 100;
|
| -
|
| -class JustOneDraw : public SkPicture::AbortCallback {
|
| -public:
|
| - JustOneDraw() : fCalls(0) {}
|
| -
|
| - bool abort() override { return fCalls++ > 0; }
|
| -private:
|
| - int fCalls;
|
| -};
|
| -
|
| -// Make sure the abort callback works
|
| -DEF_TEST(RecordReplaceDraw_Abort, r) {
|
| - sk_sp<SkPicture> pic;
|
| -
|
| - {
|
| - // Record two commands.
|
| - SkPictureRecorder recorder;
|
| - SkCanvas* canvas = recorder.beginRecording(SkIntToScalar(kWidth), SkIntToScalar(kHeight));
|
| -
|
| - canvas->drawRect(SkRect::MakeWH(SkIntToScalar(kWidth), SkIntToScalar(kHeight)), SkPaint());
|
| - canvas->clipRect(SkRect::MakeWH(SkIntToScalar(kWidth), SkIntToScalar(kHeight)));
|
| -
|
| - pic = recorder.finishRecordingAsPicture();
|
| - }
|
| -
|
| - SkRecord rerecord;
|
| - SkRecorder canvas(&rerecord, kWidth, kHeight);
|
| -
|
| - JustOneDraw callback;
|
| - GrRecordReplaceDraw(pic.get(), &canvas, nullptr, SkMatrix::I(), &callback);
|
| -
|
| - switch (rerecord.count()) {
|
| - case 3:
|
| - assert_type<SkRecords::Save>(r, rerecord, 0);
|
| - assert_type<SkRecords::DrawRect>(r, rerecord, 1);
|
| - assert_type<SkRecords::Restore>(r, rerecord, 2);
|
| - break;
|
| - case 1:
|
| - assert_type<SkRecords::DrawRect>(r, rerecord, 0);
|
| - break;
|
| - default:
|
| - REPORTER_ASSERT(r, false);
|
| - }
|
| -}
|
| -
|
| -// Make sure GrRecordReplaceDraw balances unbalanced saves
|
| -DEF_TEST(RecordReplaceDraw_Unbalanced, r) {
|
| - sk_sp<SkPicture> pic;
|
| -
|
| - {
|
| - SkPictureRecorder recorder;
|
| - SkCanvas* canvas = recorder.beginRecording(SkIntToScalar(kWidth), SkIntToScalar(kHeight));
|
| -
|
| - // We won't balance this, but GrRecordReplaceDraw will for us.
|
| - canvas->save();
|
| - canvas->scale(2, 2);
|
| - pic = recorder.finishRecordingAsPicture();
|
| -
|
| - // we may have optimized everything away. If so, just return
|
| - if (pic->approximateOpCount() == 0) {
|
| - return;
|
| - }
|
| - }
|
| -
|
| - SkRecord rerecord;
|
| - SkRecorder canvas(&rerecord, kWidth, kHeight);
|
| -
|
| - GrRecordReplaceDraw(pic.get(), &canvas, nullptr, SkMatrix::I(), nullptr/*callback*/);
|
| -
|
| - // ensure rerecord is balanced (in this case by checking that the count is odd)
|
| - REPORTER_ASSERT(r, (rerecord.count() & 1) == 1);
|
| -}
|
| -
|
| -// Test out the layer replacement functionality with and w/o a BBH
|
| -void test_replacements(skiatest::Reporter* r, GrContext* context, bool doReplace) {
|
| - sk_sp<SkPicture> pic;
|
| -
|
| - {
|
| - SkPictureRecorder recorder;
|
| - SkCanvas* canvas = recorder.beginRecording(SkIntToScalar(kWidth), SkIntToScalar(kHeight));
|
| - SkPaint paint;
|
| - canvas->saveLayer(nullptr, &paint);
|
| - canvas->clear(SK_ColorRED);
|
| - canvas->restore();
|
| - canvas->drawRect(SkRect::MakeWH(SkIntToScalar(kWidth / 2), SkIntToScalar(kHeight / 2)),
|
| - SkPaint());
|
| - pic = recorder.finishRecordingAsPicture();
|
| - }
|
| -
|
| - SkAutoTUnref<GrTexture> texture;
|
| - SkPaint paint;
|
| - GrLayerCache* layerCache = context->getLayerCache();
|
| -
|
| - if (doReplace) {
|
| - int key[1] = { 0 };
|
| -
|
| - GrCachedLayer* layer = layerCache->findLayerOrCreate(pic->uniqueID(), 0, 2,
|
| - SkIRect::MakeWH(kWidth, kHeight),
|
| - SkIRect::MakeWH(kWidth, kHeight),
|
| - SkMatrix::I(), key, 1, &paint);
|
| -
|
| - GrSurfaceDesc desc;
|
| - desc.fConfig = kSkia8888_GrPixelConfig;
|
| - desc.fFlags = kRenderTarget_GrSurfaceFlag;
|
| - desc.fWidth = kWidth;
|
| - desc.fHeight = kHeight;
|
| - desc.fSampleCnt = 0;
|
| -
|
| - // Giving the texture some initial data so the Gpu (specifically vulkan) does not complain
|
| - // when reading from an uninitialized texture.
|
| - SkAutoTMalloc<uint32_t> srcBuffer(kWidth*kHeight);
|
| - memset(srcBuffer.get(), 0, kWidth*kHeight*sizeof(uint32_t));
|
| -
|
| - texture.reset(context->textureProvider()->createTexture(
|
| - desc, SkBudgeted::kNo, srcBuffer.get(), 0));
|
| - layer->setTexture(texture, SkIRect::MakeWH(kWidth, kHeight), false);
|
| - }
|
| -
|
| - SkRecord rerecord;
|
| - SkRecorder canvas(&rerecord, kWidth, kHeight);
|
| - GrRecordReplaceDraw(pic.get(), &canvas, layerCache, SkMatrix::I(), nullptr/*callback*/);
|
| -
|
| - int numLayers = count_instances_of_type<SkRecords::SaveLayer>(rerecord);
|
| - if (doReplace) {
|
| - REPORTER_ASSERT(r, 0 == numLayers);
|
| - } else {
|
| - REPORTER_ASSERT(r, 1 == numLayers);
|
| - }
|
| -}
|
| -
|
| -DEF_GPUTEST_FOR_RENDERING_CONTEXTS(RecordReplaceDraw, r, ctxInfo) {
|
| - test_replacements(r, ctxInfo.grContext(), true);
|
| - test_replacements(r, ctxInfo.grContext(), false);
|
| -}
|
| -
|
| -#endif
|
|
|