vulkan: Make vk_debug_report_callback derive from vk_object_base

Fixes: 51c6bc13ce "anv,vulkan: Implement VK_EXT_private_data"
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8676>
This commit is contained in:
Jason Ekstrand
2021-01-28 16:45:29 -06:00
committed by Marge Bot
parent 19d7cf0457
commit bd1705a480
2 changed files with 16 additions and 6 deletions
+9 -6
View File
@@ -60,6 +60,9 @@ vk_create_debug_report_callback(struct vk_debug_report_instance *instance,
if (!cb) if (!cb)
return VK_ERROR_OUT_OF_HOST_MEMORY; return VK_ERROR_OUT_OF_HOST_MEMORY;
vk_object_base_init(NULL, &cb->base,
VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT);
cb->flags = pCreateInfo->flags; cb->flags = pCreateInfo->flags;
cb->callback = pCreateInfo->pfnCallback; cb->callback = pCreateInfo->pfnCallback;
cb->data = pCreateInfo->pUserData; cb->data = pCreateInfo->pUserData;
@@ -68,7 +71,7 @@ vk_create_debug_report_callback(struct vk_debug_report_instance *instance,
list_addtail(&cb->link, &instance->callbacks); list_addtail(&cb->link, &instance->callbacks);
mtx_unlock(&instance->callbacks_mutex); mtx_unlock(&instance->callbacks_mutex);
*pCallback = (VkDebugReportCallbackEXT)(uintptr_t)cb; *pCallback = vk_debug_report_callback_to_handle(cb);
return VK_SUCCESS; return VK_SUCCESS;
} }
@@ -79,19 +82,19 @@ vk_destroy_debug_report_callback(struct vk_debug_report_instance *instance,
const VkAllocationCallbacks* pAllocator, const VkAllocationCallbacks* pAllocator,
const VkAllocationCallbacks* instance_allocator) const VkAllocationCallbacks* instance_allocator)
{ {
if (_callback == VK_NULL_HANDLE) VK_FROM_HANDLE(vk_debug_report_callback, callback, _callback);
return;
struct vk_debug_report_callback *callback = if (callback == NULL)
(struct vk_debug_report_callback *)(uintptr_t)_callback; return;
/* Remove from list and destroy given callback. */ /* Remove from list and destroy given callback. */
mtx_lock(&instance->callbacks_mutex); mtx_lock(&instance->callbacks_mutex);
list_del(&callback->link); list_del(&callback->link);
vk_free2(instance_allocator, pAllocator, callback); vk_free2(instance_allocator, pAllocator, callback);
mtx_unlock(&instance->callbacks_mutex); mtx_unlock(&instance->callbacks_mutex);
}
vk_object_base_finish(&callback->base);
}
void void
vk_debug_report(struct vk_debug_report_instance *instance, vk_debug_report(struct vk_debug_report_instance *instance,
+7
View File
@@ -26,11 +26,15 @@
#ifndef VK_DEBUG_REPORT_H #ifndef VK_DEBUG_REPORT_H
#define VK_DEBUG_REPORT_H #define VK_DEBUG_REPORT_H
#include "vk_object.h"
#include "c11/threads.h" #include "c11/threads.h"
#include "util/list.h" #include "util/list.h"
#include <vulkan/vulkan.h> #include <vulkan/vulkan.h>
struct vk_debug_report_callback { struct vk_debug_report_callback {
struct vk_object_base base;
/* Link in the 'callbacks' list in anv_instance struct. */ /* Link in the 'callbacks' list in anv_instance struct. */
struct list_head link; struct list_head link;
VkDebugReportFlagsEXT flags; VkDebugReportFlagsEXT flags;
@@ -38,6 +42,9 @@ struct vk_debug_report_callback {
void * data; void * data;
}; };
VK_DEFINE_HANDLE_CASTS(vk_debug_report_callback, base, VkDebugReportCallbackEXT,
VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT)
struct vk_debug_report_instance { struct vk_debug_report_instance {
/* VK_EXT_debug_report debug callbacks */ /* VK_EXT_debug_report debug callbacks */
mtx_t callbacks_mutex; mtx_t callbacks_mutex;