xref: /aosp_15_r20/external/mesa3d/src/asahi/vulkan/hk_queue.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright 2024 Valve Corporation
3*61046927SAndroid Build Coastguard Worker  * Copyright 2024 Alyssa Rosenzweig
4*61046927SAndroid Build Coastguard Worker  * Copyright 2022-2023 Collabora Ltd. and Red Hat Inc.
5*61046927SAndroid Build Coastguard Worker  * SPDX-License-Identifier: MIT
6*61046927SAndroid Build Coastguard Worker  */
7*61046927SAndroid Build Coastguard Worker 
8*61046927SAndroid Build Coastguard Worker #pragma once
9*61046927SAndroid Build Coastguard Worker 
10*61046927SAndroid Build Coastguard Worker #include "hk_private.h"
11*61046927SAndroid Build Coastguard Worker #include "vk_queue.h"
12*61046927SAndroid Build Coastguard Worker 
13*61046927SAndroid Build Coastguard Worker struct hk_device;
14*61046927SAndroid Build Coastguard Worker 
15*61046927SAndroid Build Coastguard Worker struct hk_queue {
16*61046927SAndroid Build Coastguard Worker    struct vk_queue vk;
17*61046927SAndroid Build Coastguard Worker 
18*61046927SAndroid Build Coastguard Worker    struct {
19*61046927SAndroid Build Coastguard Worker       /* Asahi kernel queue ID */
20*61046927SAndroid Build Coastguard Worker       uint32_t id;
21*61046927SAndroid Build Coastguard Worker 
22*61046927SAndroid Build Coastguard Worker       /* Timeline syncobj backing the queue */
23*61046927SAndroid Build Coastguard Worker       uint32_t syncobj;
24*61046927SAndroid Build Coastguard Worker 
25*61046927SAndroid Build Coastguard Worker       /* Current maximum timeline value for the queue's syncobj. If the
26*61046927SAndroid Build Coastguard Worker        * syncobj's value equals timeline_value, then all work is complete.
27*61046927SAndroid Build Coastguard Worker        */
28*61046927SAndroid Build Coastguard Worker       uint32_t timeline_value;
29*61046927SAndroid Build Coastguard Worker    } drm;
30*61046927SAndroid Build Coastguard Worker };
31*61046927SAndroid Build Coastguard Worker 
32*61046927SAndroid Build Coastguard Worker static inline struct hk_device *
hk_queue_device(struct hk_queue * queue)33*61046927SAndroid Build Coastguard Worker hk_queue_device(struct hk_queue *queue)
34*61046927SAndroid Build Coastguard Worker {
35*61046927SAndroid Build Coastguard Worker    return (struct hk_device *)queue->vk.base.device;
36*61046927SAndroid Build Coastguard Worker }
37*61046927SAndroid Build Coastguard Worker 
38*61046927SAndroid Build Coastguard Worker VkResult hk_queue_init(struct hk_device *dev, struct hk_queue *queue,
39*61046927SAndroid Build Coastguard Worker                        const VkDeviceQueueCreateInfo *pCreateInfo,
40*61046927SAndroid Build Coastguard Worker                        uint32_t index_in_family);
41*61046927SAndroid Build Coastguard Worker 
42*61046927SAndroid Build Coastguard Worker void hk_queue_finish(struct hk_device *dev, struct hk_queue *queue);
43