iris: Avoid replacing backing storage for buffers with no contents
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 4 Nov 2019 08:21:06 +0000 (00:21 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 23 Dec 2019 00:18:30 +0000 (16:18 -0800)
We might get asked to pitch the storage on a buffer that already has
no meaningful contents.  In this case, the existing buffer is as good
as a new one.

src/gallium/drivers/iris/iris_resource.c

index ed24d629fe5e464021411920a9d30fb33b37d2c9..952d6615584a9b07dbb143c11a08f917832f1d42 100644 (file)
@@ -1240,6 +1240,10 @@ iris_invalidate_resource(struct pipe_context *ctx,
    if (resource->target != PIPE_BUFFER)
       return;
 
+   /* If it's already invalidated, don't bother doing anything. */
+   if (res->valid_buffer_range.start > res->valid_buffer_range.end)
+      return;
+
    if (!resource_is_busy(ice, res)) {
       /* The resource is idle, so just mark that it contains no data and
        * keep using the same underlying buffer object.