From eb0b1c36f2e4fd447d8445e15ed13c79fa0f0b6a Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Mon, 26 Aug 2024 11:40:56 +0200 Subject: [PATCH] panvk: Move CmdPushConstants2KHR to panvk_vX_cmd_push_constant.c Turns out the panvk_cmd_buffer structures for CSF/JM are similar enough to make CmdPushConstants2KHR() generic. Let's move this function out of the JM specific code. Signed-off-by: Boris Brezillon Reviewed-by: Rebecca Mckeever Reviewed-by: Mary Guillemard Reviewed-by: Lars-Ivar Hesselberg Simonsen Reviewed-by: John Anthony Acked-by: Erik Faye-Lund Part-of: --- src/panfrost/vulkan/jm/panvk_vX_cmd_buffer.c | 16 ------------ src/panfrost/vulkan/meson.build | 1 + src/panfrost/vulkan/panvk_cmd_push_constant.h | 7 ------ .../vulkan/panvk_vX_cmd_push_constant.c | 25 +++++++++++++++++++ 4 files changed, 26 insertions(+), 23 deletions(-) create mode 100644 src/panfrost/vulkan/panvk_vX_cmd_push_constant.c diff --git a/src/panfrost/vulkan/jm/panvk_vX_cmd_buffer.c b/src/panfrost/vulkan/jm/panvk_vX_cmd_buffer.c index 19926b77695..b2ae88849e2 100644 --- a/src/panfrost/vulkan/jm/panvk_vX_cmd_buffer.c +++ b/src/panfrost/vulkan/jm/panvk_vX_cmd_buffer.c @@ -440,19 +440,3 @@ panvk_per_arch(BeginCommandBuffer)(VkCommandBuffer commandBuffer, return VK_SUCCESS; } - -VKAPI_ATTR void VKAPI_CALL -panvk_per_arch(CmdPushConstants2KHR)( - VkCommandBuffer commandBuffer, - const VkPushConstantsInfoKHR *pPushConstantsInfo) -{ - VK_FROM_HANDLE(panvk_cmd_buffer, cmdbuf, commandBuffer); - - if (pPushConstantsInfo->stageFlags & VK_SHADER_STAGE_ALL_GRAPHICS) - cmdbuf->state.gfx.push_uniforms = 0; - - if (pPushConstantsInfo->stageFlags & VK_SHADER_STAGE_COMPUTE_BIT) - cmdbuf->state.compute.push_uniforms = 0; - - panvk_cmd_push_constants(&cmdbuf->state.push_constants, pPushConstantsInfo); -} diff --git a/src/panfrost/vulkan/meson.build b/src/panfrost/vulkan/meson.build index 92dc24f6df5..be7a6ca51b9 100644 --- a/src/panfrost/vulkan/meson.build +++ b/src/panfrost/vulkan/meson.build @@ -63,6 +63,7 @@ common_per_arch_files = [ 'panvk_vX_buffer_view.c', 'panvk_vX_cmd_desc_state.c', 'panvk_vX_cmd_meta.c', + 'panvk_vX_cmd_push_constant.c', 'panvk_vX_descriptor_set.c', 'panvk_vX_descriptor_set_layout.c', 'panvk_vX_device.c', diff --git a/src/panfrost/vulkan/panvk_cmd_push_constant.h b/src/panfrost/vulkan/panvk_cmd_push_constant.h index 397bff3d8ed..5cdd3953659 100644 --- a/src/panfrost/vulkan/panvk_cmd_push_constant.h +++ b/src/panfrost/vulkan/panvk_cmd_push_constant.h @@ -35,11 +35,4 @@ panvk_cmd_prepare_push_uniforms(struct pan_pool *desc_pool_base, return push_uniforms.gpu; } -static inline void -panvk_cmd_push_constants(struct panvk_push_constant_state *push, - const VkPushConstantsInfoKHR *info) -{ - memcpy(push->data + info->offset, info->pValues, info->size); -} - #endif diff --git a/src/panfrost/vulkan/panvk_vX_cmd_push_constant.c b/src/panfrost/vulkan/panvk_vX_cmd_push_constant.c new file mode 100644 index 00000000000..ed711548ee7 --- /dev/null +++ b/src/panfrost/vulkan/panvk_vX_cmd_push_constant.c @@ -0,0 +1,25 @@ +/* + * Copyright © 2024 Collabora Ltd. + * SPDX-License-Identifier: MIT + */ + +#include "panvk_cmd_buffer.h" +#include "panvk_cmd_push_constant.h" +#include "panvk_entrypoints.h" + +VKAPI_ATTR void VKAPI_CALL +panvk_per_arch(CmdPushConstants2KHR)( + VkCommandBuffer commandBuffer, + const VkPushConstantsInfoKHR *pPushConstantsInfo) +{ + VK_FROM_HANDLE(panvk_cmd_buffer, cmdbuf, commandBuffer); + + if (pPushConstantsInfo->stageFlags & VK_SHADER_STAGE_ALL_GRAPHICS) + cmdbuf->state.gfx.push_uniforms = 0; + + if (pPushConstantsInfo->stageFlags & VK_SHADER_STAGE_COMPUTE_BIT) + cmdbuf->state.compute.push_uniforms = 0; + + memcpy(cmdbuf->state.push_constants.data + pPushConstantsInfo->offset, + pPushConstantsInfo->pValues, pPushConstantsInfo->size); +}