aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Robert Phillips <robertphillips@google.com>2018-02-01 11:23:12 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-02-01 19:59:08 +0000
commit7a13705e03b7ba3d7f858f2e3081c353c7be8bd4 (patch)
tree88b4dc8f28f8e4335419c3bf4a1057bd61c47600
parent5e967422e048cffc8618a11d392898033ba304b4 (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.cpp5
-rw-r--r--tests/DeferredDisplayListTest.cpp20
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);