Module: Mesa
Branch: master
Commit: e94a9a7f38de13230d1fb8767c45e6c8f4e59c64
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e94a9a7f38de13230d1fb8767c45e6c8f4e59c64

Author: David Riley <[email protected]>
Date:   Tue Apr 30 17:33:59 2019 -0700

virgl: Store mapped hw resource with transfer object.

Signed-off-by: David Riley <[email protected]>
Reviewed-by: Gurchetan Singh <[email protected]>

---

 src/gallium/drivers/virgl/virgl_buffer.c   | 7 +++----
 src/gallium/drivers/virgl/virgl_resource.h | 1 +
 src/gallium/drivers/virgl/virgl_texture.c  | 6 +++---
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/gallium/drivers/virgl/virgl_buffer.c 
b/src/gallium/drivers/virgl/virgl_buffer.c
index fd00b1748c4..42434752d53 100644
--- a/src/gallium/drivers/virgl/virgl_buffer.c
+++ b/src/gallium/drivers/virgl/virgl_buffer.c
@@ -38,7 +38,6 @@ static void *virgl_buffer_transfer_map(struct pipe_context 
*ctx,
    struct virgl_screen *vs = virgl_screen(ctx->screen);
    struct virgl_resource *vbuf = virgl_resource(resource);
    struct virgl_transfer *trans;
-   void *ptr;
    bool readback;
    bool flush = false;
 
@@ -60,14 +59,14 @@ static void *virgl_buffer_transfer_map(struct pipe_context 
*ctx,
    if (readback || flush)
       vs->vws->resource_wait(vs->vws, vbuf->hw_res);
 
-   ptr = vs->vws->resource_map(vs->vws, vbuf->hw_res);
-   if (!ptr) {
+   trans->hw_res_map = vs->vws->resource_map(vs->vws, vbuf->hw_res);
+   if (!trans->hw_res_map) {
       virgl_resource_destroy_transfer(&vctx->transfer_pool, trans);
       return NULL;
    }
 
    *transfer = &trans->base;
-   return ptr + trans->offset;
+   return trans->hw_res_map + trans->offset;
 }
 
 static void virgl_buffer_transfer_unmap(struct pipe_context *ctx,
diff --git a/src/gallium/drivers/virgl/virgl_resource.h 
b/src/gallium/drivers/virgl/virgl_resource.h
index abe8578bd23..380e145564a 100644
--- a/src/gallium/drivers/virgl/virgl_resource.h
+++ b/src/gallium/drivers/virgl/virgl_resource.h
@@ -58,6 +58,7 @@ struct virgl_transfer {
    struct util_range range;
    struct list_head queue_link;
    struct pipe_transfer *resolve_transfer;
+   void *hw_res_map;
 };
 
 void virgl_resource_destroy(struct pipe_screen *screen,
diff --git a/src/gallium/drivers/virgl/virgl_texture.c 
b/src/gallium/drivers/virgl/virgl_texture.c
index deb637ee58e..19ae6ff1d3a 100644
--- a/src/gallium/drivers/virgl/virgl_texture.c
+++ b/src/gallium/drivers/virgl/virgl_texture.c
@@ -146,14 +146,14 @@ static void *texture_transfer_map_plain(struct 
pipe_context *ctx,
    if (readback || flush)
       vws->resource_wait(vws, vtex->hw_res);
 
-   void *ptr = vws->resource_map(vws, vtex->hw_res);
-   if (!ptr) {
+   trans->hw_res_map = vws->resource_map(vws, vtex->hw_res);
+   if (!trans->hw_res_map) {
       virgl_resource_destroy_transfer(&vctx->transfer_pool, trans);
       return NULL;
    }
 
    *transfer = &trans->base;
-   return ptr + trans->offset;
+   return trans->hw_res_map + trans->offset;
 }
 
 static void *texture_transfer_map_resolve(struct pipe_context *ctx,

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to