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); +}