diff options
author | 2018-02-01 11:23:12 -0500 | |
---|---|---|
committer | 2018-02-01 19:59:08 +0000 | |
commit | 7a13705e03b7ba3d7f858f2e3081c353c7be8bd4 (patch) | |
tree | 88b4dc8f28f8e4335419c3bf4a1057bd61c47600 | |
parent | 5e967422e048cffc8618a11d392898033ba304b4 (diff) |
Fix DDL unit tests
Change-Id: I2c3da5f0390b6222a4ffefe8b50a20c3aee98da6
Reviewed-on: https://skia-review.googlesource.com/102620
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
-rw-r--r-- | src/gpu/GrDrawingManager.cpp | 5 | ||||
-rw-r--r-- | tests/DeferredDisplayListTest.cpp | 20 |
2 files changed, 15 insertions, 10 deletions
diff --git a/src/gpu/GrDrawingManager.cpp b/src/gpu/GrDrawingManager.cpp index 3bcff1106b..1897860ee1 100644 --- a/src/gpu/GrDrawingManager.cpp +++ b/src/gpu/GrDrawingManager.cpp @@ -324,6 +324,11 @@ void GrDrawingManager::addOnFlushCallbackObject(GrOnFlushCallbackObject* onFlush void GrDrawingManager::moveOpListsToDDL(SkDeferredDisplayList* ddl) { #ifndef SK_RASTER_RECORDER_IMPLEMENTATION + for (int i = 0; i < fOpLists.count(); ++i) { + // no opList should receive a new command after this + fOpLists[i]->makeClosed(*fContext->caps()); + } + ddl->fOpLists = std::move(fOpLists); #endif } diff --git a/tests/DeferredDisplayListTest.cpp b/tests/DeferredDisplayListTest.cpp index 8ee24be89a..2c507f10f9 100644 --- a/tests/DeferredDisplayListTest.cpp +++ b/tests/DeferredDisplayListTest.cpp @@ -288,10 +288,9 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(DDLWrapBackendTest, reporter, ctxInfo) { if (DDLStage::kDetach == lastStage) { REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount); recorder.reset(); - // DDL TODO: Once copies of OpLists from the recorder to DDL are implemented we can - // uncomment this check. Currently the texture is getting reset when the recorder - // goes away (assuming we did an earlyImageReset). - // REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount); +#ifndef SK_RASTER_RECORDER_IMPLEMENTATION + REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount); +#endif ddl.reset(); if (earlyImageReset) { REPORTER_ASSERT(reporter, 1 == releaseChecker.fReleaseCount); @@ -308,19 +307,20 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(DDLWrapBackendTest, reporter, ctxInfo) { REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount); recorder.reset(); - // DDL TODO: Once copies of OpLists from the recorder to DDL are implemented we can - // uncomment these checks. Currently the texture is getting released when the recorder - // goes away (assuming we did an earlyImageReset). - // REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount); +#ifndef SK_RASTER_RECORDER_IMPLEMENTATION + REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount); +#endif ddl.reset(); - // REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount); +#ifndef SK_RASTER_RECORDER_IMPLEMENTATION + REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount); +#endif // Force all draws to flush and sync by calling a read pixels SkImageInfo imageInfo = SkImageInfo::Make(kSize, kSize, kRGBA_8888_SkColorType, kPremul_SkAlphaType); SkBitmap bitmap; bitmap.allocPixels(imageInfo); - s->readPixels(imageInfo, bitmap.getPixels(), 0, 0, 0); + s->readPixels(imageInfo, bitmap.getPixels(), bitmap.rowBytes(), 0, 0); if (earlyImageReset) { REPORTER_ASSERT(reporter, 1 == releaseChecker.fReleaseCount); |