Reland "Add backend texture and backend render target versions snapshot GMs"
This is a reland of fa87f9c7b9873c63ffbc3471f2169feab478522e
Went back to original approach of checking isFramebufferOnly outside
GrCopyRenderTask::Make().
Original change's description:
> Add backend texture and backend render target versions snapshot GMs
>
> GPU may behave differently depending on whether the SkSurface backing
> store is wrapped and whether it is a texture or not.
>
> Bug: skia:11208
> Change-Id: I5e9921d56c0840cfe34ed2926a55be7460409b23
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/364639
> Reviewed-by: Adlai Holler <adlai@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>
Bug: skia:11208
Change-Id: I7af6078e904fdd772b97ad3a27e26cab577fc6a3
Cq-Include-Trybots: luci.skia.skia.primary:Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-PreAbandonGpuContext
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/365702
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/GrDrawingManager.cpp b/src/gpu/GrDrawingManager.cpp
index 9a30130..9446d3f 100644
--- a/src/gpu/GrDrawingManager.cpp
+++ b/src/gpu/GrDrawingManager.cpp
@@ -835,6 +835,16 @@
SkDEBUGCODE(this->validate());
SkASSERT(fContext);
+ // It'd be nicer to check this in GrCopyRenderTask::Make. This gets complicated because of
+ // "active ops task" tracking. dst will be the target of our copy task but it might also be the
+ // target of the active ops task. We currently require the active ops task to be closed before
+ // making a new task that targets the same proxy. However, if we first close the active ops
+ // task, then fail to make a copy task, the next active ops task may target the same proxy. This
+ // will trip an assert related to unnecessary ops task splitting.
+ if (src->framebufferOnly()) {
+ return false;
+ }
+
this->closeActiveOpsTask();
GrRenderTask* task = this->appendTask(GrCopyRenderTask::Make(this,