From 469a1d8c114c855d07a94b7c2a413f17d4bb2053 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 6 Mar 2023 15:21:54 -0500 Subject: [PATCH] lavapipe: break out pipeline layout creation for reuse Reviewed-by: Dave Airlie Part-of: --- .../frontends/lavapipe/lvp_descriptor_set.c | 28 +++++++++++++--------- src/gallium/frontends/lavapipe/lvp_private.h | 6 +++++ 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/gallium/frontends/lavapipe/lvp_descriptor_set.c b/src/gallium/frontends/lavapipe/lvp_descriptor_set.c index a1680cb..4482f25 100644 --- a/src/gallium/frontends/lavapipe/lvp_descriptor_set.c +++ b/src/gallium/frontends/lavapipe/lvp_descriptor_set.c @@ -223,18 +223,13 @@ VKAPI_ATTR VkResult VKAPI_CALL lvp_CreateDescriptorSetLayout( return VK_SUCCESS; } -VKAPI_ATTR VkResult VKAPI_CALL lvp_CreatePipelineLayout( - VkDevice _device, - const VkPipelineLayoutCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkPipelineLayout* pPipelineLayout) +struct lvp_pipeline_layout * +lvp_pipeline_layout_create(struct lvp_device *device, + const VkPipelineLayoutCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator) { - LVP_FROM_HANDLE(lvp_device, device, _device); - struct lvp_pipeline_layout *layout; - - layout = vk_pipeline_layout_zalloc(&device->vk, sizeof(*layout), - pCreateInfo); - + struct lvp_pipeline_layout *layout = vk_pipeline_layout_zalloc(&device->vk, sizeof(*layout), + pCreateInfo); for (uint32_t set = 0; set < layout->vk.set_count; set++) { if (layout->vk.set_layouts[set] == NULL) continue; @@ -299,6 +294,17 @@ VKAPI_ATTR VkResult VKAPI_CALL lvp_CreatePipelineLayout( layout->push_constant_stages |= (range->stageFlags & BITFIELD_MASK(MESA_SHADER_STAGES)); } layout->push_constant_size = align(layout->push_constant_size, 16); + return layout; +} + +VKAPI_ATTR VkResult VKAPI_CALL lvp_CreatePipelineLayout( + VkDevice _device, + const VkPipelineLayoutCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkPipelineLayout* pPipelineLayout) +{ + LVP_FROM_HANDLE(lvp_device, device, _device); + struct lvp_pipeline_layout *layout = lvp_pipeline_layout_create(device, pCreateInfo, pAllocator); *pPipelineLayout = lvp_pipeline_layout_to_handle(layout); return VK_SUCCESS; diff --git a/src/gallium/frontends/lavapipe/lvp_private.h b/src/gallium/frontends/lavapipe/lvp_private.h index c0b3233..8cf0c3f 100644 --- a/src/gallium/frontends/lavapipe/lvp_private.h +++ b/src/gallium/frontends/lavapipe/lvp_private.h @@ -399,6 +399,12 @@ struct lvp_pipeline_layout { } stage[MESA_SHADER_STAGES]; }; + +struct lvp_pipeline_layout * +lvp_pipeline_layout_create(struct lvp_device *device, + const VkPipelineLayoutCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator); + struct lvp_access_info { uint64_t images_read; uint64_t images_written; -- 2.7.4