anv: move astc_emu to use descriptors2 calls

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26842>
This commit is contained in:
Iván Briano 2023-12-14 15:59:43 -08:00 committed by Marge Bot
parent ce6899d804
commit b7c4fe54cb
2 changed files with 52 additions and 15 deletions

View file

@ -294,12 +294,28 @@ astc_emu_flush_denorm_slice(struct anv_cmd_buffer *cmd_buffer,
anv_CmdBindPipeline(cmd_buffer_, VK_PIPELINE_BIND_POINT_COMPUTE,
astc_emu->pipeline);
anv_CmdPushConstants(cmd_buffer_, astc_emu->pipeline_layout,
VK_SHADER_STAGE_COMPUTE_BIT, 0,
sizeof(push_const), push_const);
anv_CmdBindDescriptorSets(cmd_buffer_, VK_PIPELINE_BIND_POINT_COMPUTE,
astc_emu->pipeline_layout, 0, 1, &set,
0, NULL);
VkPushConstantsInfoKHR push_info = {
.sType = VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR,
.layout = astc_emu->pipeline_layout,
.stageFlags = VK_SHADER_STAGE_COMPUTE_BIT,
.offset = 0,
.size = sizeof(push_const),
.pValues = push_const,
};
anv_CmdPushConstants2KHR(cmd_buffer_, &push_info);
VkBindDescriptorSetsInfoKHR bind_info = {
.sType = VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR,
.stageFlags = VK_SHADER_STAGE_COMPUTE_BIT,
.layout = astc_emu->pipeline_layout,
.firstSet = 0,
.descriptorSetCount = 1,
.pDescriptorSets = &set,
.dynamicOffsetCount = 0,
.pDynamicOffsets = NULL,
};
anv_CmdBindDescriptorSets2KHR(cmd_buffer_, &bind_info);
/* each workgroup processes 8x8 texel blocks */
rect.extent.width = DIV_ROUND_UP(rect.extent.width, 8);
@ -348,9 +364,18 @@ astc_emu_decompress_slice(struct anv_cmd_buffer *cmd_buffer,
writes.descriptor_set);
VkDescriptorSet set = anv_descriptor_set_to_handle(&push_set.set);
anv_CmdBindDescriptorSets(cmd_buffer_, VK_PIPELINE_BIND_POINT_COMPUTE,
astc_emu->texcompress->p_layout, 0, 1, &set,
0, NULL);
VkBindDescriptorSetsInfoKHR bind_info = {
.sType = VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR,
.stageFlags = VK_SHADER_STAGE_COMPUTE_BIT,
.layout = astc_emu->texcompress->p_layout,
.firstSet = 0,
.descriptorSetCount = 1,
.pDescriptorSets = &set,
.dynamicOffsetCount = 0,
.pDynamicOffsets = NULL,
};
anv_CmdBindDescriptorSets2KHR(cmd_buffer_, &bind_info);
const uint32_t push_const[] = {
rect.offset.x,
@ -361,9 +386,15 @@ astc_emu_decompress_slice(struct anv_cmd_buffer *cmd_buffer,
vk_format_get_blockheight(astc_format),
false, /* we don't use VK_IMAGE_VIEW_TYPE_3D */
};
anv_CmdPushConstants(cmd_buffer_, astc_emu->texcompress->p_layout,
VK_SHADER_STAGE_COMPUTE_BIT, 0,
sizeof(push_const), push_const);
VkPushConstantsInfoKHR push_info = {
.sType = VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR,
.layout = astc_emu->texcompress->p_layout,
.stageFlags = VK_SHADER_STAGE_COMPUTE_BIT,
.offset = 0,
.size = sizeof(push_const),
.pValues = push_const,
};
anv_CmdPushConstants2KHR(cmd_buffer_, &push_info);
/* each workgroup processes 2x2 texel blocks */
rect.extent.width = DIV_ROUND_UP(rect.extent.width, 2);

View file

@ -1370,8 +1370,14 @@ anv_cmd_buffer_restore_state(struct anv_cmd_buffer *cmd_buffer,
}
if (state->flags & ANV_CMD_SAVED_STATE_PUSH_CONSTANTS) {
anv_CmdPushConstants(cmd_buffer_, VK_NULL_HANDLE, stage_flags, 0,
sizeof(state->push_constants),
state->push_constants);
VkPushConstantsInfoKHR push_info = {
.sType = VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR,
.layout = VK_NULL_HANDLE,
.stageFlags = stage_flags,
.offset = 0,
.size = sizeof(state->push_constants),
.pValues = state->push_constants,
};
anv_CmdPushConstants2KHR(cmd_buffer_, &push_info);
}
}