{
const struct panfrost_device *pdev = &device->physical_device->pdev;
- vk_object_base_init(&device->vk, &queue->base, VK_OBJECT_TYPE_QUEUE);
+ VkResult result = vk_queue_init(&queue->vk, &device->vk);
+ if (result != VK_SUCCESS)
+ return result;
queue->device = device;
queue->queue_family_index = queue_family_index;
queue->flags = flags;
};
int ret = drmIoctl(pdev->fd, DRM_IOCTL_SYNCOBJ_CREATE, &create);
- if (ret)
+ if (ret) {
+ vk_queue_finish(&queue->vk);
return VK_ERROR_OUT_OF_HOST_MEMORY;
+ }
queue->sync = create.handle;
return VK_SUCCESS;
static void
panvk_queue_finish(struct panvk_queue *queue)
{
+ vk_queue_finish(&queue->vk);
}
VkResult
#include "vk_instance.h"
#include "vk_object.h"
#include "vk_physical_device.h"
+#include "vk_queue.h"
#include "wsi_common.h"
#include "drm-uapi/panfrost_drm.h"
#define PANVK_MAX_QUEUE_FAMILIES 1
struct panvk_queue {
- struct vk_object_base base;
+ struct vk_queue vk;
struct panvk_device *device;
uint32_t queue_family_index;
VkDeviceQueueCreateFlags flags;
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)
-VK_DEFINE_HANDLE_CASTS(panvk_queue, base, VkQueue, VK_OBJECT_TYPE_QUEUE)
+VK_DEFINE_HANDLE_CASTS(panvk_queue, vk.base, VkQueue, VK_OBJECT_TYPE_QUEUE)
VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_cmd_pool, base, VkCommandPool, VK_OBJECT_TYPE_COMMAND_POOL)
VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_buffer, base, VkBuffer, VK_OBJECT_TYPE_BUFFER)