v3dv: Use a common vk_command_buffer structure

Switch to using common structure.

Signed-off-by: Yevhenii Kolesnikov <yevhenii.kolesnikov@globallogic.com>
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13000>
This commit is contained in:
Yevhenii Kolesnikov 2021-04-06 15:13:14 +03:00 committed by Marge Bot
parent 1d2a4abf01
commit 14f0e3c2d3
2 changed files with 20 additions and 7 deletions

View file

@ -122,7 +122,7 @@ cmd_buffer_init(struct v3dv_cmd_buffer *cmd_buffer,
* buffer reset that would reset the loader's dispatch table for the * buffer reset that would reset the loader's dispatch table for the
* command buffer, and any other relevant info from vk_object_base * command buffer, and any other relevant info from vk_object_base
*/ */
const uint32_t base_size = sizeof(struct vk_object_base); const uint32_t base_size = sizeof(struct vk_command_buffer);
uint8_t *cmd_buffer_driver_start = ((uint8_t *) cmd_buffer) + base_size; uint8_t *cmd_buffer_driver_start = ((uint8_t *) cmd_buffer) + base_size;
memset(cmd_buffer_driver_start, 0, sizeof(*cmd_buffer) - base_size); memset(cmd_buffer_driver_start, 0, sizeof(*cmd_buffer) - base_size);
@ -150,13 +150,21 @@ cmd_buffer_create(struct v3dv_device *device,
VkCommandBuffer *pCommandBuffer) VkCommandBuffer *pCommandBuffer)
{ {
struct v3dv_cmd_buffer *cmd_buffer; struct v3dv_cmd_buffer *cmd_buffer;
cmd_buffer = vk_object_zalloc(&device->vk, cmd_buffer = vk_zalloc2(&device->vk.alloc,
&pool->alloc, &pool->alloc,
sizeof(*cmd_buffer), sizeof(*cmd_buffer),
VK_OBJECT_TYPE_COMMAND_BUFFER); 8,
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
if (cmd_buffer == NULL) if (cmd_buffer == NULL)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY); return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
VkResult result;
result = vk_command_buffer_init(&cmd_buffer->vk, &device->vk);
if (result != VK_SUCCESS) {
vk_free2(&device->vk.alloc, &pool->alloc, cmd_buffer);
return result;
}
cmd_buffer_init(cmd_buffer, device, pool, level); cmd_buffer_init(cmd_buffer, device, pool, level);
*pCommandBuffer = v3dv_cmd_buffer_to_handle(cmd_buffer); *pCommandBuffer = v3dv_cmd_buffer_to_handle(cmd_buffer);
@ -340,7 +348,9 @@ cmd_buffer_destroy(struct v3dv_cmd_buffer *cmd_buffer)
{ {
list_del(&cmd_buffer->pool_link); list_del(&cmd_buffer->pool_link);
cmd_buffer_free_resources(cmd_buffer); cmd_buffer_free_resources(cmd_buffer);
vk_object_free(&cmd_buffer->device->vk, &cmd_buffer->pool->alloc, cmd_buffer); vk_command_buffer_finish(&cmd_buffer->vk);
vk_free2(&cmd_buffer->device->vk.alloc, &cmd_buffer->pool->alloc,
cmd_buffer);
} }
static bool static bool
@ -864,6 +874,7 @@ static VkResult
cmd_buffer_reset(struct v3dv_cmd_buffer *cmd_buffer, cmd_buffer_reset(struct v3dv_cmd_buffer *cmd_buffer,
VkCommandBufferResetFlags flags) VkCommandBufferResetFlags flags)
{ {
vk_command_buffer_reset(&cmd_buffer->vk);
if (cmd_buffer->status != V3DV_CMD_BUFFER_STATUS_INITIALIZED) { if (cmd_buffer->status != V3DV_CMD_BUFFER_STATUS_INITIALIZED) {
struct v3dv_device *device = cmd_buffer->device; struct v3dv_device *device = cmd_buffer->device;
struct v3dv_cmd_pool *pool = cmd_buffer->pool; struct v3dv_cmd_pool *pool = cmd_buffer->pool;

View file

@ -43,6 +43,8 @@
#include "vk_shader_module.h" #include "vk_shader_module.h"
#include "vk_util.h" #include "vk_util.h"
#include "vk_command_buffer.h"
#include <xf86drm.h> #include <xf86drm.h>
#ifdef HAVE_VALGRIND #ifdef HAVE_VALGRIND
@ -1277,7 +1279,7 @@ struct v3dv_cmd_buffer_private_obj {
}; };
struct v3dv_cmd_buffer { struct v3dv_cmd_buffer {
struct vk_object_base base; struct vk_command_buffer vk;
struct v3dv_device *device; struct v3dv_device *device;