svga: set rendered_to flag with texture uploaded using TransferFromBuffer command
authorCharmaine Lee <charmainel@vmware.com>
Thu, 29 Sep 2016 23:41:21 +0000 (16:41 -0700)
committerBrian Paul <brianp@vmware.com>
Thu, 3 Nov 2016 20:29:22 +0000 (14:29 -0600)
This patch sets the rendered_to flag for the texture subresource that
is uploaded using the TransferFromBuffer command. This is to ensure that
the subresource will be read back or invalidated before it will be
directly mapped to. This makes sure that the content of the GB surface
will not be accidentally overwritten by the device at suspend/resume time.

Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/drivers/svga/svga_resource_texture.c

index fc5c3741b544985373901891e8f23460341d9ee1..5792961ae282c625875a622150962784580b8ca3 100644 (file)
@@ -1427,6 +1427,7 @@ svga_texture_transfer_unmap_upload(struct svga_context *svga,
    struct svga_winsys_surface *srcsurf;
    struct svga_winsys_surface *dstsurf;
    struct pipe_resource *texture = st->base.resource;
+   struct svga_texture *tex = svga_texture(texture);
    enum pipe_error ret; 
    unsigned subResource;
    unsigned numMipLevels;
@@ -1468,6 +1469,9 @@ svga_texture_transfer_unmap_upload(struct svga_context *svga,
          assert(ret == PIPE_OK);
       }
       offset += st->base.layer_stride;
+
+      /* Set rendered-to flag */
+      svga_set_texture_rendered_to(tex, layer, st->base.level);
    }
 
    pipe_resource_reference(&st->upload.buf, NULL);