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>
diff --git a/src/gpu/GrDrawingManager.cpp b/src/gpu/GrDrawingManager.cpp
index 3bcff11..1897860 100644
--- a/src/gpu/GrDrawingManager.cpp
+++ b/src/gpu/GrDrawingManager.cpp
@@ -324,6 +324,11 @@
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 8ee24be..2c507f1 100644
--- a/tests/DeferredDisplayListTest.cpp
+++ b/tests/DeferredDisplayListTest.cpp
@@ -288,10 +288,9 @@
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 @@
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);