panvk: Use vk_command_buffer

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Tested-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13003>
This commit is contained in:
Jason Ekstrand
2021-09-23 11:57:20 -05:00
committed by Marge Bot
parent 9846783001
commit 1815271f0a
2 changed files with 17 additions and 6 deletions
+3 -2
View File
@@ -49,6 +49,7 @@
#include "util/list.h"
#include "util/macros.h"
#include "vk_alloc.h"
#include "vk_command_buffer.h"
#include "vk_device.h"
#include "vk_instance.h"
#include "vk_object.h"
@@ -660,7 +661,7 @@ struct panvk_cmd_bind_point_state {
};
struct panvk_cmd_buffer {
struct vk_object_base base;
struct vk_command_buffer vk;
struct panvk_device *device;
@@ -1018,7 +1019,7 @@ struct panvk_render_pass {
struct panvk_subpass subpasses[0];
};
VK_DEFINE_HANDLE_CASTS(panvk_cmd_buffer, base, VkCommandBuffer, VK_OBJECT_TYPE_COMMAND_BUFFER)
VK_DEFINE_HANDLE_CASTS(panvk_cmd_buffer, vk.base, VkCommandBuffer, VK_OBJECT_TYPE_COMMAND_BUFFER)
VK_DEFINE_HANDLE_CASTS(panvk_device, vk.base, VkDevice, VK_OBJECT_TYPE_DEVICE)
VK_DEFINE_HANDLE_CASTS(panvk_instance, vk.base, VkInstance, VK_OBJECT_TYPE_INSTANCE)
VK_DEFINE_HANDLE_CASTS(panvk_physical_device, vk.base, VkPhysicalDevice, VK_OBJECT_TYPE_PHYSICAL_DEVICE)
+14 -4
View File
@@ -943,6 +943,8 @@ panvk_per_arch(CmdWaitEvents)(VkCommandBuffer commandBuffer,
static VkResult
panvk_reset_cmdbuf(struct panvk_cmd_buffer *cmdbuf)
{
vk_command_buffer_reset(&cmdbuf->vk);
cmdbuf->record_result = VK_SUCCESS;
list_for_each_entry_safe(struct panvk_batch, batch, &cmdbuf->batches, node) {
@@ -990,7 +992,8 @@ panvk_destroy_cmdbuf(struct panvk_cmd_buffer *cmdbuf)
panvk_pool_cleanup(&cmdbuf->desc_pool);
panvk_pool_cleanup(&cmdbuf->tls_pool);
panvk_pool_cleanup(&cmdbuf->varying_pool);
vk_object_free(&device->vk, NULL, cmdbuf);
vk_command_buffer_finish(&cmdbuf->vk);
vk_free(&device->vk.alloc, cmdbuf);
}
static VkResult
@@ -1001,11 +1004,17 @@ panvk_create_cmdbuf(struct panvk_device *device,
{
struct panvk_cmd_buffer *cmdbuf;
cmdbuf = vk_object_zalloc(&device->vk, NULL, sizeof(*cmdbuf),
VK_OBJECT_TYPE_COMMAND_BUFFER);
cmdbuf = vk_zalloc(&device->vk.alloc, sizeof(*cmdbuf),
8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
if (!cmdbuf)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
VkResult result = vk_command_buffer_init(&cmdbuf->vk, &device->vk);
if (result != VK_SUCCESS) {
vk_free(&device->vk.alloc, cmdbuf);
return result;
}
cmdbuf->device = device;
cmdbuf->level = level;
cmdbuf->pool = pool;
@@ -1058,7 +1067,8 @@ panvk_per_arch(AllocateCommandBuffers)(VkDevice _device,
list_addtail(&cmdbuf->pool_link, &pool->active_cmd_buffers);
cmdbuf->level = pAllocateInfo->level;
vk_object_base_reset(&cmdbuf->base);
vk_command_buffer_finish(&cmdbuf->vk);
result = vk_command_buffer_init(&cmdbuf->vk, &device->vk);
} else {
result = panvk_create_cmdbuf(device, pool, pAllocateInfo->level, &cmdbuf);
}