| /* |
| * Copyright 2024 Valve Corporation |
| * Copyright 2024 Alyssa Rosenzweig |
| * Copyright 2022-2023 Collabora Ltd. and Red Hat Inc. |
| * SPDX-License-Identifier: MIT |
| */ |
| |
| #pragma once |
| |
| #include "hk_private.h" |
| #include "vk_queue.h" |
| |
| struct hk_device; |
| |
| struct hk_queue { |
| struct vk_queue vk; |
| |
| struct { |
| /* Asahi kernel queue ID */ |
| uint32_t id; |
| |
| /* Timeline syncobj backing the queue */ |
| uint32_t syncobj; |
| |
| /* Current maximum timeline value for the queue's syncobj. If the |
| * syncobj's value equals timeline_value, then all work is complete. |
| */ |
| uint32_t timeline_value; |
| } drm; |
| }; |
| |
| static inline struct hk_device * |
| hk_queue_device(struct hk_queue *queue) |
| { |
| return (struct hk_device *)queue->vk.base.device; |
| } |
| |
| VkResult hk_queue_init(struct hk_device *dev, struct hk_queue *queue, |
| const VkDeviceQueueCreateInfo *pCreateInfo, |
| uint32_t index_in_family); |
| |
| void hk_queue_finish(struct hk_device *dev, struct hk_queue *queue); |