virgl: better support for PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE
[mesa.git] / src / gallium / drivers / virgl / virgl_texture.c
index 1de6d4f17dbfee15b16a8c121d4a8c4976cfb7b6..3c5737c5d17cc1ce7aaba5f79f123ae27048766e 100644 (file)
@@ -134,6 +134,13 @@ static void *texture_transfer_map_plain(struct pipe_context *ctx,
 
    map_type = virgl_resource_transfer_prepare(vctx, trans);
    switch (map_type) {
+   case VIRGL_TRANSFER_MAP_REALLOC:
+      if (!virgl_resource_realloc(vctx, vtex)) {
+         map_addr = NULL;
+         break;
+      }
+      vws->resource_reference(vws, &trans->hw_res, vtex->hw_res);
+      /* fall through */
    case VIRGL_TRANSFER_MAP_HW_RES:
       trans->hw_res_map = vws->resource_map(vws, vtex->hw_res);
       if (trans->hw_res_map)