From 9556812f0ea0017b3010c12c08bf42680da5bf1a Mon Sep 17 00:00:00 2001 From: Daivik Bhatia Date: Sun, 25 Jan 2026 06:52:33 +0530 Subject: [PATCH] v3dv: Enable VK_KHR_robustness2 This enables the robustImageAccess2 feature for VK_KHR_robustness2 Reviewed-by: Iago Toral Quiroga Part-of: --- docs/features.txt | 4 ++-- src/broadcom/ci/broadcom-rpi4-skips.txt | 1 - src/broadcom/ci/broadcom-rpi5-skips.txt | 1 - src/broadcom/vulkan/v3dv_device.c | 12 +++++++++++- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/docs/features.txt b/docs/features.txt index ec6bba81fd2..fe8c46dfe13 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -573,7 +573,7 @@ Khronos extensions that are not part of any Vulkan version: VK_KHR_ray_tracing_maintenance1 DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, tu/a740+, vn) VK_KHR_ray_tracing_pipeline DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, vn) VK_KHR_ray_tracing_position_fetch DONE (anv, lvp, radv/gfx10.3+, vn) - VK_KHR_robustness2 DONE (anv, hasvk, hk, lvp, nvk, panvk/v10+, pvr, radv, tu, vn) + VK_KHR_robustness2 DONE (anv, hasvk, hk, lvp, nvk, panvk/v10+, pvr, radv, tu, v3dv, vn) VK_KHR_shader_bfloat16 DONE (anv/gfx12.5+, radv/gfx12+, vn) VK_KHR_shader_clock DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, vn) VK_KHR_shader_fma DONE (vn) @@ -669,7 +669,7 @@ Khronos extensions that are not part of any Vulkan version: VK_EXT_provoking_vertex DONE (anv, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn) VK_EXT_queue_family_foreign DONE (anv, hasvk, hk, nvk, lvp, panvk, pvr, radv, tu, v3dv, vn) VK_EXT_rasterization_order_attachment_access DONE (lvp, tu, vn) - VK_EXT_robustness2 DONE (anv, hasvk, hk, lvp, nvk, panvk/v10+, pvr, radv, tu, vn) + VK_EXT_robustness2 DONE (anv, hasvk, hk, lvp, nvk, panvk/v10+, pvr, radv, tu, v3dv, vn) VK_EXT_sample_locations DONE (anv, hasvk, hk, nvk, radv, tu/a650+, vn, lavapipe) VK_EXT_shader_atomic_float DONE (anv, hasvk, lvp, radv, tu, vn) VK_EXT_shader_atomic_float2 DONE (anv, lvp, radv, vn) diff --git a/src/broadcom/ci/broadcom-rpi4-skips.txt b/src/broadcom/ci/broadcom-rpi4-skips.txt index 50856379d77..c21f162b974 100644 --- a/src/broadcom/ci/broadcom-rpi4-skips.txt +++ b/src/broadcom/ci/broadcom-rpi4-skips.txt @@ -60,7 +60,6 @@ dEQP-VK.protected_memory.* dEQP-VK.query_pool.statistics_query.* dEQP-VK.ray_query.* dEQP-VK.ray_tracing_pipeline.* -dEQP-VK.robustness.robustness2.* dEQP-VK.shader_object.rendering.* dEQP-VK.sparse_resources.* dEQP-VK.transform_feedback.* diff --git a/src/broadcom/ci/broadcom-rpi5-skips.txt b/src/broadcom/ci/broadcom-rpi5-skips.txt index ed2d2aea328..c73961f4214 100644 --- a/src/broadcom/ci/broadcom-rpi5-skips.txt +++ b/src/broadcom/ci/broadcom-rpi5-skips.txt @@ -80,7 +80,6 @@ dEQP-VK.protected_memory.* dEQP-VK.query_pool.statistics_query.* dEQP-VK.ray_query.* dEQP-VK.ray_tracing_pipeline.* -dEQP-VK.robustness.robustness2.* dEQP-VK.shader_object.rendering.* dEQP-VK.sparse_resources.* dEQP-VK.transform_feedback.* diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index 564d8545b82..36900d2a449 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -171,6 +171,7 @@ get_device_extensions(const struct v3dv_physical_device *device, .KHR_load_store_op_none = true, .KHR_performance_query = device->caps.perfmon, .KHR_relaxed_block_layout = true, + .KHR_robustness2 = true, .KHR_maintenance1 = true, .KHR_maintenance2 = true, .KHR_maintenance3 = true, @@ -229,6 +230,7 @@ get_device_extensions(const struct v3dv_physical_device *device, .EXT_pipeline_creation_cache_control = true, .EXT_pipeline_creation_feedback = true, .EXT_pipeline_robustness = true, + .EXT_robustness2 = true, .EXT_primitive_topology_list_restart = true, .EXT_private_data = true, .EXT_provoking_vertex = true, @@ -404,6 +406,9 @@ get_features(const struct v3dv_physical_device *physical_device, .shaderZeroInitializeWorkgroupMemory = true, .synchronization2 = true, .robustImageAccess = true, + .robustBufferAccess2 = false, + .robustImageAccess2 = true, + .nullDescriptor = false, .shaderIntegerDotProduct = true, /* VK_EXT_4444_formats */ @@ -1236,6 +1241,10 @@ get_device_properties(const struct v3dv_physical_device *device, .defaultRobustnessImages = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT, + /* VK_EXT_robustness2 */ + .robustStorageBufferAccessSizeAlignment = 1, + .robustUniformBufferAccessSizeAlignment = 1, + /* VkPhysicalDeviceMultiDrawPropertiesEXT */ .maxMultiDrawCount = 2048, @@ -1904,7 +1913,8 @@ v3dv_CreateDevice(VkPhysicalDevice physicalDevice, if (device->vk.enabled_features.robustBufferAccess) perf_debug("Device created with Robust Buffer Access enabled.\n"); - if (device->vk.enabled_features.robustImageAccess) + if (device->vk.enabled_features.robustImageAccess || + device->vk.enabled_features.robustImageAccess2) perf_debug("Device created with Robust Image Access enabled.\n");