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 Workerhk_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