mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-27 14:28:22 +02:00
kk: Support device without queue
Queue-less devices can be used for compiling pipelines. Reviewed-by: Aitor Camacho <aitor@lunarg.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41663>
This commit is contained in:
parent
e503f8399a
commit
7033dee54f
3 changed files with 20 additions and 6 deletions
|
|
@ -221,10 +221,13 @@ kk_CreateDevice(VkPhysicalDevice physicalDevice,
|
|||
if (dev->residency_set.handle == NULL)
|
||||
goto fail_init;
|
||||
|
||||
result =
|
||||
kk_queue_init(dev, &dev->queue, &pCreateInfo->pQueueCreateInfos[0], 0);
|
||||
if (result != VK_SUCCESS)
|
||||
goto fail_vab_memory;
|
||||
if (pCreateInfo->queueCreateInfoCount > 0) {
|
||||
result =
|
||||
kk_queue_init(dev, &dev->queue, &pCreateInfo->pQueueCreateInfos[0], 0);
|
||||
if (result != VK_SUCCESS)
|
||||
goto fail_vab_memory;
|
||||
dev->has_queue = true;
|
||||
}
|
||||
|
||||
result = kk_device_init_meta(dev);
|
||||
if (result != VK_SUCCESS)
|
||||
|
|
@ -256,7 +259,10 @@ fail_query_table:
|
|||
fail_meta:
|
||||
kk_device_finish_meta(dev);
|
||||
fail_mem_cache:
|
||||
kk_queue_finish(dev, &dev->queue);
|
||||
if (dev->has_queue) {
|
||||
kk_queue_finish(dev, &dev->queue);
|
||||
dev->has_queue = false;
|
||||
}
|
||||
fail_vab_memory:
|
||||
mtl_release(dev->residency_set.handle);
|
||||
simple_mtx_destroy(&dev->residency_set.mutex);
|
||||
|
|
@ -295,7 +301,11 @@ kk_DestroyDevice(VkDevice _device, const VkAllocationCallbacks *pAllocator)
|
|||
mtl_release(dev->residency_set.handle);
|
||||
simple_mtx_destroy(&dev->residency_set.mutex);
|
||||
|
||||
kk_queue_finish(dev, &dev->queue);
|
||||
if (dev->has_queue) {
|
||||
kk_queue_finish(dev, &dev->queue);
|
||||
dev->has_queue = false;
|
||||
}
|
||||
|
||||
vk_device_finish(&dev->vk);
|
||||
|
||||
vk_free(&dev->vk.alloc, dev);
|
||||
|
|
|
|||
|
|
@ -93,6 +93,7 @@ struct kk_device {
|
|||
|
||||
struct kk_precompiled_cache precompiled_cache;
|
||||
|
||||
bool has_queue;
|
||||
struct kk_queue queue;
|
||||
|
||||
struct vk_meta_device meta;
|
||||
|
|
|
|||
|
|
@ -80,6 +80,9 @@ kk_get_blit_queue(VkDevice device)
|
|||
{
|
||||
/* We only have one queue, so just return that one. */
|
||||
VK_FROM_HANDLE(kk_device, dev, device);
|
||||
if (!dev->has_queue)
|
||||
return NULL;
|
||||
|
||||
return &dev->queue.vk;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue