mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
virgl: Store mapped hw resource with transfer object.
Signed-off-by: David Riley <davidriley@chromium.org> Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
This commit is contained in:
parent
ebbb05b3c9
commit
e94a9a7f38
3 changed files with 7 additions and 7 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue