Add check for incorrect opList splits
This CL relies on: https://skia-review.googlesource.com/c/14186/ (Split up opLists (take 3)) We can't/don't want to close the opList in the GrSurfaceContext dtor because we, semi-often, wrap a proxy in a utility SurfaceContext in order to upload data to it (e.g., when creating a proxy w/ data or in the texture strip atlas). In the current set up, the "temporary fixes" in newRTOpList and newTextureOpList should prevent any out of order execution. Change-Id: I8189db6ed59096d7b8c1704028df395f84e4a681 Reviewed-on: https://skia-review.googlesource.com/14187 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
This commit is contained in:
parent
d1eaf49e0b
commit
a4c93ac535
@ -95,6 +95,23 @@ void GrDrawingManager::internalFlush(GrSurfaceProxy*, GrResourceCache::FlushType
|
||||
fOpLists[i]->makeClosed(*fContext->caps());
|
||||
}
|
||||
|
||||
#ifdef SK_DEBUG
|
||||
// This block checks for any unnecessary splits in the opLists. If two sequential opLists
|
||||
// share the same backing GrSurfaceProxy it means the opList was artificially split.
|
||||
if (fOpLists.count()) {
|
||||
GrRenderTargetOpList* prevOpList = fOpLists[0]->asRenderTargetOpList();
|
||||
for (int i = 1; i < fOpLists.count(); ++i) {
|
||||
GrRenderTargetOpList* curOpList = fOpLists[i]->asRenderTargetOpList();
|
||||
|
||||
if (prevOpList && curOpList) {
|
||||
SkASSERT(prevOpList->fTarget.get() != curOpList->fTarget.get());
|
||||
}
|
||||
|
||||
prevOpList = curOpList;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_MDB
|
||||
SkDEBUGCODE(bool result =)
|
||||
SkTTopoSort<GrOpList, GrOpList::TopoSortTraits>(&fOpLists);
|
||||
|
@ -105,9 +105,6 @@ void GrRenderTargetContext::validate() const {
|
||||
#endif
|
||||
|
||||
GrRenderTargetContext::~GrRenderTargetContext() {
|
||||
if (fOpList) {
|
||||
fOpList->makeClosed(*this->caps());
|
||||
}
|
||||
ASSERT_SINGLE_OWNER
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user