tu: Expose VK_KHR_workgroup_memory_explicit_layout

It's all done for us in NIR.

Signed-off-by: Valentine Burley <valentine.burley@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29346>
This commit is contained in:
Valentine Burley
2024-03-24 19:57:35 +00:00
committed by Marge Bot
parent 07c6459cd8
commit 10c64ee63a
3 changed files with 12 additions and 3 deletions

View File

@@ -551,7 +551,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_KHR_swapchain_mutable_format DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
VK_KHR_vertex_attribute_divisor DONE (anv, nvk, radv, tu, v3dv)
VK_KHR_wayland_surface DONE (anv, dzn, lvp, nvk, panvk, radv, tu, v3dv, vn)
VK_KHR_workgroup_memory_explicit_layout DONE (anv, nvk, hasvk, radv, v3dv)
VK_KHR_workgroup_memory_explicit_layout DONE (anv, nvk, hasvk, radv, tu, v3dv)
VK_KHR_win32_keyed_mutex not started
VK_KHR_win32_surface DONE (dzn, lvp)
VK_KHR_xcb_surface DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)

View File

@@ -222,6 +222,7 @@ get_device_extensions(const struct tu_physical_device *device,
.KHR_variable_pointers = true,
.KHR_vertex_attribute_divisor = true,
.KHR_vulkan_memory_model = true,
.KHR_workgroup_memory_explicit_layout = true,
.KHR_zero_initialize_workgroup_memory = true,
.EXT_4444_formats = true,
@@ -493,6 +494,12 @@ tu_get_features(struct tu_physical_device *pdevice,
features->vertexAttributeInstanceRateDivisor = true;
features->vertexAttributeInstanceRateZeroDivisor = true;
/* VK_KHR_workgroup_memory_explicit_layout */
features->workgroupMemoryExplicitLayout = true;
features->workgroupMemoryExplicitLayoutScalarBlockLayout = true;
features->workgroupMemoryExplicitLayout8BitAccess = true;
features->workgroupMemoryExplicitLayout16BitAccess = true;
/* VK_EXT_4444_formats */
features->formatA4R4G4B4 = true;
features->formatA4B4G4R4 = true;

View File

@@ -2409,8 +2409,10 @@ tu_shader_create(struct tu_device *dev,
nir_address_format_64bit_global);
if (nir->info.stage == MESA_SHADER_COMPUTE) {
NIR_PASS_V(nir, nir_lower_vars_to_explicit_types,
nir_var_mem_shared, shared_type_info);
if (!nir->info.shared_memory_explicit_layout) {
NIR_PASS_V(nir, nir_lower_vars_to_explicit_types,
nir_var_mem_shared, shared_type_info);
}
NIR_PASS_V(nir, nir_lower_explicit_io,
nir_var_mem_shared,
nir_address_format_32bit_offset);