From 01d17481308a74c347b68136bb25d9a8f6624ab6 Mon Sep 17 00:00:00 2001 From: Karmjit Mahil Date: Thu, 2 Oct 2025 11:18:49 +0100 Subject: [PATCH] tu: Add VK_EXT_zero_initialize_device_memory Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/14023 Part-of: --- docs/features.txt | 2 +- src/freedreno/vulkan/tu_cmd_buffer.cc | 3 ++- src/freedreno/vulkan/tu_device.cc | 4 ++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/features.txt b/docs/features.txt index a6af0c2c6bf..3c4b515526d 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -672,7 +672,7 @@ Khronos extensions that are not part of any Vulkan version: VK_EXT_vertex_attribute_divisor DONE (anv, dzn, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn) VK_EXT_vertex_input_dynamic_state DONE (anv, hk, lvp, nvk, panvk, radv, tu, vn) VK_EXT_ycbcr_image_arrays DONE (anv, hasvk, hk, lvp, nvk, panvk/v10+, radv, vn) - VK_EXT_zero_initialize_device_memory DONE (lvp, nvk, pvr, radv) + VK_EXT_zero_initialize_device_memory DONE (lvp, nvk, pvr, radv, tu) VK_ANDROID_external_memory_android_hardware_buffer DONE (anv, lvp, panvk, radv, tu, v3dv, vn) VK_ANDROID_native_buffer DONE (anv, lvp, panvk, radv, tu, v3dv, vn) VK_GOOGLE_decorate_string DONE (anv, hasvk, hk, lvp, nvk, panvk, radv, tu, vn) diff --git a/src/freedreno/vulkan/tu_cmd_buffer.cc b/src/freedreno/vulkan/tu_cmd_buffer.cc index 1c20193a470..941d52626eb 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.cc +++ b/src/freedreno/vulkan/tu_cmd_buffer.cc @@ -8408,7 +8408,8 @@ tu_barrier(struct tu_cmd_buffer *cmd, bool sparse_aliasing = image->vk.create_flags & VK_BUFFER_CREATE_SPARSE_ALIASED_BIT; - if (old_layout == VK_IMAGE_LAYOUT_UNDEFINED) { + if (old_layout == VK_IMAGE_LAYOUT_UNDEFINED || + old_layout == VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT) { /* The underlying memory for this image may have been used earlier * within the same queue submission for a different image, which * means that there may be old, stale cache entries which are in the diff --git a/src/freedreno/vulkan/tu_device.cc b/src/freedreno/vulkan/tu_device.cc index 5b3cf87d99d..db5be3f2658 100644 --- a/src/freedreno/vulkan/tu_device.cc +++ b/src/freedreno/vulkan/tu_device.cc @@ -335,6 +335,7 @@ get_device_extensions(const struct tu_physical_device *device, .EXT_transform_feedback = true, .EXT_vertex_attribute_divisor = true, .EXT_vertex_input_dynamic_state = true, + .EXT_zero_initialize_device_memory = true, /* For Graphics Flight Recorder (GFR) */ .AMD_buffer_marker = true, @@ -804,6 +805,9 @@ tu_get_features(struct tu_physical_device *pdevice, features->unifiedImageLayouts = true; features->unifiedImageLayoutsVideo = false; + /* VK_EXT_zero_initialize_device_memory */ + features->zeroInitializeDeviceMemory = true; + /* VK_VALVE_fragment_density_map_layered */ features->fragmentDensityMapLayered = true;