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:
committed by
Marge Bot
parent
19d7cf0457
commit
bd1705a480
@@ -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,
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user