Path: blob/21.2-virgl/src/virtio/vulkan/vn_queue.h
4560 views
/*1* Copyright 2019 Google LLC2* SPDX-License-Identifier: MIT3*4* based in part on anv and radv which are:5* Copyright © 2015 Intel Corporation6* Copyright © 2016 Red Hat.7* Copyright © 2016 Bas Nieuwenhuizen8*/910#ifndef VN_QUEUE_H11#define VN_QUEUE_H1213#include "vn_common.h"1415struct vn_queue {16struct vn_object_base base;1718struct vn_device *device;19uint32_t family;20uint32_t index;21uint32_t flags;2223VkFence wait_fence;24};25VK_DEFINE_HANDLE_CASTS(vn_queue, base.base, VkQueue, VK_OBJECT_TYPE_QUEUE)2627enum vn_sync_type {28/* no payload */29VN_SYNC_TYPE_INVALID,3031/* device object */32VN_SYNC_TYPE_DEVICE_ONLY,3334/* already signaled by WSI */35VN_SYNC_TYPE_WSI_SIGNALED,36};3738struct vn_sync_payload {39enum vn_sync_type type;40};4142struct vn_fence {43struct vn_object_base base;4445struct vn_sync_payload *payload;4647struct vn_sync_payload permanent;48struct vn_sync_payload temporary;49};50VK_DEFINE_NONDISP_HANDLE_CASTS(vn_fence,51base.base,52VkFence,53VK_OBJECT_TYPE_FENCE)5455struct vn_semaphore {56struct vn_object_base base;5758VkSemaphoreType type;5960struct vn_sync_payload *payload;6162struct vn_sync_payload permanent;63struct vn_sync_payload temporary;64};65VK_DEFINE_NONDISP_HANDLE_CASTS(vn_semaphore,66base.base,67VkSemaphore,68VK_OBJECT_TYPE_SEMAPHORE)6970struct vn_event {71struct vn_object_base base;72};73VK_DEFINE_NONDISP_HANDLE_CASTS(vn_event,74base.base,75VkEvent,76VK_OBJECT_TYPE_EVENT)7778void79vn_fence_signal_wsi(struct vn_device *dev, struct vn_fence *fence);8081void82vn_semaphore_signal_wsi(struct vn_device *dev, struct vn_semaphore *sem);8384#endif /* VN_QUEUE_H */858687