From 2ec3b83f992b61df3fa786be011ad0cd1cacec86 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Mon, 5 May 2025 21:23:52 +0200 Subject: [PATCH] panvk: expose EXT_texel_buffer_alignment support This was mostly wired up, but we currently require an alignment of 64 for uniform texel buffers, because we're currently using plane-descriptors for this. We could lift that limitation by switching to buffer descriptors and use LD_CVT for the format-conversion, but that's a bigger change. Let's just fix up the aligntment and enable the extension for now. Reviewed-by: Olivia Lee Reviewed-by: Mary Guillemard Part-of: --- docs/features.txt | 2 +- docs/relnotes/new_features.txt | 1 + src/panfrost/vulkan/panvk_physical_device.c | 8 ++++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/features.txt b/docs/features.txt index 99e9c9952f2..a284bf1f6be 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -503,7 +503,7 @@ Vulkan 1.3 -- all DONE: anv, hk, lvp, nvk, radv, tu, vn, v3dv VK_EXT_image_robustness DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn) VK_EXT_shader_demote_to_helper_invocation DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn) VK_EXT_subgroup_size_control DONE (anv, hasvk, lvp, nvk, panvk/v10+, radv, tu, v3dv, vn) - VK_EXT_texel_buffer_alignment DONE (anv, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn) + VK_EXT_texel_buffer_alignment DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn) VK_EXT_texture_compression_astc_hdr DONE (vn) VK_EXT_tooling_info DONE (anv, hasvk, nvk, panvk, pvr, radv, tu, v3dv, vn) VK_EXT_ycbcr_2plane_444_formats DONE (anv, lvp, nvk, panvk/v10+, vn) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index 060e178409e..acc15a89cf5 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -24,3 +24,4 @@ VK_KHR_robustness2 on RADV VK_EXT_zero_initialize_device_memory on RADV and NVK VK_EXT_primitive_topology_list_restart on panvk VK_EXT_image_2d_view_of_3d on panvk +VK_EXT_texel_buffer_alignment on panvk diff --git a/src/panfrost/vulkan/panvk_physical_device.c b/src/panfrost/vulkan/panvk_physical_device.c index 700588d9db7..c1054d45278 100644 --- a/src/panfrost/vulkan/panvk_physical_device.c +++ b/src/panfrost/vulkan/panvk_physical_device.c @@ -317,6 +317,7 @@ get_device_extensions(const struct panvk_physical_device *device, .EXT_shader_demote_to_helper_invocation = true, .EXT_shader_replicated_composites = true, .EXT_subgroup_size_control = has_vk1_1, + .EXT_texel_buffer_alignment = true, .EXT_tooling_info = true, .EXT_vertex_attribute_divisor = true, .EXT_vertex_input_dynamic_state = true, @@ -584,6 +585,9 @@ get_features(const struct panvk_physical_device *device, /* VK_EXT_shader_replicated_composites */ .shaderReplicatedComposites = true, + /* VK_EXT_texel_buffer_alignment */ + .texelBufferAlignment = true, + /* VK_EXT_ycbcr_2plane_444_formats */ .ycbcr2plane444Formats = arch >= 10, @@ -1024,8 +1028,8 @@ get_device_properties(const struct panvk_instance *instance, /* XXX: VK_EXT_texel_buffer_alignment */ .storageTexelBufferOffsetAlignmentBytes = 64, .storageTexelBufferOffsetSingleTexelAlignment = false, - .uniformTexelBufferOffsetAlignmentBytes = 4, - .uniformTexelBufferOffsetSingleTexelAlignment = true, + .uniformTexelBufferOffsetAlignmentBytes = 64, + .uniformTexelBufferOffsetSingleTexelAlignment = false, /* VK_KHR_maintenance4 */ .maxBufferSize = 1 << 30,