blob: 42e446ba43066649bb3a47e7bddbd2f748c5c1f6 [file] [log] [blame] [edit]
/*
* 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);