[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 2/2] virgl: Modify resource_query_layout
Modify resource_query_layout to handle the use case that need to query correct stride for guest linear resource before it is created. Signed-off-by: Julia Zhang <julia.zhang@xxxxxxx> --- hw/display/virtio-gpu-virgl.c | 20 +++----------------- include/standard-headers/linux/virtio_gpu.h | 8 ++++---- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c index 9c5a07cef1..ae146a68cb 100644 --- a/hw/display/virtio-gpu-virgl.c +++ b/hw/display/virtio-gpu-virgl.c @@ -728,22 +728,9 @@ static void virgl_cmd_resource_query_layout(VirtIOGPU *g, VIRTIO_GPU_FILL_CMD(qlayout); virtio_gpu_resource_query_layout_bswap(&qlayout); - if (qlayout.resource_id == 0) { - qemu_log_mask(LOG_GUEST_ERROR, "%s: resource id 0 is not allowed\n", - __func__); - cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID; - return; - } - - res = virtio_gpu_find_resource(g, qlayout.resource_id); - if (!res) { - qemu_log_mask(LOG_GUEST_ERROR, "%s: resource does not exist %d\n", - __func__, qlayout.resource_id); - cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID; - return; - } - - ret = virgl_renderer_resource_query_layout(qlayout.resource_id, &rlayout); + ret = virgl_renderer_resource_query_layout(qlayout.resource_id, &rlayout, + qlayout.width, qlayout.height, + qlayout.format, qlayout.bind); if (ret != 0) { qemu_log_mask(LOG_GUEST_ERROR, "%s: resource %d is not externally-allocated\n", __func__, qlayout.resource_id); @@ -758,7 +745,6 @@ static void virgl_cmd_resource_query_layout(VirtIOGPU *g, for (i = 0; i < resp.num_planes; i++) { resp.planes[i].offset = rlayout.planes[i].offset; resp.planes[i].stride = rlayout.planes[i].stride; - resp.planes[i].size = rlayout.planes[i].size; } virtio_gpu_ctrl_response(g, cmd, &resp.hdr, sizeof(resp)); } diff --git a/include/standard-headers/linux/virtio_gpu.h b/include/standard-headers/linux/virtio_gpu.h index 734fdb6beb..6fb0f711c8 100644 --- a/include/standard-headers/linux/virtio_gpu.h +++ b/include/standard-headers/linux/virtio_gpu.h @@ -506,7 +506,10 @@ struct virtio_gpu_status_freezing { struct virtio_gpu_resource_query_layout { struct virtio_gpu_ctrl_hdr hdr; uint32_t resource_id; - uint32_t padding; + uint32_t width; + uint32_t height; + uint32_t format; + uint32_t bind; }; /* VIRTIO_GPU_RESP_OK_RESOURCE_LAYOUT */ @@ -515,12 +518,9 @@ struct virtio_gpu_resp_resource_layout { struct virtio_gpu_ctrl_hdr hdr; uint64_t modifier; uint32_t num_planes; - uint32_t padding; struct virtio_gpu_resource_plane { uint64_t offset; - uint64_t size; uint32_t stride; - uint32_t padding; } planes[VIRTIO_GPU_RES_MAX_PLANES]; }; -- 2.34.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |