kk: Enable VK_(EXT/KHR)_robustness2 and VK_EXT_pipeline_robustness

Enable all functionality, and make consistent use of non-EXT enum definitions.

Reviewed-by: Aitor Camacho <aitor@lunarg.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41313>
This commit is contained in:
squidbus 2026-04-30 20:19:46 -07:00 committed by Marge Bot
parent cccf953545
commit 829130daad
5 changed files with 27 additions and 18 deletions

View file

@ -534,7 +534,7 @@ Vulkan 1.4 -- all DONE: anv, hk, lvp, nvk, panvk/v10+, radv/gfx8+, tu/a7xx+, vn
VK_KHR_vertex_attribute_divisor DONE (anv, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
VK_EXT_host_image_copy DONE (anv, lvp, nvk/Turing+, panvk, radv/gfx10+, tu, vn)
VK_EXT_pipeline_protected_access DONE (anv/gfx12+, radv, vn)
VK_EXT_pipeline_robustness DONE (anv, lvp, nvk, panvk, radv, v3dv, tu, vn)
VK_EXT_pipeline_robustness DONE (anv, kk, lvp, nvk, panvk, radv, v3dv, tu, vn)
Khronos extensions that are not part of any Vulkan version:
@ -576,7 +576,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, v3dv, vn)
VK_KHR_robustness2 DONE (anv, hasvk, hk, kk, 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_constant_data DONE (radv)
@ -680,7 +680,7 @@ Khronos extensions that are not part of any Vulkan version:
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_rgba10x6_formats DONE (panvk/v11+)
VK_EXT_robustness2 DONE (anv, hasvk, hk, lvp, nvk, panvk/v10+, pvr, radv, tu, v3dv, vn)
VK_EXT_robustness2 DONE (anv, hasvk, hk, kk, 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, panvk, radv, tu, vn)
VK_EXT_shader_atomic_float2 DONE (anv, lvp, radv, vn)

View file

@ -775,10 +775,10 @@ kk_nir_lower_descriptors(nir_shader *nir,
struct lower_descriptors_ctx ctx = {
.clamp_desc_array_bounds =
rs->storage_buffers !=
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT ||
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED ||
rs->uniform_buffers !=
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT ||
rs->images != VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT,
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED ||
rs->images != VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED,
.ssbo_addr_format = kk_buffer_addr_format(rs->storage_buffers),
.ubo_addr_format = kk_buffer_addr_format(rs->uniform_buffers),
};

View file

@ -126,10 +126,12 @@ kk_get_device_extensions(const struct kk_instance *instance,
.EXT_global_priority = true,
.EXT_global_priority_query = true,
.EXT_index_type_uint8 = true,
.EXT_pipeline_robustness = true,
.EXT_vertex_attribute_divisor = true,
/* Optional extensions */
.KHR_calibrated_timestamps = true,
.KHR_robustness2 = true,
.KHR_shader_maximal_reconvergence = true,
.KHR_shader_relaxed_extended_instruction = true,
.KHR_shader_subgroup_uniform_control_flow = true,
@ -148,6 +150,7 @@ kk_get_device_extensions(const struct kk_instance *instance,
.EXT_multi_draw = true,
.EXT_mutable_descriptor_type = true,
.EXT_post_depth_coverage = true,
.EXT_robustness2 = true,
.EXT_shader_atomic_float = true,
.EXT_shader_replicated_composites = true,
.EXT_shader_subgroup_ballot = true,
@ -288,6 +291,7 @@ kk_get_device_features(
/* Vulkan 1.4 */
.globalPriorityQuery = true,
.indexTypeUint8 = true,
.pipelineRobustness = true,
.pushDescriptor = true,
.shaderSubgroupRotate = true,
.shaderSubgroupRotateClustered = true,
@ -297,6 +301,11 @@ kk_get_device_features(
/* VK_EXT_mutable_descriptor_type */
.mutableDescriptorType = true,
/* VK_KHR_robustness2 */
.robustBufferAccess2 = true,
.robustImageAccess2 = true,
.nullDescriptor = true,
/* VK_KHR_shader_expect_assume */
.shaderExpectAssume = true,
@ -644,13 +653,13 @@ kk_get_device_properties(const struct kk_physical_device *pdev,
/* VK_EXT_pipeline_robustness */
.defaultRobustnessStorageBuffers =
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT,
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED,
.defaultRobustnessUniformBuffers =
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT,
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED,
.defaultRobustnessVertexInputs =
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT,
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED,
.defaultRobustnessImages =
VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT,
VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2,
/* VK_EXT_physical_device_drm gets populated later */
@ -658,7 +667,7 @@ kk_get_device_properties(const struct kk_physical_device *pdev,
.provokingVertexModePerPipeline = true,
.transformFeedbackPreservesTriangleFanProvokingVertex = true,
/* VK_EXT_robustness2 */
/* VK_KHR_robustness2 */
.robustStorageBufferAccessSizeAlignment = KK_SSBO_BOUNDS_CHECK_ALIGNMENT,
.robustUniformBufferAccessSizeAlignment = KK_MIN_UBO_ALIGNMENT,

View file

@ -41,7 +41,7 @@ static const struct vk_pipeline_robustness_state rs_all_supported = {
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,
.storage_buffers =
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,
.images = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT,
.images = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2,
};
static struct spirv_to_nir_options
@ -755,9 +755,9 @@ kk_compile_shader(struct kk_device *dev, struct vk_shader_compile_info *info,
}
static const struct vk_pipeline_robustness_state rs_none = {
.uniform_buffers = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT,
.storage_buffers = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT,
.images = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT,
.uniform_buffers = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED,
.storage_buffers = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED,
.images = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2,
};
VkResult

View file

@ -92,10 +92,10 @@ static inline nir_address_format
kk_buffer_addr_format(VkPipelineRobustnessBufferBehaviorEXT robustness)
{
switch (robustness) {
case VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT:
case VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED:
return nir_address_format_64bit_global_32bit_offset;
case VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT:
case VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT:
case VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS:
case VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2:
return nir_address_format_64bit_bounded_global;
default:
UNREACHABLE("Invalid robust buffer access behavior");