From 59466d40a36a6c84ef8d45274a92c8cec88b141f Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 4 Apr 2022 12:28:49 +0200 Subject: [PATCH] radv: add a new helper to initialize various type of pipelines This is common to graphics, compute and library pipelines. Signed-off-by: Samuel Pitoiset Reviewed-By: Mike Blumenkrantz Part-of: --- src/amd/vulkan/radv_pipeline.c | 28 +++++++++++++++++----------- src/amd/vulkan/radv_pipeline_rt.c | 3 +-- src/amd/vulkan/radv_private.h | 3 +++ 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index ad4140fd1bd..9015f6ea86e 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -6412,16 +6412,25 @@ radv_pipeline_init_extra(struct radv_pipeline *pipeline, } } +void +radv_pipeline_init(struct radv_device *device, struct radv_pipeline *pipeline, + enum radv_pipeline_type type) +{ + vk_object_base_init(&device->vk, &pipeline->base, VK_OBJECT_TYPE_PIPELINE); + + pipeline->device = device; + pipeline->type = type; +} + static VkResult -radv_pipeline_init(struct radv_pipeline *pipeline, struct radv_device *device, - struct radv_pipeline_cache *cache, - const VkGraphicsPipelineCreateInfo *pCreateInfo, - const struct radv_graphics_pipeline_create_info *extra) +radv_graphics_pipeline_init(struct radv_pipeline *pipeline, struct radv_device *device, + struct radv_pipeline_cache *cache, + const VkGraphicsPipelineCreateInfo *pCreateInfo, + const struct radv_graphics_pipeline_create_info *extra) { RADV_FROM_HANDLE(radv_pipeline_layout, pipeline_layout, pCreateInfo->layout); VkResult result; - pipeline->device = device; pipeline->graphics.last_vgt_api_stage = MESA_SHADER_NONE; /* Mark all states declared dynamic at pipeline creation. */ @@ -6560,10 +6569,9 @@ radv_graphics_pipeline_create_nonlegacy(VkDevice _device, VkPipelineCache _cache if (pipeline == NULL) return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); - vk_object_base_init(&device->vk, &pipeline->base, VK_OBJECT_TYPE_PIPELINE); - pipeline->type = RADV_PIPELINE_GRAPHICS; + radv_pipeline_init(device, pipeline, RADV_PIPELINE_GRAPHICS); - result = radv_pipeline_init(pipeline, device, cache, pCreateInfo, extra); + result = radv_graphics_pipeline_init(pipeline, device, cache, pCreateInfo, extra); if (result != VK_SUCCESS) { radv_pipeline_destroy(device, pipeline, pAllocator); return result; @@ -6772,10 +6780,8 @@ radv_compute_pipeline_create(VkDevice _device, VkPipelineCache _cache, return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); } - vk_object_base_init(&device->vk, &pipeline->base, VK_OBJECT_TYPE_PIPELINE); - pipeline->type = RADV_PIPELINE_COMPUTE; + radv_pipeline_init(device, pipeline, RADV_PIPELINE_COMPUTE); - pipeline->device = device; pipeline->graphics.last_vgt_api_stage = MESA_SHADER_NONE; pipeline->compute.rt_stack_sizes = rt_stack_sizes; pipeline->compute.group_count = rt_group_count; diff --git a/src/amd/vulkan/radv_pipeline_rt.c b/src/amd/vulkan/radv_pipeline_rt.c index 57a369750c3..6e7d30dd625 100644 --- a/src/amd/vulkan/radv_pipeline_rt.c +++ b/src/amd/vulkan/radv_pipeline_rt.c @@ -100,8 +100,7 @@ radv_rt_pipeline_library_create(VkDevice _device, VkPipelineCache _cache, if (pipeline == NULL) return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); - vk_object_base_init(&device->vk, &pipeline->base, VK_OBJECT_TYPE_PIPELINE); - pipeline->type = RADV_PIPELINE_LIBRARY; + radv_pipeline_init(device, pipeline, RADV_PIPELINE_LIBRARY); VkRayTracingPipelineCreateInfoKHR local_create_info = radv_create_merged_rt_create_info(pCreateInfo); diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 963af6e84c5..9906b792537 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -1961,6 +1961,9 @@ struct radv_graphics_pipeline_create_info { uint32_t custom_blend_mode; }; +void radv_pipeline_init(struct radv_device *device, struct radv_pipeline *pipeline, + enum radv_pipeline_type type); + VkResult radv_graphics_pipeline_create(VkDevice device, VkPipelineCache cache, const VkGraphicsPipelineCreateInfo *pCreateInfo, const struct radv_graphics_pipeline_create_info *extra,