/* * Copyright 2019 Google LLC * SPDX-License-Identifier: MIT * * based in part on anv and radv which are: * Copyright © 2015 Intel Corporation * Copyright © 2016 Red Hat. * Copyright © 2016 Bas Nieuwenhuizen */ #ifndef VN_QUEUE_H #define VN_QUEUE_H #include "vn_common.h" struct vn_queue { struct vn_object_base base; struct vn_device *device; uint32_t family; uint32_t index; uint32_t flags; VkFence wait_fence; }; VK_DEFINE_HANDLE_CASTS(vn_queue, base.base, VkQueue, VK_OBJECT_TYPE_QUEUE) enum vn_sync_type { /* no payload */ VN_SYNC_TYPE_INVALID, /* device object */ VN_SYNC_TYPE_DEVICE_ONLY, /* already signaled by WSI */ VN_SYNC_TYPE_WSI_SIGNALED, }; struct vn_sync_payload { enum vn_sync_type type; }; struct vn_fence { struct vn_object_base base; struct vn_sync_payload *payload; struct vn_sync_payload permanent; struct vn_sync_payload temporary; }; VK_DEFINE_NONDISP_HANDLE_CASTS(vn_fence, base.base, VkFence, VK_OBJECT_TYPE_FENCE) struct vn_semaphore { struct vn_object_base base; VkSemaphoreType type; struct vn_sync_payload *payload; struct vn_sync_payload permanent; struct vn_sync_payload temporary; }; VK_DEFINE_NONDISP_HANDLE_CASTS(vn_semaphore, base.base, VkSemaphore, VK_OBJECT_TYPE_SEMAPHORE) struct vn_event { struct vn_object_base base; }; VK_DEFINE_NONDISP_HANDLE_CASTS(vn_event, base.base, VkEvent, VK_OBJECT_TYPE_EVENT) void vn_fence_signal_wsi(struct vn_device *dev, struct vn_fence *fence); void vn_semaphore_signal_wsi(struct vn_device *dev, struct vn_semaphore *sem); #endif /* VN_QUEUE_H */