vulkan: Add the pCreateInfo to vk_queue_init()
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13003>
This commit is contained in:

committed by
Marge Bot

parent
1815271f0a
commit
b2313b6884
@@ -2503,18 +2503,18 @@ radv_get_queue_global_priority(const VkDeviceQueueGlobalPriorityCreateInfoEXT *p
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
radv_queue_init(struct radv_device *device, struct radv_queue *queue, uint32_t queue_family_index,
|
radv_queue_init(struct radv_device *device, struct radv_queue *queue,
|
||||||
int idx, VkDeviceQueueCreateFlags flags,
|
int idx, const VkDeviceQueueCreateInfo *create_info,
|
||||||
const VkDeviceQueueGlobalPriorityCreateInfoEXT *global_priority)
|
const VkDeviceQueueGlobalPriorityCreateInfoEXT *global_priority)
|
||||||
{
|
{
|
||||||
queue->device = device;
|
queue->device = device;
|
||||||
queue->queue_family_index = queue_family_index;
|
queue->queue_family_index = create_info->queueFamilyIndex;
|
||||||
queue->queue_idx = idx;
|
queue->queue_idx = idx;
|
||||||
queue->priority = radv_get_queue_global_priority(global_priority);
|
queue->priority = radv_get_queue_global_priority(global_priority);
|
||||||
queue->flags = flags;
|
queue->flags = create_info->flags;
|
||||||
queue->hw_ctx = device->hw_ctx[queue->priority];
|
queue->hw_ctx = device->hw_ctx[queue->priority];
|
||||||
|
|
||||||
VkResult result = vk_queue_init(&queue->vk, &device->vk);
|
VkResult result = vk_queue_init(&queue->vk, &device->vk, create_info, idx);
|
||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
@@ -2931,8 +2931,7 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr
|
|||||||
device->queue_count[qfi] = queue_create->queueCount;
|
device->queue_count[qfi] = queue_create->queueCount;
|
||||||
|
|
||||||
for (unsigned q = 0; q < queue_create->queueCount; q++) {
|
for (unsigned q = 0; q < queue_create->queueCount; q++) {
|
||||||
result = radv_queue_init(device, &device->queues[qfi][q], qfi, q, queue_create->flags,
|
result = radv_queue_init(device, &device->queues[qfi][q], q, queue_create, global_priority);
|
||||||
global_priority);
|
|
||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
@@ -1676,9 +1676,12 @@ v3dv_EnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static VkResult
|
static VkResult
|
||||||
queue_init(struct v3dv_device *device, struct v3dv_queue *queue)
|
queue_init(struct v3dv_device *device, struct v3dv_queue *queue,
|
||||||
|
const VkDeviceQueueCreateInfo *create_info,
|
||||||
|
uint32_t index_in_family)
|
||||||
{
|
{
|
||||||
VkResult result = vk_queue_init(&queue->vk, &device->vk);
|
VkResult result = vk_queue_init(&queue->vk, &device->vk, create_info,
|
||||||
|
index_in_family);
|
||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
return result;
|
return result;
|
||||||
queue->device = device;
|
queue->device = device;
|
||||||
@@ -1778,7 +1781,8 @@ v3dv_CreateDevice(VkPhysicalDevice physicalDevice,
|
|||||||
|
|
||||||
pthread_mutex_init(&device->mutex, NULL);
|
pthread_mutex_init(&device->mutex, NULL);
|
||||||
|
|
||||||
result = queue_init(device, &device->queue);
|
result = queue_init(device, &device->queue,
|
||||||
|
pCreateInfo->pQueueCreateInfos, 0);
|
||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
@@ -1169,18 +1169,17 @@ tu_GetPhysicalDeviceMemoryProperties2(VkPhysicalDevice pdev,
|
|||||||
static VkResult
|
static VkResult
|
||||||
tu_queue_init(struct tu_device *device,
|
tu_queue_init(struct tu_device *device,
|
||||||
struct tu_queue *queue,
|
struct tu_queue *queue,
|
||||||
uint32_t queue_family_index,
|
|
||||||
int idx,
|
int idx,
|
||||||
VkDeviceQueueCreateFlags flags)
|
const VkDeviceQueueCreateInfo *create_info)
|
||||||
{
|
{
|
||||||
VkResult result = vk_queue_init(&queue->vk, &device->vk);
|
VkResult result = vk_queue_init(&queue->vk, &device->vk, create_info, idx);
|
||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
queue->device = device;
|
queue->device = device;
|
||||||
queue->queue_family_index = queue_family_index;
|
queue->queue_family_index = create_info->queueFamilyIndex;
|
||||||
queue->queue_idx = idx;
|
queue->queue_idx = idx;
|
||||||
queue->flags = flags;
|
queue->flags = create_info->flags;
|
||||||
|
|
||||||
list_inithead(&queue->queued_submits);
|
list_inithead(&queue->queued_submits);
|
||||||
|
|
||||||
@@ -1463,8 +1462,8 @@ tu_CreateDevice(VkPhysicalDevice physicalDevice,
|
|||||||
device->queue_count[qfi] = queue_create->queueCount;
|
device->queue_count[qfi] = queue_create->queueCount;
|
||||||
|
|
||||||
for (unsigned q = 0; q < queue_create->queueCount; q++) {
|
for (unsigned q = 0; q < queue_create->queueCount; q++) {
|
||||||
result = tu_queue_init(device, &device->queues[qfi][q], qfi, q,
|
result = tu_queue_init(device, &device->queues[qfi][q], q,
|
||||||
queue_create->flags);
|
queue_create);
|
||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
goto fail_queues;
|
goto fail_queues;
|
||||||
}
|
}
|
||||||
|
@@ -1356,9 +1356,12 @@ queue_thread(void *data, void *gdata, int thread_index)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static VkResult
|
static VkResult
|
||||||
lvp_queue_init(struct lvp_device *device, struct lvp_queue *queue)
|
lvp_queue_init(struct lvp_device *device, struct lvp_queue *queue,
|
||||||
|
const VkDeviceQueueCreateInfo *create_info,
|
||||||
|
uint32_t index_in_family)
|
||||||
{
|
{
|
||||||
VkResult result = vk_queue_init(&queue->vk, &device->vk);
|
VkResult result = vk_queue_init(&queue->vk, &device->vk, create_info,
|
||||||
|
index_in_family);
|
||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
@@ -1438,7 +1441,10 @@ VKAPI_ATTR VkResult VKAPI_CALL lvp_CreateDevice(
|
|||||||
|
|
||||||
device->pscreen = physical_device->pscreen;
|
device->pscreen = physical_device->pscreen;
|
||||||
|
|
||||||
lvp_queue_init(device, &device->queue);
|
assert(pCreateInfo->queueCreateInfoCount == 1);
|
||||||
|
assert(pCreateInfo->pQueueCreateInfos[0].queueFamilyIndex == 0);
|
||||||
|
assert(pCreateInfo->pQueueCreateInfos[0].queueCount == 1);
|
||||||
|
lvp_queue_init(device, &device->queue, pCreateInfo->pQueueCreateInfos, 0);
|
||||||
|
|
||||||
*pDevice = lvp_device_to_handle(device);
|
*pDevice = lvp_device_to_handle(device);
|
||||||
|
|
||||||
|
@@ -3033,7 +3033,7 @@ VkResult anv_CreateDevice(
|
|||||||
device->queue_count : I915_EXEC_RENDER;
|
device->queue_count : I915_EXEC_RENDER;
|
||||||
|
|
||||||
result = anv_queue_init(device, &device->queues[device->queue_count],
|
result = anv_queue_init(device, &device->queues[device->queue_count],
|
||||||
exec_flags, queueCreateInfo);
|
exec_flags, queueCreateInfo, j);
|
||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
goto fail_queues;
|
goto fail_queues;
|
||||||
|
|
||||||
|
@@ -1446,7 +1446,8 @@ VkResult anv_device_wait(struct anv_device *device, struct anv_bo *bo,
|
|||||||
|
|
||||||
VkResult anv_queue_init(struct anv_device *device, struct anv_queue *queue,
|
VkResult anv_queue_init(struct anv_device *device, struct anv_queue *queue,
|
||||||
uint32_t exec_flags,
|
uint32_t exec_flags,
|
||||||
const VkDeviceQueueCreateInfo *pCreateInfo);
|
const VkDeviceQueueCreateInfo *pCreateInfo,
|
||||||
|
uint32_t index_in_family);
|
||||||
void anv_queue_finish(struct anv_queue *queue);
|
void anv_queue_finish(struct anv_queue *queue);
|
||||||
|
|
||||||
VkResult anv_queue_execbuf_locked(struct anv_queue *queue, struct anv_queue_submit *submit);
|
VkResult anv_queue_execbuf_locked(struct anv_queue *queue, struct anv_queue_submit *submit);
|
||||||
|
@@ -473,12 +473,14 @@ anv_queue_submit_post(struct anv_queue *queue,
|
|||||||
VkResult
|
VkResult
|
||||||
anv_queue_init(struct anv_device *device, struct anv_queue *queue,
|
anv_queue_init(struct anv_device *device, struct anv_queue *queue,
|
||||||
uint32_t exec_flags,
|
uint32_t exec_flags,
|
||||||
const VkDeviceQueueCreateInfo *pCreateInfo)
|
const VkDeviceQueueCreateInfo *pCreateInfo,
|
||||||
|
uint32_t index_in_family)
|
||||||
{
|
{
|
||||||
struct anv_physical_device *pdevice = device->physical;
|
struct anv_physical_device *pdevice = device->physical;
|
||||||
VkResult result;
|
VkResult result;
|
||||||
|
|
||||||
result = vk_queue_init(&queue->vk, &device->vk);
|
result = vk_queue_init(&queue->vk, &device->vk, pCreateInfo,
|
||||||
|
index_in_family);
|
||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
|
@@ -908,18 +908,17 @@ panvk_GetPhysicalDeviceMemoryProperties2(VkPhysicalDevice physicalDevice,
|
|||||||
static VkResult
|
static VkResult
|
||||||
panvk_queue_init(struct panvk_device *device,
|
panvk_queue_init(struct panvk_device *device,
|
||||||
struct panvk_queue *queue,
|
struct panvk_queue *queue,
|
||||||
uint32_t queue_family_index,
|
|
||||||
int idx,
|
int idx,
|
||||||
VkDeviceQueueCreateFlags flags)
|
const VkDeviceQueueCreateInfo *create_info)
|
||||||
{
|
{
|
||||||
const struct panfrost_device *pdev = &device->physical_device->pdev;
|
const struct panfrost_device *pdev = &device->physical_device->pdev;
|
||||||
|
|
||||||
VkResult result = vk_queue_init(&queue->vk, &device->vk);
|
VkResult result = vk_queue_init(&queue->vk, &device->vk, create_info, idx);
|
||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
return result;
|
return result;
|
||||||
queue->device = device;
|
queue->device = device;
|
||||||
queue->queue_family_index = queue_family_index;
|
queue->queue_family_index = create_info->queueFamilyIndex;
|
||||||
queue->flags = flags;
|
queue->flags = create_info->flags;
|
||||||
|
|
||||||
struct drm_syncobj_create create = {
|
struct drm_syncobj_create create = {
|
||||||
.flags = DRM_SYNCOBJ_CREATE_SIGNALED,
|
.flags = DRM_SYNCOBJ_CREATE_SIGNALED,
|
||||||
@@ -1025,8 +1024,8 @@ panvk_CreateDevice(VkPhysicalDevice physicalDevice,
|
|||||||
device->queue_count[qfi] = queue_create->queueCount;
|
device->queue_count[qfi] = queue_create->queueCount;
|
||||||
|
|
||||||
for (unsigned q = 0; q < queue_create->queueCount; q++) {
|
for (unsigned q = 0; q < queue_create->queueCount; q++) {
|
||||||
result = panvk_queue_init(device, &device->queues[qfi][q], qfi, q,
|
result = panvk_queue_init(device, &device->queues[qfi][q], q,
|
||||||
queue_create->flags);
|
queue_create);
|
||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
@@ -24,11 +24,19 @@
|
|||||||
#include "vk_queue.h"
|
#include "vk_queue.h"
|
||||||
|
|
||||||
VkResult
|
VkResult
|
||||||
vk_queue_init(struct vk_queue *queue, struct vk_device *device)
|
vk_queue_init(struct vk_queue *queue, struct vk_device *device,
|
||||||
|
const VkDeviceQueueCreateInfo *pCreateInfo,
|
||||||
|
uint32_t index_in_family)
|
||||||
{
|
{
|
||||||
memset(queue, 0, sizeof(*queue));
|
memset(queue, 0, sizeof(*queue));
|
||||||
vk_object_base_init(device, &queue->base, VK_OBJECT_TYPE_QUEUE);
|
vk_object_base_init(device, &queue->base, VK_OBJECT_TYPE_QUEUE);
|
||||||
|
|
||||||
|
queue->flags = pCreateInfo->flags;
|
||||||
|
queue->queue_family_index = pCreateInfo->queueFamilyIndex;
|
||||||
|
|
||||||
|
assert(index_in_family < pCreateInfo->queueCount);
|
||||||
|
queue->index_in_family = index_in_family;
|
||||||
|
|
||||||
util_dynarray_init(&queue->labels, NULL);
|
util_dynarray_init(&queue->labels, NULL);
|
||||||
queue->region_begin = true;
|
queue->region_begin = true;
|
||||||
|
|
||||||
|
@@ -34,6 +34,15 @@ extern "C" {
|
|||||||
struct vk_queue {
|
struct vk_queue {
|
||||||
struct vk_object_base base;
|
struct vk_object_base base;
|
||||||
|
|
||||||
|
/* VkDeviceQueueCreateInfo::flags */
|
||||||
|
VkDeviceQueueCreateFlags flags;
|
||||||
|
|
||||||
|
/* VkDeviceQueueCreateInfo::queueFamilyIndex */
|
||||||
|
uint32_t queue_family_index;
|
||||||
|
|
||||||
|
/* Which queue this is within the queue family */
|
||||||
|
uint32_t index_in_family;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* VK_EXT_debug_utils
|
* VK_EXT_debug_utils
|
||||||
*
|
*
|
||||||
@@ -78,7 +87,9 @@ struct vk_queue {
|
|||||||
VK_DEFINE_HANDLE_CASTS(vk_queue, base, VkQueue, VK_OBJECT_TYPE_QUEUE)
|
VK_DEFINE_HANDLE_CASTS(vk_queue, base, VkQueue, VK_OBJECT_TYPE_QUEUE)
|
||||||
|
|
||||||
VkResult MUST_CHECK
|
VkResult MUST_CHECK
|
||||||
vk_queue_init(struct vk_queue *queue, struct vk_device *device);
|
vk_queue_init(struct vk_queue *queue, struct vk_device *device,
|
||||||
|
const VkDeviceQueueCreateInfo *pCreateInfo,
|
||||||
|
uint32_t index_in_family);
|
||||||
|
|
||||||
void
|
void
|
||||||
vk_queue_finish(struct vk_queue *queue);
|
vk_queue_finish(struct vk_queue *queue);
|
||||||
|
Reference in New Issue
Block a user