/* Copyright © 2024 Intel Corporation * SPDX-License-Identifier: MIT */ #include "anv_private.h" VkResult anv_CreateEvent( VkDevice _device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) { ANV_FROM_HANDLE(anv_device, device, _device); struct anv_event *event; assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_EVENT_CREATE_INFO); event = vk_object_alloc(&device->vk, pAllocator, sizeof(*event), VK_OBJECT_TYPE_EVENT); if (event == NULL) return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); event->state = anv_state_pool_alloc(&device->dynamic_state_pool, sizeof(uint64_t), 8); *(uint64_t *)event->state.map = VK_EVENT_RESET; ANV_RMV(event_create, device, event, pCreateInfo->flags, false); *pEvent = anv_event_to_handle(event); return VK_SUCCESS; } void anv_DestroyEvent( VkDevice _device, VkEvent _event, const VkAllocationCallbacks* pAllocator) { ANV_FROM_HANDLE(anv_device, device, _device); ANV_FROM_HANDLE(anv_event, event, _event); if (!event) return; ANV_RMV(resource_destroy, device, event); anv_state_pool_free(&device->dynamic_state_pool, event->state); vk_object_free(&device->vk, pAllocator, event); } VkResult anv_GetEventStatus( VkDevice _device, VkEvent _event) { ANV_FROM_HANDLE(anv_device, device, _device); ANV_FROM_HANDLE(anv_event, event, _event); if (vk_device_is_lost(&device->vk)) return VK_ERROR_DEVICE_LOST; return *(uint64_t *)event->state.map; } VkResult anv_SetEvent( VkDevice _device, VkEvent _event) { ANV_FROM_HANDLE(anv_event, event, _event); *(uint64_t *)event->state.map = VK_EVENT_SET; return VK_SUCCESS; } VkResult anv_ResetEvent( VkDevice _device, VkEvent _event) { ANV_FROM_HANDLE(anv_event, event, _event); *(uint64_t *)event->state.map = VK_EVENT_RESET; return VK_SUCCESS; }