Merge vk-gl-cts/dev/VK_KHR_ray_tracing_maintenance1 into vk-gl-cts/main
Change-Id: I1b78dec2819e963937d831f1b8c3e11e2428184a
diff --git a/android/cts/main/vk-master-2022-03-01/api.txt b/android/cts/main/vk-master-2022-03-01/api.txt
index 0583ceb..99775ce 100644
--- a/android/cts/main/vk-master-2022-03-01/api.txt
+++ b/android/cts/main/vk-master-2022-03-01/api.txt
@@ -12,10 +12,15 @@
dEQP-VK.api.device_init.create_device_global_priority_khr.basic
dEQP-VK.api.device_init.create_device_global_priority_query.basic
dEQP-VK.api.device_init.create_device_global_priority_query_khr.basic
+dEQP-VK.api.device_init.create_device_unsupported_features.ray_tracing_maintenance1_features_khr
dEQP-VK.api.device_init.create_device_unsupported_features.graphics_pipeline_library_features_ext
+dEQP-VK.api.device_init.create_device_unsupported_features.image_compression_control_features_ext
+dEQP-VK.api.device_init.create_device_unsupported_features.pipeline_properties_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.primitives_generated_query_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.image2_d_view_of3_d_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.descriptor_set_host_mapping_features_valve
+dEQP-VK.api.device_init.create_device_unsupported_features.image_compression_control_swapchain_features_ext
+dEQP-VK.api.device_init.create_device_unsupported_features.subpass_merge_feedback_features_ext
dEQP-VK.api.device_init.create_device_queue2_two_queues.basic
dEQP-VK.api.device_init.create_device_queue2_all_protected.basic
dEQP-VK.api.device_init.create_device_queue2_all_unprotected.basic
diff --git a/android/cts/main/vk-master-2022-03-01/ray-tracing-pipeline.txt b/android/cts/main/vk-master-2022-03-01/ray-tracing-pipeline.txt
index d762c4f..847d88b 100644
--- a/android/cts/main/vk-master-2022-03-01/ray-tracing-pipeline.txt
+++ b/android/cts/main/vk-master-2022-03-01/ray-tracing-pipeline.txt
@@ -1,3 +1,47 @@
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.0_0_0
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.0_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.1_0_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.1_1_0
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.8_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.8_8_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.8_8_8
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.11_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.11_13_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.11_13_5
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.0_0_0
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.0_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.1_0_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.1_1_0
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.8_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.8_8_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.8_8_8
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.11_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.11_13_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.11_13_5
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.ahit.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.ahit.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.ahit.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.ahit.16_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.chit.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.chit.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.chit.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.chit.16_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.isec.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.isec.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.isec.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.isec.16_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.ahit.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.ahit.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.ahit.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.ahit.16_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.chit.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.chit.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.chit.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.chit.16_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.isec.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.isec.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.isec.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.isec.16_bits_reverse
dEQP-VK.ray_tracing_pipeline.acceleration_structures.device_compability_khr.cpu_built.top
dEQP-VK.ray_tracing_pipeline.acceleration_structures.device_compability_khr.cpu_built.bottom
dEQP-VK.ray_tracing_pipeline.acceleration_structures.device_compability_khr.gpu_built.top
@@ -8,6 +52,20 @@
dEQP-VK.ray_tracing_pipeline.acceleration_structures.header_bottom_address.gpu_built.the_same_instances
dEQP-VK.ray_tracing_pipeline.acceleration_structures.header_bottom_address.gpu_built.different_instances
dEQP-VK.ray_tracing_pipeline.acceleration_structures.header_bottom_address.gpu_built.mix_same_diff_instances
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.cpu.memory.size
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.cpu.memory.pointer_count
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.cpu.buffer.size
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.cpu.buffer.pointer_count
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.gpu.memory.size
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.gpu.memory.pointer_count
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.gpu.buffer.size
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.gpu.buffer.pointer_count
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.cpu.stage_as_copy_bit
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.cpu.stage_all_transfer
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.cpu.access_sbt_read
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.stage_as_copy_bit
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.stage_all_transfer
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.access_sbt_read
dEQP-VK.ray_tracing_pipeline.misc.null_miss
dEQP-VK.ray_tracing_pipeline.inside_aabbs.chit.ray_end_tmax_zero.scaling_factor_0.rotation_0
dEQP-VK.ray_tracing_pipeline.inside_aabbs.chit.ray_end_tmax_zero.scaling_factor_0.rotation_1
@@ -681,3 +739,35 @@
dEQP-VK.ray_tracing_pipeline.pipeline_no_null_shaders_flag.cpu.tri_and_box.stride_5.offset_7.no_libs.any_or_chit_or_isect
dEQP-VK.ray_tracing_pipeline.pipeline_no_null_shaders_flag.cpu.tri_and_box.stride_5.offset_7.no_libs.any_or_chit
dEQP-VK.ray_tracing_pipeline.pipeline_no_null_shaders_flag.cpu.tri_and_box.stride_5.offset_7.no_libs.any_or_chit_or_miss
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_graphics.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_graphics.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_graphics.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_graphics.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_compute.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_compute.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_compute.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_compute.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_graphics.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_graphics.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_graphics.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_graphics.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_compute.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_compute.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_compute.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_compute.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_graphics.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_graphics.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_graphics.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_graphics.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_compute.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_compute.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_compute.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_compute.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_graphics.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_graphics.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_graphics.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_graphics.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_compute.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_compute.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_compute.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_compute.47x19x4
diff --git a/android/cts/main/vk-master/api.txt b/android/cts/main/vk-master/api.txt
index a9b4b49..dcad966 100644
--- a/android/cts/main/vk-master/api.txt
+++ b/android/cts/main/vk-master/api.txt
@@ -3874,6 +3874,7 @@
dEQP-VK.api.device_init.create_device_unsupported_features.present_id_features_khr
dEQP-VK.api.device_init.create_device_unsupported_features.shader_subgroup_uniform_control_flow_features_khr
dEQP-VK.api.device_init.create_device_unsupported_features.workgroup_memory_explicit_layout_features_khr
+dEQP-VK.api.device_init.create_device_unsupported_features.ray_tracing_maintenance1_features_khr
dEQP-VK.api.device_init.create_device_unsupported_features.transform_feedback_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.corner_sampled_image_features_nv
dEQP-VK.api.device_init.create_device_unsupported_features.astc_decode_features_ext
@@ -3918,6 +3919,7 @@
dEQP-VK.api.device_init.create_device_unsupported_features.ray_tracing_motion_blur_features_nv
dEQP-VK.api.device_init.create_device_unsupported_features.ycbcr2_plane444_formats_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.fragment_density_map2_features_ext
+dEQP-VK.api.device_init.create_device_unsupported_features.image_compression_control_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.4444_formats_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.rasterization_order_attachment_access_features_arm
dEQP-VK.api.device_init.create_device_unsupported_features.rgba10_x6_formats_features_ext
@@ -3928,6 +3930,7 @@
dEQP-VK.api.device_init.create_device_unsupported_features.subpass_shading_features_huawei
dEQP-VK.api.device_init.create_device_unsupported_features.invocation_mask_features_huawei
dEQP-VK.api.device_init.create_device_unsupported_features.external_memory_rdma_features_nv
+dEQP-VK.api.device_init.create_device_unsupported_features.pipeline_properties_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.extended_dynamic_state2_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.color_write_enable_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.primitives_generated_query_features_ext
@@ -3939,6 +3942,8 @@
dEQP-VK.api.device_init.create_device_unsupported_features.descriptor_set_host_mapping_features_valve
dEQP-VK.api.device_init.create_device_unsupported_features.fragment_density_map_offset_features_qcom
dEQP-VK.api.device_init.create_device_unsupported_features.linear_color_attachment_features_nv
+dEQP-VK.api.device_init.create_device_unsupported_features.image_compression_control_swapchain_features_ext
+dEQP-VK.api.device_init.create_device_unsupported_features.subpass_merge_feedback_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.acceleration_structure_features_khr
dEQP-VK.api.device_init.create_device_unsupported_features.ray_tracing_pipeline_features_khr
dEQP-VK.api.device_init.create_device_unsupported_features.ray_query_features_khr
diff --git a/android/cts/main/vk-master/ray-tracing-pipeline.txt b/android/cts/main/vk-master/ray-tracing-pipeline.txt
index 143d29d..6041e42 100644
--- a/android/cts/main/vk-master/ray-tracing-pipeline.txt
+++ b/android/cts/main/vk-master/ray-tracing-pipeline.txt
@@ -1058,6 +1058,26 @@
dEQP-VK.ray_tracing_pipeline.trace_rays_cmds.indirect_gpu.11_1_1
dEQP-VK.ray_tracing_pipeline.trace_rays_cmds.indirect_gpu.11_13_1
dEQP-VK.ray_tracing_pipeline.trace_rays_cmds.indirect_gpu.11_13_5
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.0_0_0
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.0_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.1_0_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.1_1_0
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.8_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.8_8_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.8_8_8
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.11_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.11_13_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.11_13_5
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.0_0_0
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.0_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.1_0_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.1_1_0
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.8_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.8_8_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.8_8_8
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.11_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.11_13_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.11_13_5
dEQP-VK.ray_tracing_pipeline.shader_binding_table.indexing_hit.sbt_offset_0.no_shaderrecord.0_0
dEQP-VK.ray_tracing_pipeline.shader_binding_table.indexing_hit.sbt_offset_0.no_shaderrecord.0_1
dEQP-VK.ray_tracing_pipeline.shader_binding_table.indexing_hit.sbt_offset_0.no_shaderrecord.0_2
@@ -7768,6 +7788,30 @@
dEQP-VK.ray_tracing_pipeline.acceleration_structures.instance_triangle_culling.gpu_built.index_uint32.notransform_ccw
dEQP-VK.ray_tracing_pipeline.acceleration_structures.instance_triangle_culling.gpu_built.index_uint32.notransform_nocull
dEQP-VK.ray_tracing_pipeline.acceleration_structures.instance_triangle_culling.gpu_built.index_uint32.notransform_ccw_nocull
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.ahit.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.ahit.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.ahit.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.ahit.16_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.chit.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.chit.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.chit.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.chit.16_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.isec.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.isec.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.isec.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.isec.16_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.ahit.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.ahit.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.ahit.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.ahit.16_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.chit.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.chit.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.chit.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.chit.16_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.isec.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.isec.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.isec.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.isec.16_bits_reverse
dEQP-VK.ray_tracing_pipeline.acceleration_structures.dynamic_indexing.dynamic_indexing
dEQP-VK.ray_tracing_pipeline.acceleration_structures.empty.cpu_built.index_none.inactive_triangles
dEQP-VK.ray_tracing_pipeline.acceleration_structures.empty.cpu_built.index_none.inactive_instances
@@ -7817,6 +7861,20 @@
dEQP-VK.ray_tracing_pipeline.acceleration_structures.header_bottom_address.gpu_built.the_same_instances
dEQP-VK.ray_tracing_pipeline.acceleration_structures.header_bottom_address.gpu_built.different_instances
dEQP-VK.ray_tracing_pipeline.acceleration_structures.header_bottom_address.gpu_built.mix_same_diff_instances
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.cpu.memory.size
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.cpu.memory.pointer_count
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.cpu.buffer.size
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.cpu.buffer.pointer_count
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.gpu.memory.size
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.gpu.memory.pointer_count
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.gpu.buffer.size
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.gpu.buffer.pointer_count
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.cpu.stage_as_copy_bit
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.cpu.stage_all_transfer
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.cpu.access_sbt_read
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.stage_as_copy_bit
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.stage_all_transfer
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.access_sbt_read
dEQP-VK.ray_tracing_pipeline.procedural_geometry.object_behind_bounding_boxes
dEQP-VK.ray_tracing_pipeline.procedural_geometry.triangle_in_between
dEQP-VK.ray_tracing_pipeline.indirect.build_structure
@@ -9537,3 +9595,35 @@
dEQP-VK.ray_tracing_pipeline.pipeline_no_null_shaders_flag.cpu.tri_and_box.stride_5.offset_7.no_libs.any_or_chit_or_isect
dEQP-VK.ray_tracing_pipeline.pipeline_no_null_shaders_flag.cpu.tri_and_box.stride_5.offset_7.no_libs.any_or_chit
dEQP-VK.ray_tracing_pipeline.pipeline_no_null_shaders_flag.cpu.tri_and_box.stride_5.offset_7.no_libs.any_or_chit_or_miss
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_graphics.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_graphics.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_graphics.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_graphics.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_compute.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_compute.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_compute.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_compute.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_graphics.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_graphics.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_graphics.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_graphics.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_compute.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_compute.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_compute.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_compute.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_graphics.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_graphics.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_graphics.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_graphics.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_compute.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_compute.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_compute.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_compute.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_graphics.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_graphics.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_graphics.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_graphics.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_compute.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_compute.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_compute.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_compute.47x19x4
diff --git a/external/fetch_sources.py b/external/fetch_sources.py
index 628809c..ba61065 100644
--- a/external/fetch_sources.py
+++ b/external/fetch_sources.py
@@ -304,18 +304,18 @@
GitRepo(
"https://github.com/KhronosGroup/glslang.git",
"git@github.com:KhronosGroup/glslang.git",
- "abbe466451ca975fecfdba453ef9073df52aefc5",
+ "14f6e2730457bac14a64cb3d962d0a3da8c15ae4",
"glslang",
removeTags = ["master-tot"]),
GitRepo(
"https://github.com/KhronosGroup/SPIRV-Headers.git",
"git@github.com:KhronosGroup/SPIRV-Headers.git",
- "4995a2f2723c401eb0ea3e10c81298906bf1422b",
+ "b765c355f488837ca4c77980ba69484f3ff277f5",
"spirv-headers"),
GitRepo(
"https://github.com/KhronosGroup/Vulkan-Docs.git",
- None,
- "2a31e99cbaa07dba4e2036c0bfe76aa3ebe8b2a4",
+ "git@github.com:KhronosGroup/Vulkan-Docs.git",
+ "71decb7f868d3891974eab139f03c7c6c87fea4d",
"vulkan-docs"),
GitRepo(
"https://github.com/google/amber.git",
@@ -324,7 +324,7 @@
"amber"),
GitRepo(
"https://github.com/open-source-parsers/jsoncpp.git",
- None,
+ "git@github.com:open-source-parsers/jsoncpp.git",
"9059f5cad030ba11d37818847443a53918c327b1",
"jsoncpp"),
]
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkApiExtensionDependencyInfo.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkApiExtensionDependencyInfo.inl
index dde3547..59f387e 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkApiExtensionDependencyInfo.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkApiExtensionDependencyInfo.inl
@@ -199,6 +199,10 @@
std::make_tuple(0, 1, 0, "VK_EXT_host_query_reset", "VK_KHR_get_physical_device_properties2"),
std::make_tuple(0, 1, 0, "VK_EXT_image_2d_view_of_3d", "VK_KHR_maintenance1"),
std::make_tuple(0, 1, 0, "VK_EXT_image_2d_view_of_3d", "VK_KHR_get_physical_device_properties2"),
+ std::make_tuple(0, 1, 0, "VK_EXT_image_compression_control_swapchain", "VK_EXT_image_compression_control"),
+ std::make_tuple(0, 1, 1, "VK_EXT_image_compression_control_swapchain", "VK_EXT_image_compression_control"),
+ std::make_tuple(0, 1, 2, "VK_EXT_image_compression_control_swapchain", "VK_EXT_image_compression_control"),
+ std::make_tuple(0, 1, 3, "VK_EXT_image_compression_control_swapchain", "VK_EXT_image_compression_control"),
std::make_tuple(0, 1, 0, "VK_EXT_image_drm_format_modifier", "VK_KHR_bind_memory2"),
std::make_tuple(0, 1, 0, "VK_EXT_image_drm_format_modifier", "VK_KHR_get_physical_device_properties2"),
std::make_tuple(0, 1, 0, "VK_EXT_image_drm_format_modifier", "VK_KHR_image_format_list"),
@@ -217,6 +221,7 @@
std::make_tuple(0, 1, 3, "VK_EXT_pageable_device_local_memory", "VK_EXT_memory_priority"),
std::make_tuple(0, 1, 0, "VK_EXT_pci_bus_info", "VK_KHR_get_physical_device_properties2"),
std::make_tuple(0, 1, 0, "VK_EXT_physical_device_drm", "VK_KHR_get_physical_device_properties2"),
+ std::make_tuple(0, 1, 0, "VK_EXT_pipeline_properties", "VK_KHR_get_physical_device_properties2"),
std::make_tuple(0, 1, 0, "VK_EXT_primitives_generated_query", "VK_EXT_transform_feedback"),
std::make_tuple(0, 1, 1, "VK_EXT_primitives_generated_query", "VK_EXT_transform_feedback"),
std::make_tuple(0, 1, 2, "VK_EXT_primitives_generated_query", "VK_EXT_transform_feedback"),
@@ -359,6 +364,9 @@
std::make_tuple(0, 1, 1, "VK_KHR_ray_query", "VK_KHR_acceleration_structure"),
std::make_tuple(0, 1, 2, "VK_KHR_ray_query", "VK_KHR_acceleration_structure"),
std::make_tuple(0, 1, 3, "VK_KHR_ray_query", "VK_KHR_acceleration_structure"),
+ std::make_tuple(0, 1, 1, "VK_KHR_ray_tracing_maintenance1", "VK_KHR_acceleration_structure"),
+ std::make_tuple(0, 1, 2, "VK_KHR_ray_tracing_maintenance1", "VK_KHR_acceleration_structure"),
+ std::make_tuple(0, 1, 3, "VK_KHR_ray_tracing_maintenance1", "VK_KHR_acceleration_structure"),
std::make_tuple(0, 1, 1, "VK_KHR_ray_tracing_pipeline", "VK_KHR_spirv_1_4"),
std::make_tuple(0, 1, 1, "VK_KHR_ray_tracing_pipeline", "VK_KHR_acceleration_structure"),
std::make_tuple(0, 1, 2, "VK_KHR_ray_tracing_pipeline", "VK_KHR_acceleration_structure"),
@@ -563,6 +571,8 @@
std::make_tuple(1, 0, "VK_EXT_headless_surface"),
std::make_tuple(1, 0, "VK_EXT_host_query_reset"),
std::make_tuple(1, 0, "VK_EXT_image_2d_view_of_3d"),
+ std::make_tuple(1, 0, "VK_EXT_image_compression_control"),
+ std::make_tuple(1, 0, "VK_EXT_image_compression_control_swapchain"),
std::make_tuple(1, 0, "VK_EXT_image_drm_format_modifier"),
std::make_tuple(1, 0, "VK_EXT_image_robustness"),
std::make_tuple(1, 0, "VK_EXT_image_view_min_lod"),
@@ -579,6 +589,7 @@
std::make_tuple(1, 0, "VK_EXT_physical_device_drm"),
std::make_tuple(1, 0, "VK_EXT_pipeline_creation_cache_control"),
std::make_tuple(1, 0, "VK_EXT_pipeline_creation_feedback"),
+ std::make_tuple(1, 0, "VK_EXT_pipeline_properties"),
std::make_tuple(1, 0, "VK_EXT_post_depth_coverage"),
std::make_tuple(1, 0, "VK_EXT_primitive_topology_list_restart"),
std::make_tuple(1, 0, "VK_EXT_primitives_generated_query"),
@@ -600,6 +611,7 @@
std::make_tuple(1, 0, "VK_EXT_shader_subgroup_vote"),
std::make_tuple(1, 0, "VK_EXT_shader_viewport_index_layer"),
std::make_tuple(1, 1, "VK_EXT_subgroup_size_control"),
+ std::make_tuple(1, 0, "VK_EXT_subpass_merge_feedback"),
std::make_tuple(1, 0, "VK_EXT_swapchain_colorspace"),
std::make_tuple(1, 0, "VK_EXT_texel_buffer_alignment"),
std::make_tuple(1, 0, "VK_EXT_texture_compression_astc_hdr"),
@@ -688,6 +700,7 @@
std::make_tuple(1, 0, "VK_KHR_present_wait"),
std::make_tuple(1, 0, "VK_KHR_push_descriptor"),
std::make_tuple(1, 1, "VK_KHR_ray_query"),
+ std::make_tuple(1, 1, "VK_KHR_ray_tracing_maintenance1"),
std::make_tuple(1, 1, "VK_KHR_ray_tracing_pipeline"),
std::make_tuple(1, 0, "VK_KHR_relaxed_block_layout"),
std::make_tuple(1, 0, "VK_KHR_sampler_mirror_clamp_to_edge"),
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkBasicTypes.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkBasicTypes.inl
index 91bf16e..9326685 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkBasicTypes.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkBasicTypes.inl
@@ -117,6 +117,7 @@
VK_THREAD_DONE_KHR = 1000268001,
VK_OPERATION_DEFERRED_KHR = 1000268002,
VK_OPERATION_NOT_DEFERRED_KHR = 1000268003,
+ VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000,
VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION,
@@ -711,6 +712,11 @@
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001,
VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000,
+ VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001,
+ VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002,
+ VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003,
+ VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT = 1000344000,
@@ -745,11 +751,14 @@
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = 1000370000,
VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV = 1000371000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001,
+ VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000,
VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX = 1000378000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000,
VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT = 1000382000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR = 1000386000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT = 1000391000,
VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT = 1000391001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000,
@@ -765,6 +774,11 @@
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001,
VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000,
+ VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT = 1000458001,
+ VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_INFO_EXT = 1000458002,
+ VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_INFO_EXT = 1000458003,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
@@ -927,6 +941,7 @@
VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2,
VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2,
VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3,
+ VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR,
VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES,
@@ -1402,19 +1417,21 @@
enum VkQueryType
{
- VK_QUERY_TYPE_OCCLUSION = 0,
- VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
- VK_QUERY_TYPE_TIMESTAMP = 2,
- VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR = 1000023000,
- VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004,
- VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000,
- VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000,
- VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001,
- VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000,
- VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000,
- VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR = 1000299000,
- VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000,
- VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF,
+ VK_QUERY_TYPE_OCCLUSION = 0,
+ VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
+ VK_QUERY_TYPE_TIMESTAMP = 2,
+ VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR = 1000023000,
+ VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004,
+ VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000,
+ VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000,
+ VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001,
+ VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000,
+ VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000,
+ VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR = 1000299000,
+ VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000,
+ VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000,
+ VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR = 1000386001,
+ VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF,
};
enum VkSharingMode
@@ -2478,6 +2495,26 @@
VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF,
};
+enum VkSubpassMergeStatusEXT
+{
+ VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0,
+ VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13,
+ VK_SUBPASS_MERGE_STATUS_EXT_LAST,
+ VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 0x7FFFFFFF,
+};
+
enum VkBuildAccelerationStructureModeKHR
{
VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR = 0,
@@ -3867,6 +3904,47 @@
};
typedef uint32_t VkGraphicsPipelineLibraryFlagsEXT;
+enum VkImageCompressionFlagBitsEXT
+{
+ VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 0x00000001,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 0x00000002,
+ VK_IMAGE_COMPRESSION_DISABLED_EXT = 0x00000004,
+ VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF,
+};
+typedef uint32_t VkImageCompressionFlagsEXT;
+
+enum VkImageCompressionFixedRateFlagBitsEXT
+{
+ VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 0x00000001,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 0x00000002,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 0x00000004,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 0x00000008,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 0x00000010,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 0x00000020,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 0x00000040,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 0x00000080,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 0x00000100,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 0x00000200,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 0x00000400,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 0x00000800,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 0x00001000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 0x00002000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 0x00004000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 0x00008000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 0x00010000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 0x00020000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 0x00040000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 0x00080000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 0x00100000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 0x00200000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 0x00400000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 0x00800000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF,
+};
+typedef uint32_t VkImageCompressionFixedRateFlagsEXT;
+
enum VkAccelerationStructureCreateFlagBitsKHR
{
VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 0x00000001,
@@ -3992,29 +4070,31 @@
enum VkVideoEncodeH264CapabilityFlagBitsEXT
{
- VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_BIT_EXT = 0x00000001,
- VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000002,
- VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT = 0x00000004,
- VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000008,
- VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000010,
- VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000020,
- VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000040,
- VK_VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXT = 0x00000080,
- VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00000100,
- VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXT = 0x00000200,
- VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXT = 0x00000400,
- VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00000800,
- VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00001000,
- VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00002000,
- VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00004000,
- VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00008000,
- VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00010000,
- VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00020000,
- VK_VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXT = 0x00040000,
- VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00080000,
- VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT = 0x00100000,
- VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT = 0x00200000,
- VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x00400000,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_ENABLED_BIT_EXT = 0x00000001,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_DISABLED_BIT_EXT = 0x00000002,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000004,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT = 0x00000008,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000010,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000040,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000080,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXT = 0x00000100,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00000200,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXT = 0x00000400,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXT = 0x00000800,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00001000,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00002000,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00004000,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00008000,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00010000,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00020000,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00040000,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXT = 0x00080000,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00100000,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT = 0x00200000,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT = 0x00400000,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x00800000,
+ VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x01000000,
VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF,
};
typedef uint32_t VkVideoEncodeH264CapabilityFlagsEXT;
@@ -4357,6 +4437,7 @@
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = 0x00100000ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI = 0x8000000000ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI = 0x10000000000ULL;
+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR = 0x10000000ULL;
typedef uint64_t VkAccessFlags2;
@@ -4423,6 +4504,7 @@
static const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000ULL;
static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000ULL;
static const VkAccessFlagBits2 VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI = 0x8000000000ULL;
+static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR = 0x10000000000ULL;
typedef uint64_t VkFormatFeatureFlags2;
@@ -4618,6 +4700,8 @@
#define VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME "VK_KHR_copy_commands2"
#define VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION 1
#define VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME "VK_KHR_format_feature_flags2"
+#define VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION 1
+#define VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_ray_tracing_maintenance1"
#define VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION 1
#define VK_KHR_MAINTENANCE_4_SPEC_VERSION 2
#define VK_KHR_MAINTENANCE_4_EXTENSION_NAME "VK_KHR_maintenance4"
@@ -4765,6 +4849,7 @@
#define VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION 1
#define VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION 1
#define VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION 1
+#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION 1
#define VK_EXT_4444_FORMATS_SPEC_VERSION 1
#define VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION 1
#define VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION 1
@@ -4777,6 +4862,7 @@
#define VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION 2
#define VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION 1
#define VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION 1
+#define VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION 1
#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION 1
#define VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION 1
#define VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION 1
@@ -4792,6 +4878,8 @@
#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION 1
#define VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION 1
#define VK_GOOGLE_SURFACELESS_QUERY_SPEC_VERSION 1
+#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION 1
+#define VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION 1
#define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13
#define VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION 1
#define VK_KHR_RAY_QUERY_SPEC_VERSION 1
@@ -4813,7 +4901,7 @@
#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_6 VK_MAKE_VIDEO_STD_VERSION(0, 9, 6)
#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_6
#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264_encode"
-#define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 6
+#define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 7
#define vulkan_video_codec_h265std 1
#define STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE 7
#define STD_VIDEO_H265_CPB_CNT_LIST_SIZE 32
@@ -4827,15 +4915,14 @@
#define STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS 64
#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE 3
#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE 128
-#define STD_VIDEO_H265_SPS_MAX_SUB_LAYERS 8
#define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE 19
#define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE 21
#define STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE 6
#define STD_VIDEO_H265_MAX_NUM_LIST_REF 15
#define STD_VIDEO_H265_MAX_CHROMA_PLANES 2
#define vulkan_video_codec_h265std_encode 1
-#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_0_9_6 VK_MAKE_VIDEO_STD_VERSION(0, 9, 6)
-#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_0_9_6
+#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_0_9_7 VK_MAKE_VIDEO_STD_VERSION(0, 9, 7)
+#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_0_9_7
#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265_encode"
#define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 7
#define vulkan_video_codec_h264std_decode 1
@@ -4846,9 +4933,9 @@
#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264_decode"
#define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 5
#define vulkan_video_codec_h265std_decode 1
-#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_0_9_6 VK_MAKE_VIDEO_STD_VERSION(0, 9, 6)
+#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_0_9_7 VK_MAKE_VIDEO_STD_VERSION(0, 9, 7)
#define STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE 8
-#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_0_9_6
+#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_0_9_7
#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265_decode"
#define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 3
#define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkConcreteDeviceInterface.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkConcreteDeviceInterface.inl
index a5c504d..6ad5021 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkConcreteDeviceInterface.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkConcreteDeviceInterface.inl
@@ -221,6 +221,7 @@
virtual VkResult getPipelineExecutableInternalRepresentationsKHR (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) const;
virtual void cmdWriteBufferMarker2AMD (VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker) const;
virtual void getQueueCheckpointData2NV (VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData) const;
+virtual void cmdTraceRaysIndirect2KHR (VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress) const;
virtual VkResult debugMarkerSetObjectTagEXT (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) const;
virtual VkResult debugMarkerSetObjectNameEXT (VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) const;
virtual void cmdDebugMarkerBeginEXT (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const;
@@ -311,11 +312,13 @@
virtual VkResult createIndirectCommandsLayoutNV (VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout) const;
virtual void destroyIndirectCommandsLayoutNV (VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator) const;
virtual void cmdSetFragmentShadingRateEnumNV (VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) const;
+virtual void getImageSubresourceLayout2EXT (VkDevice device, VkImage image, const VkImageSubresource2EXT* pSubresource, VkSubresourceLayout2EXT* pLayout) const;
virtual void cmdSetVertexInputEXT (VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, uint32_t vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) const;
virtual VkResult getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI (VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize) const;
virtual void cmdSubpassShadingHUAWEI (VkCommandBuffer commandBuffer) const;
virtual void cmdBindInvocationMaskHUAWEI (VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout) const;
virtual VkResult getMemoryRemoteAddressNV (VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress) const;
+virtual VkResult getPipelinePropertiesEXT (VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, VkBaseOutStructure* pPipelineProperties) const;
virtual void cmdSetPatchControlPointsEXT (VkCommandBuffer commandBuffer, uint32_t patchControlPoints) const;
virtual void cmdSetLogicOpEXT (VkCommandBuffer commandBuffer, VkLogicOp logicOp) const;
virtual void cmdSetColorWriteEnableEXT (VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkBool32* pColorWriteEnables) const;
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceDriverImpl.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceDriverImpl.inl
index 4ae54e7..2ada51e 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceDriverImpl.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceDriverImpl.inl
@@ -1094,6 +1094,11 @@
m_vk.getQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData);
}
+void DeviceDriver::cmdTraceRaysIndirect2KHR (VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress) const
+{
+ m_vk.cmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress);
+}
+
VkResult DeviceDriver::debugMarkerSetObjectTagEXT (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) const
{
return m_vk.debugMarkerSetObjectTagEXT(device, pTagInfo);
@@ -1544,6 +1549,11 @@
m_vk.cmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps);
}
+void DeviceDriver::getImageSubresourceLayout2EXT (VkDevice device, VkImage image, const VkImageSubresource2EXT* pSubresource, VkSubresourceLayout2EXT* pLayout) const
+{
+ m_vk.getImageSubresourceLayout2EXT(device, image, pSubresource, pLayout);
+}
+
void DeviceDriver::cmdSetVertexInputEXT (VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, uint32_t vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) const
{
m_vk.cmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions);
@@ -1569,6 +1579,11 @@
return m_vk.getMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress);
}
+VkResult DeviceDriver::getPipelinePropertiesEXT (VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, VkBaseOutStructure* pPipelineProperties) const
+{
+ return m_vk.getPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties);
+}
+
void DeviceDriver::cmdSetPatchControlPointsEXT (VkCommandBuffer commandBuffer, uint32_t patchControlPoints) const
{
m_vk.cmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints);
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceExtensions.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceExtensions.inl
index 460c674..210a0b9 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceExtensions.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceExtensions.inl
@@ -50,6 +50,7 @@
"VK_KHR_present_wait",
"VK_KHR_push_descriptor",
"VK_KHR_ray_query",
+ "VK_KHR_ray_tracing_maintenance1",
"VK_KHR_ray_tracing_pipeline",
"VK_KHR_relaxed_block_layout",
"VK_KHR_sampler_mirror_clamp_to_edge",
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeatureTest.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeatureTest.inl
index 6b84191..4cf3ad4 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeatureTest.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeatureTest.inl
@@ -2186,6 +2186,54 @@
}
+tcu::TestStatus createDeviceWithUnsupportedFeaturesTestRayTracingMaintenance1FeaturesKHR (Context& context)
+{
+ const PlatformInterface& vkp = context.getPlatformInterface();
+ tcu::TestLog& log = context.getTestContext().getLog();
+ tcu::ResultCollector resultCollector (log);
+ const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true));
+ const InstanceDriver& instanceDriver (instance.getDriver());
+ const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine());
+ const deUint32 queueFamilyIndex = 0;
+ const deUint32 queueCount = 1;
+ const float queuePriority = 1.0f;
+ const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE);
+ const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2();
+ int numErrors = 0;
+ bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess();
+
+
+ VkPhysicalDeviceFeatures emptyDeviceFeatures;
+ deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures));
+
+ // Only non-core extensions will be used when creating the device.
+ vector<const char*> coreExtensions;
+ getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions);
+ vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions));
+
+ vector<const char*> extensionNames;
+ extensionNames.reserve(nonCoreExtensions.size());
+ for (const string& extension : nonCoreExtensions)
+ extensionNames.push_back(extension.c_str());
+
+ if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR>()))
+ {
+ static const Feature features[] =
+ {
+ FEATURE_ITEM (VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR, rayTracingMaintenance1),
+ FEATURE_ITEM (VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR, rayTracingPipelineTraceRaysIndirect2),
+ };
+ auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR*>(featuresStruct);
+ checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess);
+ }
+
+ if (numErrors > 0)
+ return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT.");
+ else
+ return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage());
+}
+
+
tcu::TestStatus createDeviceWithUnsupportedFeaturesTestTransformFeedbackFeaturesEXT (Context& context)
{
const PlatformInterface& vkp = context.getPlatformInterface();
@@ -4302,6 +4350,53 @@
}
+tcu::TestStatus createDeviceWithUnsupportedFeaturesTestImageCompressionControlFeaturesEXT (Context& context)
+{
+ const PlatformInterface& vkp = context.getPlatformInterface();
+ tcu::TestLog& log = context.getTestContext().getLog();
+ tcu::ResultCollector resultCollector (log);
+ const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true));
+ const InstanceDriver& instanceDriver (instance.getDriver());
+ const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine());
+ const deUint32 queueFamilyIndex = 0;
+ const deUint32 queueCount = 1;
+ const float queuePriority = 1.0f;
+ const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE);
+ const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2();
+ int numErrors = 0;
+ bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess();
+
+
+ VkPhysicalDeviceFeatures emptyDeviceFeatures;
+ deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures));
+
+ // Only non-core extensions will be used when creating the device.
+ vector<const char*> coreExtensions;
+ getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions);
+ vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions));
+
+ vector<const char*> extensionNames;
+ extensionNames.reserve(nonCoreExtensions.size());
+ for (const string& extension : nonCoreExtensions)
+ extensionNames.push_back(extension.c_str());
+
+ if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceImageCompressionControlFeaturesEXT>()))
+ {
+ static const Feature features[] =
+ {
+ FEATURE_ITEM (VkPhysicalDeviceImageCompressionControlFeaturesEXT, imageCompressionControl),
+ };
+ auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceImageCompressionControlFeaturesEXT*>(featuresStruct);
+ checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess);
+ }
+
+ if (numErrors > 0)
+ return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT.");
+ else
+ return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage());
+}
+
+
tcu::TestStatus createDeviceWithUnsupportedFeaturesTest4444FormatsFeaturesEXT (Context& context)
{
const PlatformInterface& vkp = context.getPlatformInterface();
@@ -4776,6 +4871,53 @@
}
+tcu::TestStatus createDeviceWithUnsupportedFeaturesTestPipelinePropertiesFeaturesEXT (Context& context)
+{
+ const PlatformInterface& vkp = context.getPlatformInterface();
+ tcu::TestLog& log = context.getTestContext().getLog();
+ tcu::ResultCollector resultCollector (log);
+ const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true));
+ const InstanceDriver& instanceDriver (instance.getDriver());
+ const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine());
+ const deUint32 queueFamilyIndex = 0;
+ const deUint32 queueCount = 1;
+ const float queuePriority = 1.0f;
+ const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE);
+ const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2();
+ int numErrors = 0;
+ bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess();
+
+
+ VkPhysicalDeviceFeatures emptyDeviceFeatures;
+ deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures));
+
+ // Only non-core extensions will be used when creating the device.
+ vector<const char*> coreExtensions;
+ getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions);
+ vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions));
+
+ vector<const char*> extensionNames;
+ extensionNames.reserve(nonCoreExtensions.size());
+ for (const string& extension : nonCoreExtensions)
+ extensionNames.push_back(extension.c_str());
+
+ if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevicePipelinePropertiesFeaturesEXT>()))
+ {
+ static const Feature features[] =
+ {
+ FEATURE_ITEM (VkPhysicalDevicePipelinePropertiesFeaturesEXT, pipelinePropertiesIdentifier),
+ };
+ auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevicePipelinePropertiesFeaturesEXT*>(featuresStruct);
+ checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess);
+ }
+
+ if (numErrors > 0)
+ return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT.");
+ else
+ return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage());
+}
+
+
tcu::TestStatus createDeviceWithUnsupportedFeaturesTestExtendedDynamicState2FeaturesEXT (Context& context)
{
const PlatformInterface& vkp = context.getPlatformInterface();
@@ -5299,6 +5441,100 @@
}
+tcu::TestStatus createDeviceWithUnsupportedFeaturesTestImageCompressionControlSwapchainFeaturesEXT (Context& context)
+{
+ const PlatformInterface& vkp = context.getPlatformInterface();
+ tcu::TestLog& log = context.getTestContext().getLog();
+ tcu::ResultCollector resultCollector (log);
+ const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true));
+ const InstanceDriver& instanceDriver (instance.getDriver());
+ const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine());
+ const deUint32 queueFamilyIndex = 0;
+ const deUint32 queueCount = 1;
+ const float queuePriority = 1.0f;
+ const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE);
+ const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2();
+ int numErrors = 0;
+ bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess();
+
+
+ VkPhysicalDeviceFeatures emptyDeviceFeatures;
+ deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures));
+
+ // Only non-core extensions will be used when creating the device.
+ vector<const char*> coreExtensions;
+ getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions);
+ vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions));
+
+ vector<const char*> extensionNames;
+ extensionNames.reserve(nonCoreExtensions.size());
+ for (const string& extension : nonCoreExtensions)
+ extensionNames.push_back(extension.c_str());
+
+ if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>()))
+ {
+ static const Feature features[] =
+ {
+ FEATURE_ITEM (VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT, imageCompressionControlSwapchain),
+ };
+ auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT*>(featuresStruct);
+ checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess);
+ }
+
+ if (numErrors > 0)
+ return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT.");
+ else
+ return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage());
+}
+
+
+tcu::TestStatus createDeviceWithUnsupportedFeaturesTestSubpassMergeFeedbackFeaturesEXT (Context& context)
+{
+ const PlatformInterface& vkp = context.getPlatformInterface();
+ tcu::TestLog& log = context.getTestContext().getLog();
+ tcu::ResultCollector resultCollector (log);
+ const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true));
+ const InstanceDriver& instanceDriver (instance.getDriver());
+ const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine());
+ const deUint32 queueFamilyIndex = 0;
+ const deUint32 queueCount = 1;
+ const float queuePriority = 1.0f;
+ const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE);
+ const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2();
+ int numErrors = 0;
+ bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess();
+
+
+ VkPhysicalDeviceFeatures emptyDeviceFeatures;
+ deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures));
+
+ // Only non-core extensions will be used when creating the device.
+ vector<const char*> coreExtensions;
+ getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions);
+ vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions));
+
+ vector<const char*> extensionNames;
+ extensionNames.reserve(nonCoreExtensions.size());
+ for (const string& extension : nonCoreExtensions)
+ extensionNames.push_back(extension.c_str());
+
+ if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT>()))
+ {
+ static const Feature features[] =
+ {
+ FEATURE_ITEM (VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT, subpassMergeFeedback),
+ };
+ auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT*>(featuresStruct);
+ checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess);
+ }
+
+ if (numErrors > 0)
+ return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT.");
+ else
+ return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage());
+}
+
+
tcu::TestStatus createDeviceWithUnsupportedFeaturesTestAccelerationStructureFeaturesKHR (Context& context)
{
const PlatformInterface& vkp = context.getPlatformInterface();
@@ -5556,6 +5792,7 @@
addFunctionCase(testGroup, "present_id_features_khr", "createDeviceWithUnsupportedFeaturesTestPresentIdFeaturesKHR", createDeviceWithUnsupportedFeaturesTestPresentIdFeaturesKHR);
addFunctionCase(testGroup, "shader_subgroup_uniform_control_flow_features_khr", "createDeviceWithUnsupportedFeaturesTestShaderSubgroupUniformControlFlowFeaturesKHR", createDeviceWithUnsupportedFeaturesTestShaderSubgroupUniformControlFlowFeaturesKHR);
addFunctionCase(testGroup, "workgroup_memory_explicit_layout_features_khr", "createDeviceWithUnsupportedFeaturesTestWorkgroupMemoryExplicitLayoutFeaturesKHR", createDeviceWithUnsupportedFeaturesTestWorkgroupMemoryExplicitLayoutFeaturesKHR);
+ addFunctionCase(testGroup, "ray_tracing_maintenance1_features_khr", "createDeviceWithUnsupportedFeaturesTestRayTracingMaintenance1FeaturesKHR", createDeviceWithUnsupportedFeaturesTestRayTracingMaintenance1FeaturesKHR);
addFunctionCase(testGroup, "transform_feedback_features_ext", "createDeviceWithUnsupportedFeaturesTestTransformFeedbackFeaturesEXT", createDeviceWithUnsupportedFeaturesTestTransformFeedbackFeaturesEXT);
addFunctionCase(testGroup, "corner_sampled_image_features_nv", "createDeviceWithUnsupportedFeaturesTestCornerSampledImageFeaturesNV", createDeviceWithUnsupportedFeaturesTestCornerSampledImageFeaturesNV);
addFunctionCase(testGroup, "astc_decode_features_ext", "createDeviceWithUnsupportedFeaturesTestASTCDecodeFeaturesEXT", createDeviceWithUnsupportedFeaturesTestASTCDecodeFeaturesEXT);
@@ -5600,6 +5837,7 @@
addFunctionCase(testGroup, "ray_tracing_motion_blur_features_nv", "createDeviceWithUnsupportedFeaturesTestRayTracingMotionBlurFeaturesNV", createDeviceWithUnsupportedFeaturesTestRayTracingMotionBlurFeaturesNV);
addFunctionCase(testGroup, "ycbcr2_plane444_formats_features_ext", "createDeviceWithUnsupportedFeaturesTestYcbcr2Plane444FormatsFeaturesEXT", createDeviceWithUnsupportedFeaturesTestYcbcr2Plane444FormatsFeaturesEXT);
addFunctionCase(testGroup, "fragment_density_map2_features_ext", "createDeviceWithUnsupportedFeaturesTestFragmentDensityMap2FeaturesEXT", createDeviceWithUnsupportedFeaturesTestFragmentDensityMap2FeaturesEXT);
+ addFunctionCase(testGroup, "image_compression_control_features_ext", "createDeviceWithUnsupportedFeaturesTestImageCompressionControlFeaturesEXT", createDeviceWithUnsupportedFeaturesTestImageCompressionControlFeaturesEXT);
addFunctionCase(testGroup, "4444_formats_features_ext", "createDeviceWithUnsupportedFeaturesTest4444FormatsFeaturesEXT", createDeviceWithUnsupportedFeaturesTest4444FormatsFeaturesEXT);
addFunctionCase(testGroup, "rasterization_order_attachment_access_features_arm", "createDeviceWithUnsupportedFeaturesTestRasterizationOrderAttachmentAccessFeaturesARM", createDeviceWithUnsupportedFeaturesTestRasterizationOrderAttachmentAccessFeaturesARM);
addFunctionCase(testGroup, "rgba10_x6_formats_features_ext", "createDeviceWithUnsupportedFeaturesTestRGBA10X6FormatsFeaturesEXT", createDeviceWithUnsupportedFeaturesTestRGBA10X6FormatsFeaturesEXT);
@@ -5610,6 +5848,7 @@
addFunctionCase(testGroup, "subpass_shading_features_huawei", "createDeviceWithUnsupportedFeaturesTestSubpassShadingFeaturesHUAWEI", createDeviceWithUnsupportedFeaturesTestSubpassShadingFeaturesHUAWEI);
addFunctionCase(testGroup, "invocation_mask_features_huawei", "createDeviceWithUnsupportedFeaturesTestInvocationMaskFeaturesHUAWEI", createDeviceWithUnsupportedFeaturesTestInvocationMaskFeaturesHUAWEI);
addFunctionCase(testGroup, "external_memory_rdma_features_nv", "createDeviceWithUnsupportedFeaturesTestExternalMemoryRDMAFeaturesNV", createDeviceWithUnsupportedFeaturesTestExternalMemoryRDMAFeaturesNV);
+ addFunctionCase(testGroup, "pipeline_properties_features_ext", "createDeviceWithUnsupportedFeaturesTestPipelinePropertiesFeaturesEXT", createDeviceWithUnsupportedFeaturesTestPipelinePropertiesFeaturesEXT);
addFunctionCase(testGroup, "extended_dynamic_state2_features_ext", "createDeviceWithUnsupportedFeaturesTestExtendedDynamicState2FeaturesEXT", createDeviceWithUnsupportedFeaturesTestExtendedDynamicState2FeaturesEXT);
addFunctionCase(testGroup, "color_write_enable_features_ext", "createDeviceWithUnsupportedFeaturesTestColorWriteEnableFeaturesEXT", createDeviceWithUnsupportedFeaturesTestColorWriteEnableFeaturesEXT);
addFunctionCase(testGroup, "primitives_generated_query_features_ext", "createDeviceWithUnsupportedFeaturesTestPrimitivesGeneratedQueryFeaturesEXT", createDeviceWithUnsupportedFeaturesTestPrimitivesGeneratedQueryFeaturesEXT);
@@ -5621,6 +5860,8 @@
addFunctionCase(testGroup, "descriptor_set_host_mapping_features_valve", "createDeviceWithUnsupportedFeaturesTestDescriptorSetHostMappingFeaturesVALVE", createDeviceWithUnsupportedFeaturesTestDescriptorSetHostMappingFeaturesVALVE);
addFunctionCase(testGroup, "fragment_density_map_offset_features_qcom", "createDeviceWithUnsupportedFeaturesTestFragmentDensityMapOffsetFeaturesQCOM", createDeviceWithUnsupportedFeaturesTestFragmentDensityMapOffsetFeaturesQCOM);
addFunctionCase(testGroup, "linear_color_attachment_features_nv", "createDeviceWithUnsupportedFeaturesTestLinearColorAttachmentFeaturesNV", createDeviceWithUnsupportedFeaturesTestLinearColorAttachmentFeaturesNV);
+ addFunctionCase(testGroup, "image_compression_control_swapchain_features_ext", "createDeviceWithUnsupportedFeaturesTestImageCompressionControlSwapchainFeaturesEXT", createDeviceWithUnsupportedFeaturesTestImageCompressionControlSwapchainFeaturesEXT);
+ addFunctionCase(testGroup, "subpass_merge_feedback_features_ext", "createDeviceWithUnsupportedFeaturesTestSubpassMergeFeedbackFeaturesEXT", createDeviceWithUnsupportedFeaturesTestSubpassMergeFeedbackFeaturesEXT);
addFunctionCase(testGroup, "acceleration_structure_features_khr", "createDeviceWithUnsupportedFeaturesTestAccelerationStructureFeaturesKHR", createDeviceWithUnsupportedFeaturesTestAccelerationStructureFeaturesKHR);
addFunctionCase(testGroup, "ray_tracing_pipeline_features_khr", "createDeviceWithUnsupportedFeaturesTestRayTracingPipelineFeaturesKHR", createDeviceWithUnsupportedFeaturesTestRayTracingPipelineFeaturesKHR);
addFunctionCase(testGroup, "ray_query_features_khr", "createDeviceWithUnsupportedFeaturesTestRayQueryFeaturesKHR", createDeviceWithUnsupportedFeaturesTestRayQueryFeaturesKHR);
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeatures.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeatures.inl
index 6d4e442..549e079 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeatures.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeatures.inl
@@ -49,6 +49,8 @@
#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset"
#define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "VK_KHR_imageless_framebuffer"
#define VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME "VK_EXT_image_2d_view_of_3d"
+#define VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME "VK_EXT_image_compression_control"
+#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME "VK_EXT_image_compression_control_swapchain"
#define VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_image_robustness"
#define VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME "VK_EXT_image_view_min_lod"
#define VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME "VK_EXT_index_type_uint8"
@@ -67,6 +69,7 @@
#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query"
#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME "VK_EXT_pipeline_creation_cache_control"
#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME "VK_KHR_pipeline_executable_properties"
+#define VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME "VK_EXT_pipeline_properties"
#define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset"
#define VK_KHR_PRESENT_ID_EXTENSION_NAME "VK_KHR_present_id"
#define VK_KHR_PRESENT_WAIT_EXTENSION_NAME "VK_KHR_present_wait"
@@ -76,6 +79,7 @@
#define DECL_PROTECTED_MEMORY_EXTENSION_NAME "not_existent_feature"
#define VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME "VK_EXT_provoking_vertex"
#define VK_KHR_RAY_QUERY_EXTENSION_NAME "VK_KHR_ray_query"
+#define VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_ray_tracing_maintenance1"
#define VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME "VK_NV_ray_tracing_motion_blur"
#define VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME "VK_KHR_ray_tracing_pipeline"
#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME "VK_NV_representative_fragment_test"
@@ -101,6 +105,7 @@
#define VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME "VK_KHR_shader_terminate_invocation"
#define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME "VK_NV_shading_rate_image"
#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control"
+#define VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME "VK_EXT_subpass_merge_feedback"
#define VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME "VK_HUAWEI_subpass_shading"
#define VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME "VK_KHR_synchronization2"
#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment"
@@ -292,6 +297,7 @@
template<> void initFeatureFromBlob<VkPhysicalDevicePresentIdFeaturesKHR>(VkPhysicalDevicePresentIdFeaturesKHR&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>(VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>(VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR>(VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(VkPhysicalDeviceTransformFeedbackFeaturesEXT&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceCornerSampledImageFeaturesNV>(VkPhysicalDeviceCornerSampledImageFeaturesNV&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceASTCDecodeFeaturesEXT>(VkPhysicalDeviceASTCDecodeFeaturesEXT&, const AllFeaturesBlobs&) {}
@@ -336,6 +342,7 @@
template<> void initFeatureFromBlob<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV>(VkPhysicalDeviceRayTracingMotionBlurFeaturesNV&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>(VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT>(VkPhysicalDeviceFragmentDensityMap2FeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceImageCompressionControlFeaturesEXT>(VkPhysicalDeviceImageCompressionControlFeaturesEXT&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDevice4444FormatsFeaturesEXT>(VkPhysicalDevice4444FormatsFeaturesEXT&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM>(VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT>(VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT&, const AllFeaturesBlobs&) {}
@@ -346,6 +353,7 @@
template<> void initFeatureFromBlob<VkPhysicalDeviceSubpassShadingFeaturesHUAWEI>(VkPhysicalDeviceSubpassShadingFeaturesHUAWEI&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceInvocationMaskFeaturesHUAWEI>(VkPhysicalDeviceInvocationMaskFeaturesHUAWEI&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceExternalMemoryRDMAFeaturesNV>(VkPhysicalDeviceExternalMemoryRDMAFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDevicePipelinePropertiesFeaturesEXT>(VkPhysicalDevicePipelinePropertiesFeaturesEXT&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceColorWriteEnableFeaturesEXT>(VkPhysicalDeviceColorWriteEnableFeaturesEXT&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT>(VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT&, const AllFeaturesBlobs&) {}
@@ -357,106 +365,113 @@
template<> void initFeatureFromBlob<VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE>(VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>(VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceLinearColorAttachmentFeaturesNV>(VkPhysicalDeviceLinearColorAttachmentFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>(VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT>(VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceAccelerationStructureFeaturesKHR>(VkPhysicalDeviceAccelerationStructureFeaturesKHR&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>(VkPhysicalDeviceRayTracingPipelineFeaturesKHR&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDeviceRayQueryFeaturesKHR>(VkPhysicalDeviceRayQueryFeaturesKHR&, const AllFeaturesBlobs&) {}
template<> void initFeatureFromBlob<VkPhysicalDevicePortabilitySubsetFeaturesKHR>(VkPhysicalDevicePortabilitySubsetFeaturesKHR&, const AllFeaturesBlobs&) {}
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice16BitStorageFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, VK_KHR_16BIT_STORAGE_EXTENSION_NAME, VK_KHR_16BIT_STORAGE_SPEC_VERSION, 109}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice4444FormatsFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT, VK_EXT_4444_FORMATS_EXTENSION_NAME, VK_EXT_4444_FORMATS_SPEC_VERSION, 108}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice8BitStorageFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, VK_KHR_8BIT_STORAGE_EXTENSION_NAME, VK_KHR_8BIT_STORAGE_SPEC_VERSION, 107}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceAccelerationStructureFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR, VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME, VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION, 106}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceASTCDecodeFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT, VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME, VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION, 105}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT, VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION, 104}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBorderColorSwizzleFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT, VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME, VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION, 103}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBufferDeviceAddressFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION, 102}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION, 101}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, DECL_AMD_COHERENT_MEMORY_EXTENSION_NAME, 0, 100}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceColorWriteEnableFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT, VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME, VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION, 99}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV, VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME, VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION, 98}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT, VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME, VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION, 97}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCooperativeMatrixFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV, VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME, VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION, 96}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCornerSampledImageFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV, VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME, VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION, 95}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV, VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME, VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION, 94}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCustomBorderColorFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT, VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION, 93}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION, 92}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDepthClipControlFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT, VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME, VK_EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION, 91}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION, 90}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDescriptorIndexingFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION, 89}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE, VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME, VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION, 88}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV, VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME, VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION, 87}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT, VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME, VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION, 86}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDiagnosticsConfigFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV, DECL_NV_DIAGNOSTICS_CONFIG_EXTENSION_NAME, 0, 85}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDynamicRenderingFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES, VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME, VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION, 84}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExclusiveScissorFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV, VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME, VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION, 83}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT, VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION, 82}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT, VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME, VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION, 81}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExternalMemoryRDMAFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV, VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME, VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION, 80}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION, 79}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT, VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION, 78}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM, VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME, VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION, 77}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION, 76}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME, VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION, 75}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShadingRateFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR, VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME, VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION, 74}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV, VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME, VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION, 73}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR, DECL_KHR_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME, 0, 72}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT, VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION, 71}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceHostQueryResetFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, VK_EXT_HOST_QUERY_RESET_SPEC_VERSION, 70}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImagelessFramebufferFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION, 69}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImage2DViewOf3DFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT, VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME, VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION, 68}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImageRobustnessFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES, VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME, VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION, 67}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImageViewMinLodFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT, VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME, VK_EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION, 66}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT, VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME, VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION, 65}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceInheritedViewportScissorFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV, VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME, VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION, 64}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceInlineUniformBlockFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES, VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION, 63}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceInvocationMaskFeaturesHUAWEI>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI, VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME, VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION, 62}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceLinearColorAttachmentFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV, VK_NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME, VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION, 61}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceLineRasterizationFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION, 60}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMaintenance4Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES, DECL_MAINTENANCE4_EXTENSION_NAME, 0, 59}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME, VK_EXT_MEMORY_PRIORITY_SPEC_VERSION, 58}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMeshShaderFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV, VK_NV_MESH_SHADER_EXTENSION_NAME, VK_NV_MESH_SHADER_SPEC_VERSION, 57}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMultiviewFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_KHR_MULTIVIEW_SPEC_VERSION, 56}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMultiDrawFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT, VK_EXT_MULTI_DRAW_EXTENSION_NAME, VK_EXT_MULTI_DRAW_SPEC_VERSION, 55}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE, VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME, VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION, 54}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT, VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME, VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION, 53}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePerformanceQueryFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR, VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION, 52}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePipelineCreationCacheControlFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES, VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME, VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION, 51}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION, 50}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePortabilitySubsetFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR, VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME, VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION, 49}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePresentIdFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR, VK_KHR_PRESENT_ID_EXTENSION_NAME, VK_KHR_PRESENT_ID_SPEC_VERSION, 48}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePresentWaitFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR, VK_KHR_PRESENT_WAIT_EXTENSION_NAME, VK_KHR_PRESENT_WAIT_SPEC_VERSION, 47}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT, VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME, VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION, 46}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT, VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME, VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION, 45}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePrivateDataFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES, VK_EXT_PRIVATE_DATA_EXTENSION_NAME, VK_EXT_PRIVATE_DATA_SPEC_VERSION, 44}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceProtectedMemoryFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0, 43}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceProvokingVertexFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT, VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME, VK_EXT_PROVOKING_VERTEX_SPEC_VERSION, 42}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRayQueryFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR, VK_KHR_RAY_QUERY_EXTENSION_NAME, VK_KHR_RAY_QUERY_SPEC_VERSION, 41}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV, VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME, VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION, 40}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR, VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME, VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION, 39}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION, 38}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT, VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME, VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION, 37}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRobustness2FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT, VK_EXT_ROBUSTNESS_2_EXTENSION_NAME, VK_EXT_ROBUSTNESS_2_SPEC_VERSION, 36}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION, 35}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceScalarBlockLayoutFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION, 34}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION, 33}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT, VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME, VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION, 32}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT, VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME, VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION, 31}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicInt64Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME, VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION, 30}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderClockFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR, VK_KHR_SHADER_CLOCK_EXTENSION_NAME, VK_KHR_SHADER_CLOCK_SPEC_VERSION, 29}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION, 28}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderDrawParametersFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION, 27}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderFloat16Int8Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION, 26}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT, VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME, VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION, 25}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderImageFootprintFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV, VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME, VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION, 24}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderIntegerDotProductFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES, VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME, VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION, 23}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION, 22}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV, VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME, VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION, 21}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION, 20}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR, VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME, VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION, 19}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderTerminateInvocationFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES, VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME, VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION, 18}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShadingRateImageFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION, 17}; }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSubgroupSizeControlFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION, 16}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice16BitStorageFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, VK_KHR_16BIT_STORAGE_EXTENSION_NAME, VK_KHR_16BIT_STORAGE_SPEC_VERSION, 114}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice4444FormatsFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT, VK_EXT_4444_FORMATS_EXTENSION_NAME, VK_EXT_4444_FORMATS_SPEC_VERSION, 113}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice8BitStorageFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, VK_KHR_8BIT_STORAGE_EXTENSION_NAME, VK_KHR_8BIT_STORAGE_SPEC_VERSION, 112}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceAccelerationStructureFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR, VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME, VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION, 111}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceASTCDecodeFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT, VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME, VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION, 110}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT, VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION, 109}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBorderColorSwizzleFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT, VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME, VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION, 108}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBufferDeviceAddressFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION, 107}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION, 106}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, DECL_AMD_COHERENT_MEMORY_EXTENSION_NAME, 0, 105}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceColorWriteEnableFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT, VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME, VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION, 104}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV, VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME, VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION, 103}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT, VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME, VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION, 102}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCooperativeMatrixFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV, VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME, VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION, 101}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCornerSampledImageFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV, VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME, VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION, 100}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV, VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME, VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION, 99}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCustomBorderColorFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT, VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION, 98}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION, 97}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDepthClipControlFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT, VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME, VK_EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION, 96}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION, 95}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDescriptorIndexingFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION, 94}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE, VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME, VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION, 93}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV, VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME, VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION, 92}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT, VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME, VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION, 91}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDiagnosticsConfigFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV, DECL_NV_DIAGNOSTICS_CONFIG_EXTENSION_NAME, 0, 90}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDynamicRenderingFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES, VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME, VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION, 89}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExclusiveScissorFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV, VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME, VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION, 88}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT, VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION, 87}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT, VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME, VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION, 86}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExternalMemoryRDMAFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV, VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME, VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION, 85}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION, 84}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT, VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION, 83}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM, VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME, VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION, 82}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION, 81}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME, VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION, 80}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShadingRateFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR, VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME, VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION, 79}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV, VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME, VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION, 78}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR, DECL_KHR_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME, 0, 77}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT, VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION, 76}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceHostQueryResetFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, VK_EXT_HOST_QUERY_RESET_SPEC_VERSION, 75}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImagelessFramebufferFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION, 74}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImage2DViewOf3DFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT, VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME, VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION, 73}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImageCompressionControlFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT, VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME, VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION, 72}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT, VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME, VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION, 71}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImageRobustnessFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES, VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME, VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION, 70}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImageViewMinLodFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT, VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME, VK_EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION, 69}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT, VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME, VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION, 68}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceInheritedViewportScissorFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV, VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME, VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION, 67}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceInlineUniformBlockFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES, VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION, 66}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceInvocationMaskFeaturesHUAWEI>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI, VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME, VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION, 65}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceLinearColorAttachmentFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV, VK_NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME, VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION, 64}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceLineRasterizationFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION, 63}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMaintenance4Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES, DECL_MAINTENANCE4_EXTENSION_NAME, 0, 62}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME, VK_EXT_MEMORY_PRIORITY_SPEC_VERSION, 61}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMeshShaderFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV, VK_NV_MESH_SHADER_EXTENSION_NAME, VK_NV_MESH_SHADER_SPEC_VERSION, 60}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMultiviewFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_KHR_MULTIVIEW_SPEC_VERSION, 59}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMultiDrawFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT, VK_EXT_MULTI_DRAW_EXTENSION_NAME, VK_EXT_MULTI_DRAW_SPEC_VERSION, 58}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE, VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME, VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION, 57}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT, VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME, VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION, 56}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePerformanceQueryFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR, VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION, 55}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePipelineCreationCacheControlFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES, VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME, VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION, 54}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION, 53}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePipelinePropertiesFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT, VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME, VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION, 52}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePortabilitySubsetFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR, VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME, VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION, 51}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePresentIdFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR, VK_KHR_PRESENT_ID_EXTENSION_NAME, VK_KHR_PRESENT_ID_SPEC_VERSION, 50}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePresentWaitFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR, VK_KHR_PRESENT_WAIT_EXTENSION_NAME, VK_KHR_PRESENT_WAIT_SPEC_VERSION, 49}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT, VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME, VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION, 48}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT, VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME, VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION, 47}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePrivateDataFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES, VK_EXT_PRIVATE_DATA_EXTENSION_NAME, VK_EXT_PRIVATE_DATA_SPEC_VERSION, 46}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceProtectedMemoryFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0, 45}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceProvokingVertexFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT, VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME, VK_EXT_PROVOKING_VERTEX_SPEC_VERSION, 44}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRayQueryFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR, VK_KHR_RAY_QUERY_EXTENSION_NAME, VK_KHR_RAY_QUERY_SPEC_VERSION, 43}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR, VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME, VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION, 42}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV, VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME, VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION, 41}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR, VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME, VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION, 40}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION, 39}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT, VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME, VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION, 38}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRobustness2FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT, VK_EXT_ROBUSTNESS_2_EXTENSION_NAME, VK_EXT_ROBUSTNESS_2_SPEC_VERSION, 37}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION, 36}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceScalarBlockLayoutFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION, 35}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION, 34}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT, VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME, VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION, 33}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT, VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME, VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION, 32}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicInt64Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME, VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION, 31}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderClockFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR, VK_KHR_SHADER_CLOCK_EXTENSION_NAME, VK_KHR_SHADER_CLOCK_SPEC_VERSION, 30}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION, 29}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderDrawParametersFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION, 28}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderFloat16Int8Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION, 27}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT, VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME, VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION, 26}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderImageFootprintFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV, VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME, VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION, 25}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderIntegerDotProductFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES, VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME, VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION, 24}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION, 23}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV, VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME, VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION, 22}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION, 21}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR, VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME, VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION, 20}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderTerminateInvocationFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES, VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME, VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION, 19}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShadingRateImageFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION, 18}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSubgroupSizeControlFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION, 17}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT, VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME, VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION, 16}; }
template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSubpassShadingFeaturesHUAWEI>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI, VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME, VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION, 15}; }
template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSynchronization2Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES, VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME, VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION, 14}; }
template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION, 13}; }
@@ -518,6 +533,8 @@
{ createFeatureStructWrapper<VkPhysicalDeviceHostQueryResetFeatures>, VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, VK_EXT_HOST_QUERY_RESET_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceImagelessFramebufferFeatures>, VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceImage2DViewOf3DFeaturesEXT>, VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME, VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDeviceImageCompressionControlFeaturesEXT>, VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME, VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>, VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME, VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceImageRobustnessFeatures>, VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME, VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceImageViewMinLodFeaturesEXT>, VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME, VK_EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>, VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME, VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION },
@@ -536,6 +553,7 @@
{ createFeatureStructWrapper<VkPhysicalDevicePerformanceQueryFeaturesKHR>, VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDevicePipelineCreationCacheControlFeatures>, VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME, VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDevicePipelinePropertiesFeaturesEXT>, VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME, VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDevicePortabilitySubsetFeaturesKHR>, VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME, VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDevicePresentIdFeaturesKHR>, VK_KHR_PRESENT_ID_EXTENSION_NAME, VK_KHR_PRESENT_ID_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDevicePresentWaitFeaturesKHR>, VK_KHR_PRESENT_WAIT_EXTENSION_NAME, VK_KHR_PRESENT_WAIT_SPEC_VERSION },
@@ -545,6 +563,7 @@
{ createFeatureStructWrapper<VkPhysicalDeviceProtectedMemoryFeatures>, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0 },
{ createFeatureStructWrapper<VkPhysicalDeviceProvokingVertexFeaturesEXT>, VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME, VK_EXT_PROVOKING_VERTEX_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceRayQueryFeaturesKHR>, VK_KHR_RAY_QUERY_EXTENSION_NAME, VK_KHR_RAY_QUERY_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR>, VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME, VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV>, VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME, VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>, VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME, VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION },
@@ -570,6 +589,7 @@
{ createFeatureStructWrapper<VkPhysicalDeviceShaderTerminateInvocationFeatures>, VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME, VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceShadingRateImageFeaturesNV>, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceSubgroupSizeControlFeatures>, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION },
+ { createFeatureStructWrapper<VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT>, VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME, VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceSubpassShadingFeaturesHUAWEI>, VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME, VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceSynchronization2Features>, VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME, VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION },
{ createFeatureStructWrapper<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>, VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION },
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeaturesForContextDecl.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeaturesForContextDecl.inl
index 234a2ce..2e1742a 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeaturesForContextDecl.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeaturesForContextDecl.inl
@@ -3,112 +3,117 @@
* This file was generated by /scripts/gen_framework.py
*/
-const vk::VkPhysicalDevice16BitStorageFeatures& get16BitStorageFeatures (void) const;
-const vk::VkPhysicalDevice4444FormatsFeaturesEXT& get4444FormatsFeaturesEXT (void) const;
-const vk::VkPhysicalDevice8BitStorageFeatures& get8BitStorageFeatures (void) const;
-const vk::VkPhysicalDeviceAccelerationStructureFeaturesKHR& getAccelerationStructureFeatures (void) const;
-const vk::VkPhysicalDeviceASTCDecodeFeaturesEXT& getASTCDecodeFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& getBlendOperationAdvancedFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceBorderColorSwizzleFeaturesEXT& getBorderColorSwizzleFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceBufferDeviceAddressFeatures& getBufferDeviceAddressFeatures (void) const;
-const vk::VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& getBufferDeviceAddressFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceCoherentMemoryFeaturesAMD& getCoherentMemoryFeaturesAMD (void) const;
-const vk::VkPhysicalDeviceColorWriteEnableFeaturesEXT& getColorWriteEnableFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& getComputeShaderDerivativesFeatures (void) const;
-const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT& getConditionalRenderingFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceCooperativeMatrixFeaturesNV& getCooperativeMatrixFeatures (void) const;
-const vk::VkPhysicalDeviceCornerSampledImageFeaturesNV& getCornerSampledImageFeatures (void) const;
-const vk::VkPhysicalDeviceCoverageReductionModeFeaturesNV& getCoverageReductionModeFeatures (void) const;
-const vk::VkPhysicalDeviceCustomBorderColorFeaturesEXT& getCustomBorderColorFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& getDedicatedAllocationImageAliasingFeatures (void) const;
-const vk::VkPhysicalDeviceDepthClipControlFeaturesEXT& getDepthClipControlFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT& getDepthClipEnableFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceDescriptorIndexingFeatures& getDescriptorIndexingFeatures (void) const;
-const vk::VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE& getDescriptorSetHostMappingFeaturesVALVE (void) const;
-const vk::VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV& getDeviceGeneratedCommandsFeatures (void) const;
-const vk::VkPhysicalDeviceDeviceMemoryReportFeaturesEXT& getDeviceMemoryReportFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceDiagnosticsConfigFeaturesNV& getDiagnosticsConfigFeatures (void) const;
-const vk::VkPhysicalDeviceDynamicRenderingFeatures& getDynamicRenderingFeatures (void) const;
-const vk::VkPhysicalDeviceExclusiveScissorFeaturesNV& getExclusiveScissorFeatures (void) const;
-const vk::VkPhysicalDeviceExtendedDynamicStateFeaturesEXT& getExtendedDynamicStateFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceExtendedDynamicState2FeaturesEXT& getExtendedDynamicState2FeaturesEXT (void) const;
-const vk::VkPhysicalDeviceExternalMemoryRDMAFeaturesNV& getExternalMemoryRDMAFeatures (void) const;
-const vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT& getFragmentDensityMapFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceFragmentDensityMap2FeaturesEXT& getFragmentDensityMap2FeaturesEXT (void) const;
-const vk::VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM& getFragmentDensityMapOffsetFeaturesQCOM (void) const;
-const vk::VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& getFragmentShaderBarycentricFeatures (void) const;
-const vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& getFragmentShaderInterlockFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceFragmentShadingRateFeaturesKHR& getFragmentShadingRateFeatures (void) const;
-const vk::VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV& getFragmentShadingRateEnumsFeatures (void) const;
-const vk::VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR& getGlobalPriorityQueryFeatures (void) const;
-const vk::VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT& getGraphicsPipelineLibraryFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceHostQueryResetFeatures& getHostQueryResetFeatures (void) const;
-const vk::VkPhysicalDeviceImagelessFramebufferFeatures& getImagelessFramebufferFeatures (void) const;
-const vk::VkPhysicalDeviceImage2DViewOf3DFeaturesEXT& getImage2DViewOf3DFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceImageRobustnessFeatures& getImageRobustnessFeatures (void) const;
-const vk::VkPhysicalDeviceImageViewMinLodFeaturesEXT& getImageViewMinLodFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT& getIndexTypeUint8FeaturesEXT (void) const;
-const vk::VkPhysicalDeviceInheritedViewportScissorFeaturesNV& getInheritedViewportScissorFeatures (void) const;
-const vk::VkPhysicalDeviceInlineUniformBlockFeatures& getInlineUniformBlockFeatures (void) const;
-const vk::VkPhysicalDeviceInvocationMaskFeaturesHUAWEI& getInvocationMaskFeaturesHUAWEI (void) const;
-const vk::VkPhysicalDeviceLinearColorAttachmentFeaturesNV& getLinearColorAttachmentFeatures (void) const;
-const vk::VkPhysicalDeviceLineRasterizationFeaturesEXT& getLineRasterizationFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceMaintenance4Features& getMaintenance4Features (void) const;
-const vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT& getMemoryPriorityFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceMeshShaderFeaturesNV& getMeshShaderFeatures (void) const;
-const vk::VkPhysicalDeviceMultiviewFeatures& getMultiviewFeatures (void) const;
-const vk::VkPhysicalDeviceMultiDrawFeaturesEXT& getMultiDrawFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE& getMutableDescriptorTypeFeaturesVALVE (void) const;
-const vk::VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT& getPageableDeviceLocalMemoryFeaturesEXT (void) const;
-const vk::VkPhysicalDevicePerformanceQueryFeaturesKHR& getPerformanceQueryFeatures (void) const;
-const vk::VkPhysicalDevicePipelineCreationCacheControlFeatures& getPipelineCreationCacheControlFeatures (void) const;
-const vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& getPipelineExecutablePropertiesFeatures (void) const;
-const vk::VkPhysicalDevicePortabilitySubsetFeaturesKHR& getPortabilitySubsetFeatures (void) const;
-const vk::VkPhysicalDevicePresentIdFeaturesKHR& getPresentIdFeatures (void) const;
-const vk::VkPhysicalDevicePresentWaitFeaturesKHR& getPresentWaitFeatures (void) const;
-const vk::VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT& getPrimitivesGeneratedQueryFeaturesEXT (void) const;
-const vk::VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT& getPrimitiveTopologyListRestartFeaturesEXT (void) const;
-const vk::VkPhysicalDevicePrivateDataFeatures& getPrivateDataFeatures (void) const;
-const vk::VkPhysicalDeviceProtectedMemoryFeatures& getProtectedMemoryFeatures (void) const;
-const vk::VkPhysicalDeviceProvokingVertexFeaturesEXT& getProvokingVertexFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceRayQueryFeaturesKHR& getRayQueryFeatures (void) const;
-const vk::VkPhysicalDeviceRayTracingMotionBlurFeaturesNV& getRayTracingMotionBlurFeatures (void) const;
-const vk::VkPhysicalDeviceRayTracingPipelineFeaturesKHR& getRayTracingPipelineFeatures (void) const;
-const vk::VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& getRepresentativeFragmentTestFeatures (void) const;
-const vk::VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT& getRGBA10X6FormatsFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceRobustness2FeaturesEXT& getRobustness2FeaturesEXT (void) const;
-const vk::VkPhysicalDeviceSamplerYcbcrConversionFeatures& getSamplerYcbcrConversionFeatures (void) const;
-const vk::VkPhysicalDeviceScalarBlockLayoutFeatures& getScalarBlockLayoutFeatures (void) const;
-const vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& getSeparateDepthStencilLayoutsFeatures (void) const;
-const vk::VkPhysicalDeviceShaderAtomicFloatFeaturesEXT& getShaderAtomicFloatFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT& getShaderAtomicFloat2FeaturesEXT (void) const;
-const vk::VkPhysicalDeviceShaderAtomicInt64Features& getShaderAtomicInt64Features (void) const;
-const vk::VkPhysicalDeviceShaderClockFeaturesKHR& getShaderClockFeatures (void) const;
-const vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures& getShaderDemoteToHelperInvocationFeatures (void) const;
-const vk::VkPhysicalDeviceShaderDrawParametersFeatures& getShaderDrawParametersFeatures (void) const;
-const vk::VkPhysicalDeviceShaderFloat16Int8Features& getShaderFloat16Int8Features (void) const;
-const vk::VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT& getShaderImageAtomicInt64FeaturesEXT (void) const;
-const vk::VkPhysicalDeviceShaderImageFootprintFeaturesNV& getShaderImageFootprintFeatures (void) const;
-const vk::VkPhysicalDeviceShaderIntegerDotProductFeatures& getShaderIntegerDotProductFeatures (void) const;
-const vk::VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& getShaderIntegerFunctions2FeaturesINTEL (void) const;
-const vk::VkPhysicalDeviceShaderSMBuiltinsFeaturesNV& getShaderSMBuiltinsFeatures (void) const;
-const vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& getShaderSubgroupExtendedTypesFeatures (void) const;
-const vk::VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR& getShaderSubgroupUniformControlFlowFeatures (void) const;
-const vk::VkPhysicalDeviceShaderTerminateInvocationFeatures& getShaderTerminateInvocationFeatures (void) const;
-const vk::VkPhysicalDeviceShadingRateImageFeaturesNV& getShadingRateImageFeatures (void) const;
-const vk::VkPhysicalDeviceSubgroupSizeControlFeatures& getSubgroupSizeControlFeatures (void) const;
-const vk::VkPhysicalDeviceSubpassShadingFeaturesHUAWEI& getSubpassShadingFeaturesHUAWEI (void) const;
-const vk::VkPhysicalDeviceSynchronization2Features& getSynchronization2Features (void) const;
-const vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& getTexelBufferAlignmentFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceTextureCompressionASTCHDRFeatures& getTextureCompressionASTCHDRFeatures (void) const;
-const vk::VkPhysicalDeviceTimelineSemaphoreFeatures& getTimelineSemaphoreFeatures (void) const;
-const vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT& getTransformFeedbackFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceUniformBufferStandardLayoutFeatures& getUniformBufferStandardLayoutFeatures (void) const;
-const vk::VkPhysicalDeviceVariablePointersFeatures& getVariablePointersFeatures (void) const;
-const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& getVertexAttributeDivisorFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT& getVertexInputDynamicStateFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceVulkanMemoryModelFeatures& getVulkanMemoryModelFeatures (void) const;
-const vk::VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR& getWorkgroupMemoryExplicitLayoutFeatures (void) const;
-const vk::VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT& getYcbcr2Plane444FormatsFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& getYcbcrImageArraysFeaturesEXT (void) const;
-const vk::VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures& getZeroInitializeWorkgroupMemoryFeatures (void) const;
+const vk::VkPhysicalDevice16BitStorageFeatures& get16BitStorageFeatures (void) const;
+const vk::VkPhysicalDevice4444FormatsFeaturesEXT& get4444FormatsFeaturesEXT (void) const;
+const vk::VkPhysicalDevice8BitStorageFeatures& get8BitStorageFeatures (void) const;
+const vk::VkPhysicalDeviceAccelerationStructureFeaturesKHR& getAccelerationStructureFeatures (void) const;
+const vk::VkPhysicalDeviceASTCDecodeFeaturesEXT& getASTCDecodeFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& getBlendOperationAdvancedFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceBorderColorSwizzleFeaturesEXT& getBorderColorSwizzleFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceBufferDeviceAddressFeatures& getBufferDeviceAddressFeatures (void) const;
+const vk::VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& getBufferDeviceAddressFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceCoherentMemoryFeaturesAMD& getCoherentMemoryFeaturesAMD (void) const;
+const vk::VkPhysicalDeviceColorWriteEnableFeaturesEXT& getColorWriteEnableFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& getComputeShaderDerivativesFeatures (void) const;
+const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT& getConditionalRenderingFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceCooperativeMatrixFeaturesNV& getCooperativeMatrixFeatures (void) const;
+const vk::VkPhysicalDeviceCornerSampledImageFeaturesNV& getCornerSampledImageFeatures (void) const;
+const vk::VkPhysicalDeviceCoverageReductionModeFeaturesNV& getCoverageReductionModeFeatures (void) const;
+const vk::VkPhysicalDeviceCustomBorderColorFeaturesEXT& getCustomBorderColorFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& getDedicatedAllocationImageAliasingFeatures (void) const;
+const vk::VkPhysicalDeviceDepthClipControlFeaturesEXT& getDepthClipControlFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT& getDepthClipEnableFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceDescriptorIndexingFeatures& getDescriptorIndexingFeatures (void) const;
+const vk::VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE& getDescriptorSetHostMappingFeaturesVALVE (void) const;
+const vk::VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV& getDeviceGeneratedCommandsFeatures (void) const;
+const vk::VkPhysicalDeviceDeviceMemoryReportFeaturesEXT& getDeviceMemoryReportFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceDiagnosticsConfigFeaturesNV& getDiagnosticsConfigFeatures (void) const;
+const vk::VkPhysicalDeviceDynamicRenderingFeatures& getDynamicRenderingFeatures (void) const;
+const vk::VkPhysicalDeviceExclusiveScissorFeaturesNV& getExclusiveScissorFeatures (void) const;
+const vk::VkPhysicalDeviceExtendedDynamicStateFeaturesEXT& getExtendedDynamicStateFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceExtendedDynamicState2FeaturesEXT& getExtendedDynamicState2FeaturesEXT (void) const;
+const vk::VkPhysicalDeviceExternalMemoryRDMAFeaturesNV& getExternalMemoryRDMAFeatures (void) const;
+const vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT& getFragmentDensityMapFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceFragmentDensityMap2FeaturesEXT& getFragmentDensityMap2FeaturesEXT (void) const;
+const vk::VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM& getFragmentDensityMapOffsetFeaturesQCOM (void) const;
+const vk::VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& getFragmentShaderBarycentricFeatures (void) const;
+const vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& getFragmentShaderInterlockFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceFragmentShadingRateFeaturesKHR& getFragmentShadingRateFeatures (void) const;
+const vk::VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV& getFragmentShadingRateEnumsFeatures (void) const;
+const vk::VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR& getGlobalPriorityQueryFeatures (void) const;
+const vk::VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT& getGraphicsPipelineLibraryFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceHostQueryResetFeatures& getHostQueryResetFeatures (void) const;
+const vk::VkPhysicalDeviceImagelessFramebufferFeatures& getImagelessFramebufferFeatures (void) const;
+const vk::VkPhysicalDeviceImage2DViewOf3DFeaturesEXT& getImage2DViewOf3DFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceImageCompressionControlFeaturesEXT& getImageCompressionControlFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT& getImageCompressionControlSwapchainFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceImageRobustnessFeatures& getImageRobustnessFeatures (void) const;
+const vk::VkPhysicalDeviceImageViewMinLodFeaturesEXT& getImageViewMinLodFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT& getIndexTypeUint8FeaturesEXT (void) const;
+const vk::VkPhysicalDeviceInheritedViewportScissorFeaturesNV& getInheritedViewportScissorFeatures (void) const;
+const vk::VkPhysicalDeviceInlineUniformBlockFeatures& getInlineUniformBlockFeatures (void) const;
+const vk::VkPhysicalDeviceInvocationMaskFeaturesHUAWEI& getInvocationMaskFeaturesHUAWEI (void) const;
+const vk::VkPhysicalDeviceLinearColorAttachmentFeaturesNV& getLinearColorAttachmentFeatures (void) const;
+const vk::VkPhysicalDeviceLineRasterizationFeaturesEXT& getLineRasterizationFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceMaintenance4Features& getMaintenance4Features (void) const;
+const vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT& getMemoryPriorityFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceMeshShaderFeaturesNV& getMeshShaderFeatures (void) const;
+const vk::VkPhysicalDeviceMultiviewFeatures& getMultiviewFeatures (void) const;
+const vk::VkPhysicalDeviceMultiDrawFeaturesEXT& getMultiDrawFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE& getMutableDescriptorTypeFeaturesVALVE (void) const;
+const vk::VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT& getPageableDeviceLocalMemoryFeaturesEXT (void) const;
+const vk::VkPhysicalDevicePerformanceQueryFeaturesKHR& getPerformanceQueryFeatures (void) const;
+const vk::VkPhysicalDevicePipelineCreationCacheControlFeatures& getPipelineCreationCacheControlFeatures (void) const;
+const vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& getPipelineExecutablePropertiesFeatures (void) const;
+const vk::VkPhysicalDevicePipelinePropertiesFeaturesEXT& getPipelinePropertiesFeaturesEXT (void) const;
+const vk::VkPhysicalDevicePortabilitySubsetFeaturesKHR& getPortabilitySubsetFeatures (void) const;
+const vk::VkPhysicalDevicePresentIdFeaturesKHR& getPresentIdFeatures (void) const;
+const vk::VkPhysicalDevicePresentWaitFeaturesKHR& getPresentWaitFeatures (void) const;
+const vk::VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT& getPrimitivesGeneratedQueryFeaturesEXT (void) const;
+const vk::VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT& getPrimitiveTopologyListRestartFeaturesEXT (void) const;
+const vk::VkPhysicalDevicePrivateDataFeatures& getPrivateDataFeatures (void) const;
+const vk::VkPhysicalDeviceProtectedMemoryFeatures& getProtectedMemoryFeatures (void) const;
+const vk::VkPhysicalDeviceProvokingVertexFeaturesEXT& getProvokingVertexFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceRayQueryFeaturesKHR& getRayQueryFeatures (void) const;
+const vk::VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR& getRayTracingMaintenance1Features (void) const;
+const vk::VkPhysicalDeviceRayTracingMotionBlurFeaturesNV& getRayTracingMotionBlurFeatures (void) const;
+const vk::VkPhysicalDeviceRayTracingPipelineFeaturesKHR& getRayTracingPipelineFeatures (void) const;
+const vk::VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& getRepresentativeFragmentTestFeatures (void) const;
+const vk::VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT& getRGBA10X6FormatsFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceRobustness2FeaturesEXT& getRobustness2FeaturesEXT (void) const;
+const vk::VkPhysicalDeviceSamplerYcbcrConversionFeatures& getSamplerYcbcrConversionFeatures (void) const;
+const vk::VkPhysicalDeviceScalarBlockLayoutFeatures& getScalarBlockLayoutFeatures (void) const;
+const vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& getSeparateDepthStencilLayoutsFeatures (void) const;
+const vk::VkPhysicalDeviceShaderAtomicFloatFeaturesEXT& getShaderAtomicFloatFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT& getShaderAtomicFloat2FeaturesEXT (void) const;
+const vk::VkPhysicalDeviceShaderAtomicInt64Features& getShaderAtomicInt64Features (void) const;
+const vk::VkPhysicalDeviceShaderClockFeaturesKHR& getShaderClockFeatures (void) const;
+const vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures& getShaderDemoteToHelperInvocationFeatures (void) const;
+const vk::VkPhysicalDeviceShaderDrawParametersFeatures& getShaderDrawParametersFeatures (void) const;
+const vk::VkPhysicalDeviceShaderFloat16Int8Features& getShaderFloat16Int8Features (void) const;
+const vk::VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT& getShaderImageAtomicInt64FeaturesEXT (void) const;
+const vk::VkPhysicalDeviceShaderImageFootprintFeaturesNV& getShaderImageFootprintFeatures (void) const;
+const vk::VkPhysicalDeviceShaderIntegerDotProductFeatures& getShaderIntegerDotProductFeatures (void) const;
+const vk::VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& getShaderIntegerFunctions2FeaturesINTEL (void) const;
+const vk::VkPhysicalDeviceShaderSMBuiltinsFeaturesNV& getShaderSMBuiltinsFeatures (void) const;
+const vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& getShaderSubgroupExtendedTypesFeatures (void) const;
+const vk::VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR& getShaderSubgroupUniformControlFlowFeatures (void) const;
+const vk::VkPhysicalDeviceShaderTerminateInvocationFeatures& getShaderTerminateInvocationFeatures (void) const;
+const vk::VkPhysicalDeviceShadingRateImageFeaturesNV& getShadingRateImageFeatures (void) const;
+const vk::VkPhysicalDeviceSubgroupSizeControlFeatures& getSubgroupSizeControlFeatures (void) const;
+const vk::VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT& getSubpassMergeFeedbackFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceSubpassShadingFeaturesHUAWEI& getSubpassShadingFeaturesHUAWEI (void) const;
+const vk::VkPhysicalDeviceSynchronization2Features& getSynchronization2Features (void) const;
+const vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& getTexelBufferAlignmentFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceTextureCompressionASTCHDRFeatures& getTextureCompressionASTCHDRFeatures (void) const;
+const vk::VkPhysicalDeviceTimelineSemaphoreFeatures& getTimelineSemaphoreFeatures (void) const;
+const vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT& getTransformFeedbackFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceUniformBufferStandardLayoutFeatures& getUniformBufferStandardLayoutFeatures (void) const;
+const vk::VkPhysicalDeviceVariablePointersFeatures& getVariablePointersFeatures (void) const;
+const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& getVertexAttributeDivisorFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT& getVertexInputDynamicStateFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceVulkanMemoryModelFeatures& getVulkanMemoryModelFeatures (void) const;
+const vk::VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR& getWorkgroupMemoryExplicitLayoutFeatures (void) const;
+const vk::VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT& getYcbcr2Plane444FormatsFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& getYcbcrImageArraysFeaturesEXT (void) const;
+const vk::VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures& getZeroInitializeWorkgroupMemoryFeatures (void) const;
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeaturesForContextDefs.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeaturesForContextDefs.inl
index 5e5b0af..eddf0f2 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeaturesForContextDefs.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeaturesForContextDefs.inl
@@ -3,112 +3,117 @@
* This file was generated by /scripts/gen_framework.py
*/
-const vk::VkPhysicalDevice16BitStorageFeatures& Context::get16BitStorageFeatures (void) const { return m_device->get16BitStorageFeatures(); }
-const vk::VkPhysicalDevice4444FormatsFeaturesEXT& Context::get4444FormatsFeaturesEXT (void) const { return m_device->get4444FormatsFeaturesEXT(); }
-const vk::VkPhysicalDevice8BitStorageFeatures& Context::get8BitStorageFeatures (void) const { return m_device->get8BitStorageFeatures(); }
-const vk::VkPhysicalDeviceAccelerationStructureFeaturesKHR& Context::getAccelerationStructureFeatures (void) const { return m_device->getAccelerationStructureFeatures(); }
-const vk::VkPhysicalDeviceASTCDecodeFeaturesEXT& Context::getASTCDecodeFeaturesEXT (void) const { return m_device->getASTCDecodeFeaturesEXT(); }
-const vk::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& Context::getBlendOperationAdvancedFeaturesEXT (void) const { return m_device->getBlendOperationAdvancedFeaturesEXT(); }
-const vk::VkPhysicalDeviceBorderColorSwizzleFeaturesEXT& Context::getBorderColorSwizzleFeaturesEXT (void) const { return m_device->getBorderColorSwizzleFeaturesEXT(); }
-const vk::VkPhysicalDeviceBufferDeviceAddressFeatures& Context::getBufferDeviceAddressFeatures (void) const { return m_device->getBufferDeviceAddressFeatures(); }
-const vk::VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& Context::getBufferDeviceAddressFeaturesEXT (void) const { return m_device->getBufferDeviceAddressFeaturesEXT(); }
-const vk::VkPhysicalDeviceCoherentMemoryFeaturesAMD& Context::getCoherentMemoryFeaturesAMD (void) const { return m_device->getCoherentMemoryFeaturesAMD(); }
-const vk::VkPhysicalDeviceColorWriteEnableFeaturesEXT& Context::getColorWriteEnableFeaturesEXT (void) const { return m_device->getColorWriteEnableFeaturesEXT(); }
-const vk::VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& Context::getComputeShaderDerivativesFeatures (void) const { return m_device->getComputeShaderDerivativesFeatures(); }
-const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT& Context::getConditionalRenderingFeaturesEXT (void) const { return m_device->getConditionalRenderingFeaturesEXT(); }
-const vk::VkPhysicalDeviceCooperativeMatrixFeaturesNV& Context::getCooperativeMatrixFeatures (void) const { return m_device->getCooperativeMatrixFeatures(); }
-const vk::VkPhysicalDeviceCornerSampledImageFeaturesNV& Context::getCornerSampledImageFeatures (void) const { return m_device->getCornerSampledImageFeatures(); }
-const vk::VkPhysicalDeviceCoverageReductionModeFeaturesNV& Context::getCoverageReductionModeFeatures (void) const { return m_device->getCoverageReductionModeFeatures(); }
-const vk::VkPhysicalDeviceCustomBorderColorFeaturesEXT& Context::getCustomBorderColorFeaturesEXT (void) const { return m_device->getCustomBorderColorFeaturesEXT(); }
-const vk::VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& Context::getDedicatedAllocationImageAliasingFeatures (void) const { return m_device->getDedicatedAllocationImageAliasingFeatures(); }
-const vk::VkPhysicalDeviceDepthClipControlFeaturesEXT& Context::getDepthClipControlFeaturesEXT (void) const { return m_device->getDepthClipControlFeaturesEXT(); }
-const vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT& Context::getDepthClipEnableFeaturesEXT (void) const { return m_device->getDepthClipEnableFeaturesEXT(); }
-const vk::VkPhysicalDeviceDescriptorIndexingFeatures& Context::getDescriptorIndexingFeatures (void) const { return m_device->getDescriptorIndexingFeatures(); }
-const vk::VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE& Context::getDescriptorSetHostMappingFeaturesVALVE (void) const { return m_device->getDescriptorSetHostMappingFeaturesVALVE(); }
-const vk::VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV& Context::getDeviceGeneratedCommandsFeatures (void) const { return m_device->getDeviceGeneratedCommandsFeatures(); }
-const vk::VkPhysicalDeviceDeviceMemoryReportFeaturesEXT& Context::getDeviceMemoryReportFeaturesEXT (void) const { return m_device->getDeviceMemoryReportFeaturesEXT(); }
-const vk::VkPhysicalDeviceDiagnosticsConfigFeaturesNV& Context::getDiagnosticsConfigFeatures (void) const { return m_device->getDiagnosticsConfigFeatures(); }
-const vk::VkPhysicalDeviceDynamicRenderingFeatures& Context::getDynamicRenderingFeatures (void) const { return m_device->getDynamicRenderingFeatures(); }
-const vk::VkPhysicalDeviceExclusiveScissorFeaturesNV& Context::getExclusiveScissorFeatures (void) const { return m_device->getExclusiveScissorFeatures(); }
-const vk::VkPhysicalDeviceExtendedDynamicStateFeaturesEXT& Context::getExtendedDynamicStateFeaturesEXT (void) const { return m_device->getExtendedDynamicStateFeaturesEXT(); }
-const vk::VkPhysicalDeviceExtendedDynamicState2FeaturesEXT& Context::getExtendedDynamicState2FeaturesEXT (void) const { return m_device->getExtendedDynamicState2FeaturesEXT(); }
-const vk::VkPhysicalDeviceExternalMemoryRDMAFeaturesNV& Context::getExternalMemoryRDMAFeatures (void) const { return m_device->getExternalMemoryRDMAFeatures(); }
-const vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT& Context::getFragmentDensityMapFeaturesEXT (void) const { return m_device->getFragmentDensityMapFeaturesEXT(); }
-const vk::VkPhysicalDeviceFragmentDensityMap2FeaturesEXT& Context::getFragmentDensityMap2FeaturesEXT (void) const { return m_device->getFragmentDensityMap2FeaturesEXT(); }
-const vk::VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM& Context::getFragmentDensityMapOffsetFeaturesQCOM (void) const { return m_device->getFragmentDensityMapOffsetFeaturesQCOM(); }
-const vk::VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& Context::getFragmentShaderBarycentricFeatures (void) const { return m_device->getFragmentShaderBarycentricFeatures(); }
-const vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& Context::getFragmentShaderInterlockFeaturesEXT (void) const { return m_device->getFragmentShaderInterlockFeaturesEXT(); }
-const vk::VkPhysicalDeviceFragmentShadingRateFeaturesKHR& Context::getFragmentShadingRateFeatures (void) const { return m_device->getFragmentShadingRateFeatures(); }
-const vk::VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV& Context::getFragmentShadingRateEnumsFeatures (void) const { return m_device->getFragmentShadingRateEnumsFeatures(); }
-const vk::VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR& Context::getGlobalPriorityQueryFeatures (void) const { return m_device->getGlobalPriorityQueryFeatures(); }
-const vk::VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT& Context::getGraphicsPipelineLibraryFeaturesEXT (void) const { return m_device->getGraphicsPipelineLibraryFeaturesEXT(); }
-const vk::VkPhysicalDeviceHostQueryResetFeatures& Context::getHostQueryResetFeatures (void) const { return m_device->getHostQueryResetFeatures(); }
-const vk::VkPhysicalDeviceImagelessFramebufferFeatures& Context::getImagelessFramebufferFeatures (void) const { return m_device->getImagelessFramebufferFeatures(); }
-const vk::VkPhysicalDeviceImage2DViewOf3DFeaturesEXT& Context::getImage2DViewOf3DFeaturesEXT (void) const { return m_device->getImage2DViewOf3DFeaturesEXT(); }
-const vk::VkPhysicalDeviceImageRobustnessFeatures& Context::getImageRobustnessFeatures (void) const { return m_device->getImageRobustnessFeatures(); }
-const vk::VkPhysicalDeviceImageViewMinLodFeaturesEXT& Context::getImageViewMinLodFeaturesEXT (void) const { return m_device->getImageViewMinLodFeaturesEXT(); }
-const vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT& Context::getIndexTypeUint8FeaturesEXT (void) const { return m_device->getIndexTypeUint8FeaturesEXT(); }
-const vk::VkPhysicalDeviceInheritedViewportScissorFeaturesNV& Context::getInheritedViewportScissorFeatures (void) const { return m_device->getInheritedViewportScissorFeatures(); }
-const vk::VkPhysicalDeviceInlineUniformBlockFeatures& Context::getInlineUniformBlockFeatures (void) const { return m_device->getInlineUniformBlockFeatures(); }
-const vk::VkPhysicalDeviceInvocationMaskFeaturesHUAWEI& Context::getInvocationMaskFeaturesHUAWEI (void) const { return m_device->getInvocationMaskFeaturesHUAWEI(); }
-const vk::VkPhysicalDeviceLinearColorAttachmentFeaturesNV& Context::getLinearColorAttachmentFeatures (void) const { return m_device->getLinearColorAttachmentFeatures(); }
-const vk::VkPhysicalDeviceLineRasterizationFeaturesEXT& Context::getLineRasterizationFeaturesEXT (void) const { return m_device->getLineRasterizationFeaturesEXT(); }
-const vk::VkPhysicalDeviceMaintenance4Features& Context::getMaintenance4Features (void) const { return m_device->getMaintenance4Features(); }
-const vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT& Context::getMemoryPriorityFeaturesEXT (void) const { return m_device->getMemoryPriorityFeaturesEXT(); }
-const vk::VkPhysicalDeviceMeshShaderFeaturesNV& Context::getMeshShaderFeatures (void) const { return m_device->getMeshShaderFeatures(); }
-const vk::VkPhysicalDeviceMultiviewFeatures& Context::getMultiviewFeatures (void) const { return m_device->getMultiviewFeatures(); }
-const vk::VkPhysicalDeviceMultiDrawFeaturesEXT& Context::getMultiDrawFeaturesEXT (void) const { return m_device->getMultiDrawFeaturesEXT(); }
-const vk::VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE& Context::getMutableDescriptorTypeFeaturesVALVE (void) const { return m_device->getMutableDescriptorTypeFeaturesVALVE(); }
-const vk::VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT& Context::getPageableDeviceLocalMemoryFeaturesEXT (void) const { return m_device->getPageableDeviceLocalMemoryFeaturesEXT(); }
-const vk::VkPhysicalDevicePerformanceQueryFeaturesKHR& Context::getPerformanceQueryFeatures (void) const { return m_device->getPerformanceQueryFeatures(); }
-const vk::VkPhysicalDevicePipelineCreationCacheControlFeatures& Context::getPipelineCreationCacheControlFeatures (void) const { return m_device->getPipelineCreationCacheControlFeatures(); }
-const vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& Context::getPipelineExecutablePropertiesFeatures (void) const { return m_device->getPipelineExecutablePropertiesFeatures(); }
-const vk::VkPhysicalDevicePortabilitySubsetFeaturesKHR& Context::getPortabilitySubsetFeatures (void) const { return m_device->getPortabilitySubsetFeatures(); }
-const vk::VkPhysicalDevicePresentIdFeaturesKHR& Context::getPresentIdFeatures (void) const { return m_device->getPresentIdFeatures(); }
-const vk::VkPhysicalDevicePresentWaitFeaturesKHR& Context::getPresentWaitFeatures (void) const { return m_device->getPresentWaitFeatures(); }
-const vk::VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT& Context::getPrimitivesGeneratedQueryFeaturesEXT (void) const { return m_device->getPrimitivesGeneratedQueryFeaturesEXT(); }
-const vk::VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT& Context::getPrimitiveTopologyListRestartFeaturesEXT (void) const { return m_device->getPrimitiveTopologyListRestartFeaturesEXT(); }
-const vk::VkPhysicalDevicePrivateDataFeatures& Context::getPrivateDataFeatures (void) const { return m_device->getPrivateDataFeatures(); }
-const vk::VkPhysicalDeviceProtectedMemoryFeatures& Context::getProtectedMemoryFeatures (void) const { return m_device->getProtectedMemoryFeatures(); }
-const vk::VkPhysicalDeviceProvokingVertexFeaturesEXT& Context::getProvokingVertexFeaturesEXT (void) const { return m_device->getProvokingVertexFeaturesEXT(); }
-const vk::VkPhysicalDeviceRayQueryFeaturesKHR& Context::getRayQueryFeatures (void) const { return m_device->getRayQueryFeatures(); }
-const vk::VkPhysicalDeviceRayTracingMotionBlurFeaturesNV& Context::getRayTracingMotionBlurFeatures (void) const { return m_device->getRayTracingMotionBlurFeatures(); }
-const vk::VkPhysicalDeviceRayTracingPipelineFeaturesKHR& Context::getRayTracingPipelineFeatures (void) const { return m_device->getRayTracingPipelineFeatures(); }
-const vk::VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& Context::getRepresentativeFragmentTestFeatures (void) const { return m_device->getRepresentativeFragmentTestFeatures(); }
-const vk::VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT& Context::getRGBA10X6FormatsFeaturesEXT (void) const { return m_device->getRGBA10X6FormatsFeaturesEXT(); }
-const vk::VkPhysicalDeviceRobustness2FeaturesEXT& Context::getRobustness2FeaturesEXT (void) const { return m_device->getRobustness2FeaturesEXT(); }
-const vk::VkPhysicalDeviceSamplerYcbcrConversionFeatures& Context::getSamplerYcbcrConversionFeatures (void) const { return m_device->getSamplerYcbcrConversionFeatures(); }
-const vk::VkPhysicalDeviceScalarBlockLayoutFeatures& Context::getScalarBlockLayoutFeatures (void) const { return m_device->getScalarBlockLayoutFeatures(); }
-const vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& Context::getSeparateDepthStencilLayoutsFeatures (void) const { return m_device->getSeparateDepthStencilLayoutsFeatures(); }
-const vk::VkPhysicalDeviceShaderAtomicFloatFeaturesEXT& Context::getShaderAtomicFloatFeaturesEXT (void) const { return m_device->getShaderAtomicFloatFeaturesEXT(); }
-const vk::VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT& Context::getShaderAtomicFloat2FeaturesEXT (void) const { return m_device->getShaderAtomicFloat2FeaturesEXT(); }
-const vk::VkPhysicalDeviceShaderAtomicInt64Features& Context::getShaderAtomicInt64Features (void) const { return m_device->getShaderAtomicInt64Features(); }
-const vk::VkPhysicalDeviceShaderClockFeaturesKHR& Context::getShaderClockFeatures (void) const { return m_device->getShaderClockFeatures(); }
-const vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures& Context::getShaderDemoteToHelperInvocationFeatures (void) const { return m_device->getShaderDemoteToHelperInvocationFeatures(); }
-const vk::VkPhysicalDeviceShaderDrawParametersFeatures& Context::getShaderDrawParametersFeatures (void) const { return m_device->getShaderDrawParametersFeatures(); }
-const vk::VkPhysicalDeviceShaderFloat16Int8Features& Context::getShaderFloat16Int8Features (void) const { return m_device->getShaderFloat16Int8Features(); }
-const vk::VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT& Context::getShaderImageAtomicInt64FeaturesEXT (void) const { return m_device->getShaderImageAtomicInt64FeaturesEXT(); }
-const vk::VkPhysicalDeviceShaderImageFootprintFeaturesNV& Context::getShaderImageFootprintFeatures (void) const { return m_device->getShaderImageFootprintFeatures(); }
-const vk::VkPhysicalDeviceShaderIntegerDotProductFeatures& Context::getShaderIntegerDotProductFeatures (void) const { return m_device->getShaderIntegerDotProductFeatures(); }
-const vk::VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& Context::getShaderIntegerFunctions2FeaturesINTEL (void) const { return m_device->getShaderIntegerFunctions2FeaturesINTEL(); }
-const vk::VkPhysicalDeviceShaderSMBuiltinsFeaturesNV& Context::getShaderSMBuiltinsFeatures (void) const { return m_device->getShaderSMBuiltinsFeatures(); }
-const vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& Context::getShaderSubgroupExtendedTypesFeatures (void) const { return m_device->getShaderSubgroupExtendedTypesFeatures(); }
-const vk::VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR& Context::getShaderSubgroupUniformControlFlowFeatures (void) const { return m_device->getShaderSubgroupUniformControlFlowFeatures(); }
-const vk::VkPhysicalDeviceShaderTerminateInvocationFeatures& Context::getShaderTerminateInvocationFeatures (void) const { return m_device->getShaderTerminateInvocationFeatures(); }
-const vk::VkPhysicalDeviceShadingRateImageFeaturesNV& Context::getShadingRateImageFeatures (void) const { return m_device->getShadingRateImageFeatures(); }
-const vk::VkPhysicalDeviceSubgroupSizeControlFeatures& Context::getSubgroupSizeControlFeatures (void) const { return m_device->getSubgroupSizeControlFeatures(); }
-const vk::VkPhysicalDeviceSubpassShadingFeaturesHUAWEI& Context::getSubpassShadingFeaturesHUAWEI (void) const { return m_device->getSubpassShadingFeaturesHUAWEI(); }
-const vk::VkPhysicalDeviceSynchronization2Features& Context::getSynchronization2Features (void) const { return m_device->getSynchronization2Features(); }
-const vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& Context::getTexelBufferAlignmentFeaturesEXT (void) const { return m_device->getTexelBufferAlignmentFeaturesEXT(); }
-const vk::VkPhysicalDeviceTextureCompressionASTCHDRFeatures& Context::getTextureCompressionASTCHDRFeatures (void) const { return m_device->getTextureCompressionASTCHDRFeatures(); }
-const vk::VkPhysicalDeviceTimelineSemaphoreFeatures& Context::getTimelineSemaphoreFeatures (void) const { return m_device->getTimelineSemaphoreFeatures(); }
-const vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT& Context::getTransformFeedbackFeaturesEXT (void) const { return m_device->getTransformFeedbackFeaturesEXT(); }
-const vk::VkPhysicalDeviceUniformBufferStandardLayoutFeatures& Context::getUniformBufferStandardLayoutFeatures (void) const { return m_device->getUniformBufferStandardLayoutFeatures(); }
-const vk::VkPhysicalDeviceVariablePointersFeatures& Context::getVariablePointersFeatures (void) const { return m_device->getVariablePointersFeatures(); }
-const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& Context::getVertexAttributeDivisorFeaturesEXT (void) const { return m_device->getVertexAttributeDivisorFeaturesEXT(); }
-const vk::VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT& Context::getVertexInputDynamicStateFeaturesEXT (void) const { return m_device->getVertexInputDynamicStateFeaturesEXT(); }
-const vk::VkPhysicalDeviceVulkanMemoryModelFeatures& Context::getVulkanMemoryModelFeatures (void) const { return m_device->getVulkanMemoryModelFeatures(); }
-const vk::VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR& Context::getWorkgroupMemoryExplicitLayoutFeatures (void) const { return m_device->getWorkgroupMemoryExplicitLayoutFeatures(); }
-const vk::VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT& Context::getYcbcr2Plane444FormatsFeaturesEXT (void) const { return m_device->getYcbcr2Plane444FormatsFeaturesEXT(); }
-const vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& Context::getYcbcrImageArraysFeaturesEXT (void) const { return m_device->getYcbcrImageArraysFeaturesEXT(); }
-const vk::VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures& Context::getZeroInitializeWorkgroupMemoryFeatures (void) const { return m_device->getZeroInitializeWorkgroupMemoryFeatures(); }
+const vk::VkPhysicalDevice16BitStorageFeatures& Context::get16BitStorageFeatures (void) const { return m_device->get16BitStorageFeatures(); }
+const vk::VkPhysicalDevice4444FormatsFeaturesEXT& Context::get4444FormatsFeaturesEXT (void) const { return m_device->get4444FormatsFeaturesEXT(); }
+const vk::VkPhysicalDevice8BitStorageFeatures& Context::get8BitStorageFeatures (void) const { return m_device->get8BitStorageFeatures(); }
+const vk::VkPhysicalDeviceAccelerationStructureFeaturesKHR& Context::getAccelerationStructureFeatures (void) const { return m_device->getAccelerationStructureFeatures(); }
+const vk::VkPhysicalDeviceASTCDecodeFeaturesEXT& Context::getASTCDecodeFeaturesEXT (void) const { return m_device->getASTCDecodeFeaturesEXT(); }
+const vk::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& Context::getBlendOperationAdvancedFeaturesEXT (void) const { return m_device->getBlendOperationAdvancedFeaturesEXT(); }
+const vk::VkPhysicalDeviceBorderColorSwizzleFeaturesEXT& Context::getBorderColorSwizzleFeaturesEXT (void) const { return m_device->getBorderColorSwizzleFeaturesEXT(); }
+const vk::VkPhysicalDeviceBufferDeviceAddressFeatures& Context::getBufferDeviceAddressFeatures (void) const { return m_device->getBufferDeviceAddressFeatures(); }
+const vk::VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& Context::getBufferDeviceAddressFeaturesEXT (void) const { return m_device->getBufferDeviceAddressFeaturesEXT(); }
+const vk::VkPhysicalDeviceCoherentMemoryFeaturesAMD& Context::getCoherentMemoryFeaturesAMD (void) const { return m_device->getCoherentMemoryFeaturesAMD(); }
+const vk::VkPhysicalDeviceColorWriteEnableFeaturesEXT& Context::getColorWriteEnableFeaturesEXT (void) const { return m_device->getColorWriteEnableFeaturesEXT(); }
+const vk::VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& Context::getComputeShaderDerivativesFeatures (void) const { return m_device->getComputeShaderDerivativesFeatures(); }
+const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT& Context::getConditionalRenderingFeaturesEXT (void) const { return m_device->getConditionalRenderingFeaturesEXT(); }
+const vk::VkPhysicalDeviceCooperativeMatrixFeaturesNV& Context::getCooperativeMatrixFeatures (void) const { return m_device->getCooperativeMatrixFeatures(); }
+const vk::VkPhysicalDeviceCornerSampledImageFeaturesNV& Context::getCornerSampledImageFeatures (void) const { return m_device->getCornerSampledImageFeatures(); }
+const vk::VkPhysicalDeviceCoverageReductionModeFeaturesNV& Context::getCoverageReductionModeFeatures (void) const { return m_device->getCoverageReductionModeFeatures(); }
+const vk::VkPhysicalDeviceCustomBorderColorFeaturesEXT& Context::getCustomBorderColorFeaturesEXT (void) const { return m_device->getCustomBorderColorFeaturesEXT(); }
+const vk::VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& Context::getDedicatedAllocationImageAliasingFeatures (void) const { return m_device->getDedicatedAllocationImageAliasingFeatures(); }
+const vk::VkPhysicalDeviceDepthClipControlFeaturesEXT& Context::getDepthClipControlFeaturesEXT (void) const { return m_device->getDepthClipControlFeaturesEXT(); }
+const vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT& Context::getDepthClipEnableFeaturesEXT (void) const { return m_device->getDepthClipEnableFeaturesEXT(); }
+const vk::VkPhysicalDeviceDescriptorIndexingFeatures& Context::getDescriptorIndexingFeatures (void) const { return m_device->getDescriptorIndexingFeatures(); }
+const vk::VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE& Context::getDescriptorSetHostMappingFeaturesVALVE (void) const { return m_device->getDescriptorSetHostMappingFeaturesVALVE(); }
+const vk::VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV& Context::getDeviceGeneratedCommandsFeatures (void) const { return m_device->getDeviceGeneratedCommandsFeatures(); }
+const vk::VkPhysicalDeviceDeviceMemoryReportFeaturesEXT& Context::getDeviceMemoryReportFeaturesEXT (void) const { return m_device->getDeviceMemoryReportFeaturesEXT(); }
+const vk::VkPhysicalDeviceDiagnosticsConfigFeaturesNV& Context::getDiagnosticsConfigFeatures (void) const { return m_device->getDiagnosticsConfigFeatures(); }
+const vk::VkPhysicalDeviceDynamicRenderingFeatures& Context::getDynamicRenderingFeatures (void) const { return m_device->getDynamicRenderingFeatures(); }
+const vk::VkPhysicalDeviceExclusiveScissorFeaturesNV& Context::getExclusiveScissorFeatures (void) const { return m_device->getExclusiveScissorFeatures(); }
+const vk::VkPhysicalDeviceExtendedDynamicStateFeaturesEXT& Context::getExtendedDynamicStateFeaturesEXT (void) const { return m_device->getExtendedDynamicStateFeaturesEXT(); }
+const vk::VkPhysicalDeviceExtendedDynamicState2FeaturesEXT& Context::getExtendedDynamicState2FeaturesEXT (void) const { return m_device->getExtendedDynamicState2FeaturesEXT(); }
+const vk::VkPhysicalDeviceExternalMemoryRDMAFeaturesNV& Context::getExternalMemoryRDMAFeatures (void) const { return m_device->getExternalMemoryRDMAFeatures(); }
+const vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT& Context::getFragmentDensityMapFeaturesEXT (void) const { return m_device->getFragmentDensityMapFeaturesEXT(); }
+const vk::VkPhysicalDeviceFragmentDensityMap2FeaturesEXT& Context::getFragmentDensityMap2FeaturesEXT (void) const { return m_device->getFragmentDensityMap2FeaturesEXT(); }
+const vk::VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM& Context::getFragmentDensityMapOffsetFeaturesQCOM (void) const { return m_device->getFragmentDensityMapOffsetFeaturesQCOM(); }
+const vk::VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& Context::getFragmentShaderBarycentricFeatures (void) const { return m_device->getFragmentShaderBarycentricFeatures(); }
+const vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& Context::getFragmentShaderInterlockFeaturesEXT (void) const { return m_device->getFragmentShaderInterlockFeaturesEXT(); }
+const vk::VkPhysicalDeviceFragmentShadingRateFeaturesKHR& Context::getFragmentShadingRateFeatures (void) const { return m_device->getFragmentShadingRateFeatures(); }
+const vk::VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV& Context::getFragmentShadingRateEnumsFeatures (void) const { return m_device->getFragmentShadingRateEnumsFeatures(); }
+const vk::VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR& Context::getGlobalPriorityQueryFeatures (void) const { return m_device->getGlobalPriorityQueryFeatures(); }
+const vk::VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT& Context::getGraphicsPipelineLibraryFeaturesEXT (void) const { return m_device->getGraphicsPipelineLibraryFeaturesEXT(); }
+const vk::VkPhysicalDeviceHostQueryResetFeatures& Context::getHostQueryResetFeatures (void) const { return m_device->getHostQueryResetFeatures(); }
+const vk::VkPhysicalDeviceImagelessFramebufferFeatures& Context::getImagelessFramebufferFeatures (void) const { return m_device->getImagelessFramebufferFeatures(); }
+const vk::VkPhysicalDeviceImage2DViewOf3DFeaturesEXT& Context::getImage2DViewOf3DFeaturesEXT (void) const { return m_device->getImage2DViewOf3DFeaturesEXT(); }
+const vk::VkPhysicalDeviceImageCompressionControlFeaturesEXT& Context::getImageCompressionControlFeaturesEXT (void) const { return m_device->getImageCompressionControlFeaturesEXT(); }
+const vk::VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT& Context::getImageCompressionControlSwapchainFeaturesEXT (void) const { return m_device->getImageCompressionControlSwapchainFeaturesEXT(); }
+const vk::VkPhysicalDeviceImageRobustnessFeatures& Context::getImageRobustnessFeatures (void) const { return m_device->getImageRobustnessFeatures(); }
+const vk::VkPhysicalDeviceImageViewMinLodFeaturesEXT& Context::getImageViewMinLodFeaturesEXT (void) const { return m_device->getImageViewMinLodFeaturesEXT(); }
+const vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT& Context::getIndexTypeUint8FeaturesEXT (void) const { return m_device->getIndexTypeUint8FeaturesEXT(); }
+const vk::VkPhysicalDeviceInheritedViewportScissorFeaturesNV& Context::getInheritedViewportScissorFeatures (void) const { return m_device->getInheritedViewportScissorFeatures(); }
+const vk::VkPhysicalDeviceInlineUniformBlockFeatures& Context::getInlineUniformBlockFeatures (void) const { return m_device->getInlineUniformBlockFeatures(); }
+const vk::VkPhysicalDeviceInvocationMaskFeaturesHUAWEI& Context::getInvocationMaskFeaturesHUAWEI (void) const { return m_device->getInvocationMaskFeaturesHUAWEI(); }
+const vk::VkPhysicalDeviceLinearColorAttachmentFeaturesNV& Context::getLinearColorAttachmentFeatures (void) const { return m_device->getLinearColorAttachmentFeatures(); }
+const vk::VkPhysicalDeviceLineRasterizationFeaturesEXT& Context::getLineRasterizationFeaturesEXT (void) const { return m_device->getLineRasterizationFeaturesEXT(); }
+const vk::VkPhysicalDeviceMaintenance4Features& Context::getMaintenance4Features (void) const { return m_device->getMaintenance4Features(); }
+const vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT& Context::getMemoryPriorityFeaturesEXT (void) const { return m_device->getMemoryPriorityFeaturesEXT(); }
+const vk::VkPhysicalDeviceMeshShaderFeaturesNV& Context::getMeshShaderFeatures (void) const { return m_device->getMeshShaderFeatures(); }
+const vk::VkPhysicalDeviceMultiviewFeatures& Context::getMultiviewFeatures (void) const { return m_device->getMultiviewFeatures(); }
+const vk::VkPhysicalDeviceMultiDrawFeaturesEXT& Context::getMultiDrawFeaturesEXT (void) const { return m_device->getMultiDrawFeaturesEXT(); }
+const vk::VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE& Context::getMutableDescriptorTypeFeaturesVALVE (void) const { return m_device->getMutableDescriptorTypeFeaturesVALVE(); }
+const vk::VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT& Context::getPageableDeviceLocalMemoryFeaturesEXT (void) const { return m_device->getPageableDeviceLocalMemoryFeaturesEXT(); }
+const vk::VkPhysicalDevicePerformanceQueryFeaturesKHR& Context::getPerformanceQueryFeatures (void) const { return m_device->getPerformanceQueryFeatures(); }
+const vk::VkPhysicalDevicePipelineCreationCacheControlFeatures& Context::getPipelineCreationCacheControlFeatures (void) const { return m_device->getPipelineCreationCacheControlFeatures(); }
+const vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& Context::getPipelineExecutablePropertiesFeatures (void) const { return m_device->getPipelineExecutablePropertiesFeatures(); }
+const vk::VkPhysicalDevicePipelinePropertiesFeaturesEXT& Context::getPipelinePropertiesFeaturesEXT (void) const { return m_device->getPipelinePropertiesFeaturesEXT(); }
+const vk::VkPhysicalDevicePortabilitySubsetFeaturesKHR& Context::getPortabilitySubsetFeatures (void) const { return m_device->getPortabilitySubsetFeatures(); }
+const vk::VkPhysicalDevicePresentIdFeaturesKHR& Context::getPresentIdFeatures (void) const { return m_device->getPresentIdFeatures(); }
+const vk::VkPhysicalDevicePresentWaitFeaturesKHR& Context::getPresentWaitFeatures (void) const { return m_device->getPresentWaitFeatures(); }
+const vk::VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT& Context::getPrimitivesGeneratedQueryFeaturesEXT (void) const { return m_device->getPrimitivesGeneratedQueryFeaturesEXT(); }
+const vk::VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT& Context::getPrimitiveTopologyListRestartFeaturesEXT (void) const { return m_device->getPrimitiveTopologyListRestartFeaturesEXT(); }
+const vk::VkPhysicalDevicePrivateDataFeatures& Context::getPrivateDataFeatures (void) const { return m_device->getPrivateDataFeatures(); }
+const vk::VkPhysicalDeviceProtectedMemoryFeatures& Context::getProtectedMemoryFeatures (void) const { return m_device->getProtectedMemoryFeatures(); }
+const vk::VkPhysicalDeviceProvokingVertexFeaturesEXT& Context::getProvokingVertexFeaturesEXT (void) const { return m_device->getProvokingVertexFeaturesEXT(); }
+const vk::VkPhysicalDeviceRayQueryFeaturesKHR& Context::getRayQueryFeatures (void) const { return m_device->getRayQueryFeatures(); }
+const vk::VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR& Context::getRayTracingMaintenance1Features (void) const { return m_device->getRayTracingMaintenance1Features(); }
+const vk::VkPhysicalDeviceRayTracingMotionBlurFeaturesNV& Context::getRayTracingMotionBlurFeatures (void) const { return m_device->getRayTracingMotionBlurFeatures(); }
+const vk::VkPhysicalDeviceRayTracingPipelineFeaturesKHR& Context::getRayTracingPipelineFeatures (void) const { return m_device->getRayTracingPipelineFeatures(); }
+const vk::VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& Context::getRepresentativeFragmentTestFeatures (void) const { return m_device->getRepresentativeFragmentTestFeatures(); }
+const vk::VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT& Context::getRGBA10X6FormatsFeaturesEXT (void) const { return m_device->getRGBA10X6FormatsFeaturesEXT(); }
+const vk::VkPhysicalDeviceRobustness2FeaturesEXT& Context::getRobustness2FeaturesEXT (void) const { return m_device->getRobustness2FeaturesEXT(); }
+const vk::VkPhysicalDeviceSamplerYcbcrConversionFeatures& Context::getSamplerYcbcrConversionFeatures (void) const { return m_device->getSamplerYcbcrConversionFeatures(); }
+const vk::VkPhysicalDeviceScalarBlockLayoutFeatures& Context::getScalarBlockLayoutFeatures (void) const { return m_device->getScalarBlockLayoutFeatures(); }
+const vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& Context::getSeparateDepthStencilLayoutsFeatures (void) const { return m_device->getSeparateDepthStencilLayoutsFeatures(); }
+const vk::VkPhysicalDeviceShaderAtomicFloatFeaturesEXT& Context::getShaderAtomicFloatFeaturesEXT (void) const { return m_device->getShaderAtomicFloatFeaturesEXT(); }
+const vk::VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT& Context::getShaderAtomicFloat2FeaturesEXT (void) const { return m_device->getShaderAtomicFloat2FeaturesEXT(); }
+const vk::VkPhysicalDeviceShaderAtomicInt64Features& Context::getShaderAtomicInt64Features (void) const { return m_device->getShaderAtomicInt64Features(); }
+const vk::VkPhysicalDeviceShaderClockFeaturesKHR& Context::getShaderClockFeatures (void) const { return m_device->getShaderClockFeatures(); }
+const vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures& Context::getShaderDemoteToHelperInvocationFeatures (void) const { return m_device->getShaderDemoteToHelperInvocationFeatures(); }
+const vk::VkPhysicalDeviceShaderDrawParametersFeatures& Context::getShaderDrawParametersFeatures (void) const { return m_device->getShaderDrawParametersFeatures(); }
+const vk::VkPhysicalDeviceShaderFloat16Int8Features& Context::getShaderFloat16Int8Features (void) const { return m_device->getShaderFloat16Int8Features(); }
+const vk::VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT& Context::getShaderImageAtomicInt64FeaturesEXT (void) const { return m_device->getShaderImageAtomicInt64FeaturesEXT(); }
+const vk::VkPhysicalDeviceShaderImageFootprintFeaturesNV& Context::getShaderImageFootprintFeatures (void) const { return m_device->getShaderImageFootprintFeatures(); }
+const vk::VkPhysicalDeviceShaderIntegerDotProductFeatures& Context::getShaderIntegerDotProductFeatures (void) const { return m_device->getShaderIntegerDotProductFeatures(); }
+const vk::VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& Context::getShaderIntegerFunctions2FeaturesINTEL (void) const { return m_device->getShaderIntegerFunctions2FeaturesINTEL(); }
+const vk::VkPhysicalDeviceShaderSMBuiltinsFeaturesNV& Context::getShaderSMBuiltinsFeatures (void) const { return m_device->getShaderSMBuiltinsFeatures(); }
+const vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& Context::getShaderSubgroupExtendedTypesFeatures (void) const { return m_device->getShaderSubgroupExtendedTypesFeatures(); }
+const vk::VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR& Context::getShaderSubgroupUniformControlFlowFeatures (void) const { return m_device->getShaderSubgroupUniformControlFlowFeatures(); }
+const vk::VkPhysicalDeviceShaderTerminateInvocationFeatures& Context::getShaderTerminateInvocationFeatures (void) const { return m_device->getShaderTerminateInvocationFeatures(); }
+const vk::VkPhysicalDeviceShadingRateImageFeaturesNV& Context::getShadingRateImageFeatures (void) const { return m_device->getShadingRateImageFeatures(); }
+const vk::VkPhysicalDeviceSubgroupSizeControlFeatures& Context::getSubgroupSizeControlFeatures (void) const { return m_device->getSubgroupSizeControlFeatures(); }
+const vk::VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT& Context::getSubpassMergeFeedbackFeaturesEXT (void) const { return m_device->getSubpassMergeFeedbackFeaturesEXT(); }
+const vk::VkPhysicalDeviceSubpassShadingFeaturesHUAWEI& Context::getSubpassShadingFeaturesHUAWEI (void) const { return m_device->getSubpassShadingFeaturesHUAWEI(); }
+const vk::VkPhysicalDeviceSynchronization2Features& Context::getSynchronization2Features (void) const { return m_device->getSynchronization2Features(); }
+const vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& Context::getTexelBufferAlignmentFeaturesEXT (void) const { return m_device->getTexelBufferAlignmentFeaturesEXT(); }
+const vk::VkPhysicalDeviceTextureCompressionASTCHDRFeatures& Context::getTextureCompressionASTCHDRFeatures (void) const { return m_device->getTextureCompressionASTCHDRFeatures(); }
+const vk::VkPhysicalDeviceTimelineSemaphoreFeatures& Context::getTimelineSemaphoreFeatures (void) const { return m_device->getTimelineSemaphoreFeatures(); }
+const vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT& Context::getTransformFeedbackFeaturesEXT (void) const { return m_device->getTransformFeedbackFeaturesEXT(); }
+const vk::VkPhysicalDeviceUniformBufferStandardLayoutFeatures& Context::getUniformBufferStandardLayoutFeatures (void) const { return m_device->getUniformBufferStandardLayoutFeatures(); }
+const vk::VkPhysicalDeviceVariablePointersFeatures& Context::getVariablePointersFeatures (void) const { return m_device->getVariablePointersFeatures(); }
+const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& Context::getVertexAttributeDivisorFeaturesEXT (void) const { return m_device->getVertexAttributeDivisorFeaturesEXT(); }
+const vk::VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT& Context::getVertexInputDynamicStateFeaturesEXT (void) const { return m_device->getVertexInputDynamicStateFeaturesEXT(); }
+const vk::VkPhysicalDeviceVulkanMemoryModelFeatures& Context::getVulkanMemoryModelFeatures (void) const { return m_device->getVulkanMemoryModelFeatures(); }
+const vk::VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR& Context::getWorkgroupMemoryExplicitLayoutFeatures (void) const { return m_device->getWorkgroupMemoryExplicitLayoutFeatures(); }
+const vk::VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT& Context::getYcbcr2Plane444FormatsFeaturesEXT (void) const { return m_device->getYcbcr2Plane444FormatsFeaturesEXT(); }
+const vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& Context::getYcbcrImageArraysFeaturesEXT (void) const { return m_device->getYcbcrImageArraysFeaturesEXT(); }
+const vk::VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures& Context::getZeroInitializeWorkgroupMemoryFeatures (void) const { return m_device->getZeroInitializeWorkgroupMemoryFeatures(); }
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeaturesForDefaultDeviceDefs.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeaturesForDefaultDeviceDefs.inl
index 772b586..efde2d3 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeaturesForDefaultDeviceDefs.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeaturesForDefaultDeviceDefs.inl
@@ -3,112 +3,117 @@
* This file was generated by /scripts/gen_framework.py
*/
-const VkPhysicalDevice16BitStorageFeatures& get16BitStorageFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevice16BitStorageFeatures>(); }
-const VkPhysicalDevice4444FormatsFeaturesEXT& get4444FormatsFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevice4444FormatsFeaturesEXT>(); }
-const VkPhysicalDevice8BitStorageFeatures& get8BitStorageFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevice8BitStorageFeatures>(); }
-const VkPhysicalDeviceAccelerationStructureFeaturesKHR& getAccelerationStructureFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceAccelerationStructureFeaturesKHR>(); }
-const VkPhysicalDeviceASTCDecodeFeaturesEXT& getASTCDecodeFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceASTCDecodeFeaturesEXT>(); }
-const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& getBlendOperationAdvancedFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(); }
-const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT& getBorderColorSwizzleFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBorderColorSwizzleFeaturesEXT>(); }
-const VkPhysicalDeviceBufferDeviceAddressFeatures& getBufferDeviceAddressFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBufferDeviceAddressFeatures>(); }
-const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& getBufferDeviceAddressFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>(); }
-const VkPhysicalDeviceCoherentMemoryFeaturesAMD& getCoherentMemoryFeaturesAMD (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(); }
-const VkPhysicalDeviceColorWriteEnableFeaturesEXT& getColorWriteEnableFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceColorWriteEnableFeaturesEXT>(); }
-const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& getComputeShaderDerivativesFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>(); }
-const VkPhysicalDeviceConditionalRenderingFeaturesEXT& getConditionalRenderingFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(); }
-const VkPhysicalDeviceCooperativeMatrixFeaturesNV& getCooperativeMatrixFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCooperativeMatrixFeaturesNV>(); }
-const VkPhysicalDeviceCornerSampledImageFeaturesNV& getCornerSampledImageFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCornerSampledImageFeaturesNV>(); }
-const VkPhysicalDeviceCoverageReductionModeFeaturesNV& getCoverageReductionModeFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(); }
-const VkPhysicalDeviceCustomBorderColorFeaturesEXT& getCustomBorderColorFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCustomBorderColorFeaturesEXT>(); }
-const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& getDedicatedAllocationImageAliasingFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>(); }
-const VkPhysicalDeviceDepthClipControlFeaturesEXT& getDepthClipControlFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDepthClipControlFeaturesEXT>(); }
-const VkPhysicalDeviceDepthClipEnableFeaturesEXT& getDepthClipEnableFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(); }
-const VkPhysicalDeviceDescriptorIndexingFeatures& getDescriptorIndexingFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDescriptorIndexingFeatures>(); }
-const VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE& getDescriptorSetHostMappingFeaturesVALVE (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE>(); }
-const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV& getDeviceGeneratedCommandsFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV>(); }
-const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT& getDeviceMemoryReportFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT>(); }
-const VkPhysicalDeviceDiagnosticsConfigFeaturesNV& getDiagnosticsConfigFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDiagnosticsConfigFeaturesNV>(); }
-const VkPhysicalDeviceDynamicRenderingFeatures& getDynamicRenderingFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDynamicRenderingFeatures>(); }
-const VkPhysicalDeviceExclusiveScissorFeaturesNV& getExclusiveScissorFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExclusiveScissorFeaturesNV>(); }
-const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT& getExtendedDynamicStateFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT>(); }
-const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT& getExtendedDynamicState2FeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>(); }
-const VkPhysicalDeviceExternalMemoryRDMAFeaturesNV& getExternalMemoryRDMAFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExternalMemoryRDMAFeaturesNV>(); }
-const VkPhysicalDeviceFragmentDensityMapFeaturesEXT& getFragmentDensityMapFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(); }
-const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT& getFragmentDensityMap2FeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT>(); }
-const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM& getFragmentDensityMapOffsetFeaturesQCOM (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>(); }
-const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& getFragmentShaderBarycentricFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>(); }
-const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& getFragmentShaderInterlockFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(); }
-const VkPhysicalDeviceFragmentShadingRateFeaturesKHR& getFragmentShadingRateFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShadingRateFeaturesKHR>(); }
-const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV& getFragmentShadingRateEnumsFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV>(); }
-const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR& getGlobalPriorityQueryFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR>(); }
-const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT& getGraphicsPipelineLibraryFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT>(); }
-const VkPhysicalDeviceHostQueryResetFeatures& getHostQueryResetFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceHostQueryResetFeatures>(); }
-const VkPhysicalDeviceImagelessFramebufferFeatures& getImagelessFramebufferFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceImagelessFramebufferFeatures>(); }
-const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT& getImage2DViewOf3DFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceImage2DViewOf3DFeaturesEXT>(); }
-const VkPhysicalDeviceImageRobustnessFeatures& getImageRobustnessFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceImageRobustnessFeatures>(); }
-const VkPhysicalDeviceImageViewMinLodFeaturesEXT& getImageViewMinLodFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceImageViewMinLodFeaturesEXT>(); }
-const VkPhysicalDeviceIndexTypeUint8FeaturesEXT& getIndexTypeUint8FeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>(); }
-const VkPhysicalDeviceInheritedViewportScissorFeaturesNV& getInheritedViewportScissorFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceInheritedViewportScissorFeaturesNV>(); }
-const VkPhysicalDeviceInlineUniformBlockFeatures& getInlineUniformBlockFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceInlineUniformBlockFeatures>(); }
-const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI& getInvocationMaskFeaturesHUAWEI (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceInvocationMaskFeaturesHUAWEI>(); }
-const VkPhysicalDeviceLinearColorAttachmentFeaturesNV& getLinearColorAttachmentFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceLinearColorAttachmentFeaturesNV>(); }
-const VkPhysicalDeviceLineRasterizationFeaturesEXT& getLineRasterizationFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceLineRasterizationFeaturesEXT>(); }
-const VkPhysicalDeviceMaintenance4Features& getMaintenance4Features (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMaintenance4Features>(); }
-const VkPhysicalDeviceMemoryPriorityFeaturesEXT& getMemoryPriorityFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(); }
-const VkPhysicalDeviceMeshShaderFeaturesNV& getMeshShaderFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMeshShaderFeaturesNV>(); }
-const VkPhysicalDeviceMultiviewFeatures& getMultiviewFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMultiviewFeatures>(); }
-const VkPhysicalDeviceMultiDrawFeaturesEXT& getMultiDrawFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMultiDrawFeaturesEXT>(); }
-const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE& getMutableDescriptorTypeFeaturesVALVE (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE>(); }
-const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT& getPageableDeviceLocalMemoryFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>(); }
-const VkPhysicalDevicePerformanceQueryFeaturesKHR& getPerformanceQueryFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePerformanceQueryFeaturesKHR>(); }
-const VkPhysicalDevicePipelineCreationCacheControlFeatures& getPipelineCreationCacheControlFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePipelineCreationCacheControlFeatures>(); }
-const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& getPipelineExecutablePropertiesFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(); }
-const VkPhysicalDevicePortabilitySubsetFeaturesKHR& getPortabilitySubsetFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePortabilitySubsetFeaturesKHR>(); }
-const VkPhysicalDevicePresentIdFeaturesKHR& getPresentIdFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePresentIdFeaturesKHR>(); }
-const VkPhysicalDevicePresentWaitFeaturesKHR& getPresentWaitFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePresentWaitFeaturesKHR>(); }
-const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT& getPrimitivesGeneratedQueryFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT>(); }
-const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT& getPrimitiveTopologyListRestartFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>(); }
-const VkPhysicalDevicePrivateDataFeatures& getPrivateDataFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePrivateDataFeatures>(); }
-const VkPhysicalDeviceProtectedMemoryFeatures& getProtectedMemoryFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceProtectedMemoryFeatures>(); }
-const VkPhysicalDeviceProvokingVertexFeaturesEXT& getProvokingVertexFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceProvokingVertexFeaturesEXT>(); }
-const VkPhysicalDeviceRayQueryFeaturesKHR& getRayQueryFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRayQueryFeaturesKHR>(); }
-const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV& getRayTracingMotionBlurFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV>(); }
-const VkPhysicalDeviceRayTracingPipelineFeaturesKHR& getRayTracingPipelineFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>(); }
-const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& getRepresentativeFragmentTestFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(); }
-const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT& getRGBA10X6FormatsFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT>(); }
-const VkPhysicalDeviceRobustness2FeaturesEXT& getRobustness2FeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRobustness2FeaturesEXT>(); }
-const VkPhysicalDeviceSamplerYcbcrConversionFeatures& getSamplerYcbcrConversionFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(); }
-const VkPhysicalDeviceScalarBlockLayoutFeatures& getScalarBlockLayoutFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceScalarBlockLayoutFeatures>(); }
-const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& getSeparateDepthStencilLayoutsFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(); }
-const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT& getShaderAtomicFloatFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>(); }
-const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT& getShaderAtomicFloat2FeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT>(); }
-const VkPhysicalDeviceShaderAtomicInt64Features& getShaderAtomicInt64Features (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderAtomicInt64Features>(); }
-const VkPhysicalDeviceShaderClockFeaturesKHR& getShaderClockFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderClockFeaturesKHR>(); }
-const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures& getShaderDemoteToHelperInvocationFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures>(); }
-const VkPhysicalDeviceShaderDrawParametersFeatures& getShaderDrawParametersFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderDrawParametersFeatures>(); }
-const VkPhysicalDeviceShaderFloat16Int8Features& getShaderFloat16Int8Features (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderFloat16Int8Features>(); }
-const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT& getShaderImageAtomicInt64FeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>(); }
-const VkPhysicalDeviceShaderImageFootprintFeaturesNV& getShaderImageFootprintFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderImageFootprintFeaturesNV>(); }
-const VkPhysicalDeviceShaderIntegerDotProductFeatures& getShaderIntegerDotProductFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderIntegerDotProductFeatures>(); }
-const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& getShaderIntegerFunctions2FeaturesINTEL (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>(); }
-const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV& getShaderSMBuiltinsFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV>(); }
-const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& getShaderSubgroupExtendedTypesFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(); }
-const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR& getShaderSubgroupUniformControlFlowFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>(); }
-const VkPhysicalDeviceShaderTerminateInvocationFeatures& getShaderTerminateInvocationFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderTerminateInvocationFeatures>(); }
-const VkPhysicalDeviceShadingRateImageFeaturesNV& getShadingRateImageFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShadingRateImageFeaturesNV>(); }
-const VkPhysicalDeviceSubgroupSizeControlFeatures& getSubgroupSizeControlFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSubgroupSizeControlFeatures>(); }
-const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI& getSubpassShadingFeaturesHUAWEI (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSubpassShadingFeaturesHUAWEI>(); }
-const VkPhysicalDeviceSynchronization2Features& getSynchronization2Features (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSynchronization2Features>(); }
-const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& getTexelBufferAlignmentFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(); }
-const VkPhysicalDeviceTextureCompressionASTCHDRFeatures& getTextureCompressionASTCHDRFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTextureCompressionASTCHDRFeatures>(); }
-const VkPhysicalDeviceTimelineSemaphoreFeatures& getTimelineSemaphoreFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTimelineSemaphoreFeatures>(); }
-const VkPhysicalDeviceTransformFeedbackFeaturesEXT& getTransformFeedbackFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(); }
-const VkPhysicalDeviceUniformBufferStandardLayoutFeatures& getUniformBufferStandardLayoutFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>(); }
-const VkPhysicalDeviceVariablePointersFeatures& getVariablePointersFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVariablePointersFeatures>(); }
-const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& getVertexAttributeDivisorFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>(); }
-const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT& getVertexInputDynamicStateFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT>(); }
-const VkPhysicalDeviceVulkanMemoryModelFeatures& getVulkanMemoryModelFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVulkanMemoryModelFeatures>(); }
-const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR& getWorkgroupMemoryExplicitLayoutFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>(); }
-const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT& getYcbcr2Plane444FormatsFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>(); }
-const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& getYcbcrImageArraysFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>(); }
-const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures& getZeroInitializeWorkgroupMemoryFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures>(); }
+const VkPhysicalDevice16BitStorageFeatures& get16BitStorageFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevice16BitStorageFeatures>(); }
+const VkPhysicalDevice4444FormatsFeaturesEXT& get4444FormatsFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevice4444FormatsFeaturesEXT>(); }
+const VkPhysicalDevice8BitStorageFeatures& get8BitStorageFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevice8BitStorageFeatures>(); }
+const VkPhysicalDeviceAccelerationStructureFeaturesKHR& getAccelerationStructureFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceAccelerationStructureFeaturesKHR>(); }
+const VkPhysicalDeviceASTCDecodeFeaturesEXT& getASTCDecodeFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceASTCDecodeFeaturesEXT>(); }
+const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& getBlendOperationAdvancedFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(); }
+const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT& getBorderColorSwizzleFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBorderColorSwizzleFeaturesEXT>(); }
+const VkPhysicalDeviceBufferDeviceAddressFeatures& getBufferDeviceAddressFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBufferDeviceAddressFeatures>(); }
+const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& getBufferDeviceAddressFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>(); }
+const VkPhysicalDeviceCoherentMemoryFeaturesAMD& getCoherentMemoryFeaturesAMD (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(); }
+const VkPhysicalDeviceColorWriteEnableFeaturesEXT& getColorWriteEnableFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceColorWriteEnableFeaturesEXT>(); }
+const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& getComputeShaderDerivativesFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>(); }
+const VkPhysicalDeviceConditionalRenderingFeaturesEXT& getConditionalRenderingFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(); }
+const VkPhysicalDeviceCooperativeMatrixFeaturesNV& getCooperativeMatrixFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCooperativeMatrixFeaturesNV>(); }
+const VkPhysicalDeviceCornerSampledImageFeaturesNV& getCornerSampledImageFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCornerSampledImageFeaturesNV>(); }
+const VkPhysicalDeviceCoverageReductionModeFeaturesNV& getCoverageReductionModeFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(); }
+const VkPhysicalDeviceCustomBorderColorFeaturesEXT& getCustomBorderColorFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCustomBorderColorFeaturesEXT>(); }
+const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& getDedicatedAllocationImageAliasingFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>(); }
+const VkPhysicalDeviceDepthClipControlFeaturesEXT& getDepthClipControlFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDepthClipControlFeaturesEXT>(); }
+const VkPhysicalDeviceDepthClipEnableFeaturesEXT& getDepthClipEnableFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(); }
+const VkPhysicalDeviceDescriptorIndexingFeatures& getDescriptorIndexingFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDescriptorIndexingFeatures>(); }
+const VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE& getDescriptorSetHostMappingFeaturesVALVE (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE>(); }
+const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV& getDeviceGeneratedCommandsFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV>(); }
+const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT& getDeviceMemoryReportFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT>(); }
+const VkPhysicalDeviceDiagnosticsConfigFeaturesNV& getDiagnosticsConfigFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDiagnosticsConfigFeaturesNV>(); }
+const VkPhysicalDeviceDynamicRenderingFeatures& getDynamicRenderingFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDynamicRenderingFeatures>(); }
+const VkPhysicalDeviceExclusiveScissorFeaturesNV& getExclusiveScissorFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExclusiveScissorFeaturesNV>(); }
+const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT& getExtendedDynamicStateFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT>(); }
+const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT& getExtendedDynamicState2FeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>(); }
+const VkPhysicalDeviceExternalMemoryRDMAFeaturesNV& getExternalMemoryRDMAFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExternalMemoryRDMAFeaturesNV>(); }
+const VkPhysicalDeviceFragmentDensityMapFeaturesEXT& getFragmentDensityMapFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(); }
+const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT& getFragmentDensityMap2FeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT>(); }
+const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM& getFragmentDensityMapOffsetFeaturesQCOM (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>(); }
+const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& getFragmentShaderBarycentricFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>(); }
+const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& getFragmentShaderInterlockFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(); }
+const VkPhysicalDeviceFragmentShadingRateFeaturesKHR& getFragmentShadingRateFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShadingRateFeaturesKHR>(); }
+const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV& getFragmentShadingRateEnumsFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV>(); }
+const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR& getGlobalPriorityQueryFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR>(); }
+const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT& getGraphicsPipelineLibraryFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT>(); }
+const VkPhysicalDeviceHostQueryResetFeatures& getHostQueryResetFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceHostQueryResetFeatures>(); }
+const VkPhysicalDeviceImagelessFramebufferFeatures& getImagelessFramebufferFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceImagelessFramebufferFeatures>(); }
+const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT& getImage2DViewOf3DFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceImage2DViewOf3DFeaturesEXT>(); }
+const VkPhysicalDeviceImageCompressionControlFeaturesEXT& getImageCompressionControlFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceImageCompressionControlFeaturesEXT>(); }
+const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT& getImageCompressionControlSwapchainFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>(); }
+const VkPhysicalDeviceImageRobustnessFeatures& getImageRobustnessFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceImageRobustnessFeatures>(); }
+const VkPhysicalDeviceImageViewMinLodFeaturesEXT& getImageViewMinLodFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceImageViewMinLodFeaturesEXT>(); }
+const VkPhysicalDeviceIndexTypeUint8FeaturesEXT& getIndexTypeUint8FeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>(); }
+const VkPhysicalDeviceInheritedViewportScissorFeaturesNV& getInheritedViewportScissorFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceInheritedViewportScissorFeaturesNV>(); }
+const VkPhysicalDeviceInlineUniformBlockFeatures& getInlineUniformBlockFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceInlineUniformBlockFeatures>(); }
+const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI& getInvocationMaskFeaturesHUAWEI (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceInvocationMaskFeaturesHUAWEI>(); }
+const VkPhysicalDeviceLinearColorAttachmentFeaturesNV& getLinearColorAttachmentFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceLinearColorAttachmentFeaturesNV>(); }
+const VkPhysicalDeviceLineRasterizationFeaturesEXT& getLineRasterizationFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceLineRasterizationFeaturesEXT>(); }
+const VkPhysicalDeviceMaintenance4Features& getMaintenance4Features (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMaintenance4Features>(); }
+const VkPhysicalDeviceMemoryPriorityFeaturesEXT& getMemoryPriorityFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(); }
+const VkPhysicalDeviceMeshShaderFeaturesNV& getMeshShaderFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMeshShaderFeaturesNV>(); }
+const VkPhysicalDeviceMultiviewFeatures& getMultiviewFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMultiviewFeatures>(); }
+const VkPhysicalDeviceMultiDrawFeaturesEXT& getMultiDrawFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMultiDrawFeaturesEXT>(); }
+const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE& getMutableDescriptorTypeFeaturesVALVE (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE>(); }
+const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT& getPageableDeviceLocalMemoryFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>(); }
+const VkPhysicalDevicePerformanceQueryFeaturesKHR& getPerformanceQueryFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePerformanceQueryFeaturesKHR>(); }
+const VkPhysicalDevicePipelineCreationCacheControlFeatures& getPipelineCreationCacheControlFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePipelineCreationCacheControlFeatures>(); }
+const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& getPipelineExecutablePropertiesFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(); }
+const VkPhysicalDevicePipelinePropertiesFeaturesEXT& getPipelinePropertiesFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePipelinePropertiesFeaturesEXT>(); }
+const VkPhysicalDevicePortabilitySubsetFeaturesKHR& getPortabilitySubsetFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePortabilitySubsetFeaturesKHR>(); }
+const VkPhysicalDevicePresentIdFeaturesKHR& getPresentIdFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePresentIdFeaturesKHR>(); }
+const VkPhysicalDevicePresentWaitFeaturesKHR& getPresentWaitFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePresentWaitFeaturesKHR>(); }
+const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT& getPrimitivesGeneratedQueryFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT>(); }
+const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT& getPrimitiveTopologyListRestartFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>(); }
+const VkPhysicalDevicePrivateDataFeatures& getPrivateDataFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePrivateDataFeatures>(); }
+const VkPhysicalDeviceProtectedMemoryFeatures& getProtectedMemoryFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceProtectedMemoryFeatures>(); }
+const VkPhysicalDeviceProvokingVertexFeaturesEXT& getProvokingVertexFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceProvokingVertexFeaturesEXT>(); }
+const VkPhysicalDeviceRayQueryFeaturesKHR& getRayQueryFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRayQueryFeaturesKHR>(); }
+const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR& getRayTracingMaintenance1Features (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR>(); }
+const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV& getRayTracingMotionBlurFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV>(); }
+const VkPhysicalDeviceRayTracingPipelineFeaturesKHR& getRayTracingPipelineFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>(); }
+const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& getRepresentativeFragmentTestFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(); }
+const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT& getRGBA10X6FormatsFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT>(); }
+const VkPhysicalDeviceRobustness2FeaturesEXT& getRobustness2FeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRobustness2FeaturesEXT>(); }
+const VkPhysicalDeviceSamplerYcbcrConversionFeatures& getSamplerYcbcrConversionFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(); }
+const VkPhysicalDeviceScalarBlockLayoutFeatures& getScalarBlockLayoutFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceScalarBlockLayoutFeatures>(); }
+const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& getSeparateDepthStencilLayoutsFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(); }
+const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT& getShaderAtomicFloatFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>(); }
+const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT& getShaderAtomicFloat2FeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT>(); }
+const VkPhysicalDeviceShaderAtomicInt64Features& getShaderAtomicInt64Features (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderAtomicInt64Features>(); }
+const VkPhysicalDeviceShaderClockFeaturesKHR& getShaderClockFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderClockFeaturesKHR>(); }
+const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures& getShaderDemoteToHelperInvocationFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures>(); }
+const VkPhysicalDeviceShaderDrawParametersFeatures& getShaderDrawParametersFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderDrawParametersFeatures>(); }
+const VkPhysicalDeviceShaderFloat16Int8Features& getShaderFloat16Int8Features (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderFloat16Int8Features>(); }
+const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT& getShaderImageAtomicInt64FeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>(); }
+const VkPhysicalDeviceShaderImageFootprintFeaturesNV& getShaderImageFootprintFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderImageFootprintFeaturesNV>(); }
+const VkPhysicalDeviceShaderIntegerDotProductFeatures& getShaderIntegerDotProductFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderIntegerDotProductFeatures>(); }
+const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& getShaderIntegerFunctions2FeaturesINTEL (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>(); }
+const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV& getShaderSMBuiltinsFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV>(); }
+const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& getShaderSubgroupExtendedTypesFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(); }
+const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR& getShaderSubgroupUniformControlFlowFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>(); }
+const VkPhysicalDeviceShaderTerminateInvocationFeatures& getShaderTerminateInvocationFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderTerminateInvocationFeatures>(); }
+const VkPhysicalDeviceShadingRateImageFeaturesNV& getShadingRateImageFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShadingRateImageFeaturesNV>(); }
+const VkPhysicalDeviceSubgroupSizeControlFeatures& getSubgroupSizeControlFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSubgroupSizeControlFeatures>(); }
+const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT& getSubpassMergeFeedbackFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT>(); }
+const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI& getSubpassShadingFeaturesHUAWEI (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSubpassShadingFeaturesHUAWEI>(); }
+const VkPhysicalDeviceSynchronization2Features& getSynchronization2Features (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSynchronization2Features>(); }
+const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& getTexelBufferAlignmentFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(); }
+const VkPhysicalDeviceTextureCompressionASTCHDRFeatures& getTextureCompressionASTCHDRFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTextureCompressionASTCHDRFeatures>(); }
+const VkPhysicalDeviceTimelineSemaphoreFeatures& getTimelineSemaphoreFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTimelineSemaphoreFeatures>(); }
+const VkPhysicalDeviceTransformFeedbackFeaturesEXT& getTransformFeedbackFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(); }
+const VkPhysicalDeviceUniformBufferStandardLayoutFeatures& getUniformBufferStandardLayoutFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>(); }
+const VkPhysicalDeviceVariablePointersFeatures& getVariablePointersFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVariablePointersFeatures>(); }
+const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& getVertexAttributeDivisorFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>(); }
+const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT& getVertexInputDynamicStateFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT>(); }
+const VkPhysicalDeviceVulkanMemoryModelFeatures& getVulkanMemoryModelFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVulkanMemoryModelFeatures>(); }
+const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR& getWorkgroupMemoryExplicitLayoutFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>(); }
+const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT& getYcbcr2Plane444FormatsFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>(); }
+const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& getYcbcrImageArraysFeaturesEXT (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>(); }
+const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures& getZeroInitializeWorkgroupMemoryFeatures (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures>(); }
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFunctionPointers.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFunctionPointers.inl
index e98e3f1..032c385 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFunctionPointers.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFunctionPointers.inl
@@ -221,6 +221,7 @@
GetPipelineExecutableInternalRepresentationsKHRFunc getPipelineExecutableInternalRepresentationsKHR;
CmdWriteBufferMarker2AMDFunc cmdWriteBufferMarker2AMD;
GetQueueCheckpointData2NVFunc getQueueCheckpointData2NV;
+CmdTraceRaysIndirect2KHRFunc cmdTraceRaysIndirect2KHR;
DebugMarkerSetObjectTagEXTFunc debugMarkerSetObjectTagEXT;
DebugMarkerSetObjectNameEXTFunc debugMarkerSetObjectNameEXT;
CmdDebugMarkerBeginEXTFunc cmdDebugMarkerBeginEXT;
@@ -311,11 +312,13 @@
CreateIndirectCommandsLayoutNVFunc createIndirectCommandsLayoutNV;
DestroyIndirectCommandsLayoutNVFunc destroyIndirectCommandsLayoutNV;
CmdSetFragmentShadingRateEnumNVFunc cmdSetFragmentShadingRateEnumNV;
+GetImageSubresourceLayout2EXTFunc getImageSubresourceLayout2EXT;
CmdSetVertexInputEXTFunc cmdSetVertexInputEXT;
GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEIFunc getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
CmdSubpassShadingHUAWEIFunc cmdSubpassShadingHUAWEI;
CmdBindInvocationMaskHUAWEIFunc cmdBindInvocationMaskHUAWEI;
GetMemoryRemoteAddressNVFunc getMemoryRemoteAddressNV;
+GetPipelinePropertiesEXTFunc getPipelinePropertiesEXT;
CmdSetPatchControlPointsEXTFunc cmdSetPatchControlPointsEXT;
CmdSetLogicOpEXTFunc cmdSetLogicOpEXT;
CmdSetColorWriteEnableEXTFunc cmdSetColorWriteEnableEXT;
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceProperties.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceProperties.inl
index 9a40c0f..3d7fec4 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceProperties.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceProperties.inl
@@ -259,6 +259,7 @@
template<> void initPropertyFromBlob<VkPhysicalDeviceFragmentDensityMap2PropertiesEXT>(VkPhysicalDeviceFragmentDensityMap2PropertiesEXT&, const AllPropertiesBlobs&) {}
template<> void initPropertyFromBlob<VkPhysicalDeviceDrmPropertiesEXT>(VkPhysicalDeviceDrmPropertiesEXT&, const AllPropertiesBlobs&) {}
template<> void initPropertyFromBlob<VkPhysicalDeviceSubpassShadingPropertiesHUAWEI>(VkPhysicalDeviceSubpassShadingPropertiesHUAWEI&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDevicePipelinePropertiesFeaturesEXT>(VkPhysicalDevicePipelinePropertiesFeaturesEXT&, const AllPropertiesBlobs&) {}
template<> void initPropertyFromBlob<VkPhysicalDeviceMultiDrawPropertiesEXT>(VkPhysicalDeviceMultiDrawPropertiesEXT&, const AllPropertiesBlobs&) {}
template<> void initPropertyFromBlob<VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM>(VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM&, const AllPropertiesBlobs&) {}
template<> void initPropertyFromBlob<VkPhysicalDeviceAccelerationStructurePropertiesKHR>(VkPhysicalDeviceAccelerationStructurePropertiesKHR&, const AllPropertiesBlobs&) {}
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkExtensionFunctions.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkExtensionFunctions.inl
index 62bf322..1d5212b 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkExtensionFunctions.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkExtensionFunctions.inl
@@ -336,6 +336,10 @@
{
return;
}
+ if (extName == "VK_KHR_ray_tracing_maintenance1")
+ {
+ return;
+ }
if (extName == "VK_KHR_portability_enumeration")
{
return;
@@ -913,6 +917,10 @@
{
return;
}
+ if (extName == "VK_EXT_image_compression_control")
+ {
+ return;
+ }
if (extName == "VK_EXT_4444_formats")
{
return;
@@ -963,6 +971,10 @@
{
return;
}
+ if (extName == "VK_EXT_pipeline_properties")
+ {
+ return;
+ }
if (extName == "VK_EXT_extended_dynamic_state2")
{
return;
@@ -1019,6 +1031,14 @@
{
return;
}
+ if (extName == "VK_EXT_image_compression_control_swapchain")
+ {
+ return;
+ }
+ if (extName == "VK_EXT_subpass_merge_feedback")
+ {
+ return;
+ }
if (extName == "VK_KHR_acceleration_structure")
{
return;
@@ -1554,6 +1574,11 @@
{
return;
}
+ if (extName == "VK_KHR_ray_tracing_maintenance1")
+ {
+ functions.push_back("vkCmdTraceRaysIndirect2KHR");
+ return;
+ }
if (extName == "VK_KHR_portability_enumeration")
{
return;
@@ -2223,6 +2248,11 @@
{
return;
}
+ if (extName == "VK_EXT_image_compression_control")
+ {
+ functions.push_back("vkGetImageSubresourceLayout2EXT");
+ return;
+ }
if (extName == "VK_EXT_4444_formats")
{
return;
@@ -2276,6 +2306,11 @@
functions.push_back("vkGetMemoryRemoteAddressNV");
return;
}
+ if (extName == "VK_EXT_pipeline_properties")
+ {
+ functions.push_back("vkGetPipelinePropertiesEXT");
+ return;
+ }
if (extName == "VK_EXT_extended_dynamic_state2")
{
functions.push_back("vkCmdSetPatchControlPointsEXT");
@@ -2343,6 +2378,14 @@
{
return;
}
+ if (extName == "VK_EXT_image_compression_control_swapchain")
+ {
+ return;
+ }
+ if (extName == "VK_EXT_subpass_merge_feedback")
+ {
+ return;
+ }
if (extName == "VK_KHR_acceleration_structure")
{
functions.push_back("vkCreateAccelerationStructureKHR");
@@ -2607,6 +2650,7 @@
"VK_KHR_pipeline_executable_properties",
"VK_KHR_synchronization2",
"VK_KHR_copy_commands2",
+ "VK_KHR_ray_tracing_maintenance1",
"VK_KHR_maintenance4",
"VK_EXT_debug_marker",
"VK_EXT_transform_feedback",
@@ -2640,10 +2684,12 @@
"VK_NV_device_generated_commands",
"VK_EXT_private_data",
"VK_NV_fragment_shading_rate_enums",
+ "VK_EXT_image_compression_control",
"VK_EXT_vertex_input_dynamic_state",
"VK_HUAWEI_subpass_shading",
"VK_HUAWEI_invocation_mask",
"VK_NV_external_memory_rdma",
+ "VK_EXT_pipeline_properties",
"VK_EXT_extended_dynamic_state2",
"VK_EXT_color_write_enable",
"VK_EXT_multi_draw",
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkFunctionPointerTypes.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkFunctionPointerTypes.inl
index cac9da0..e162853 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkFunctionPointerTypes.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkFunctionPointerTypes.inl
@@ -324,6 +324,7 @@
typedef VKAPI_ATTR void (VKAPI_CALL* CmdCopyImageToBuffer2KHRFunc) (VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo);
typedef VKAPI_ATTR void (VKAPI_CALL* CmdBlitImage2KHRFunc) (VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo);
typedef VKAPI_ATTR void (VKAPI_CALL* CmdResolveImage2KHRFunc) (VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo);
+typedef VKAPI_ATTR void (VKAPI_CALL* CmdTraceRaysIndirect2KHRFunc) (VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress);
typedef VKAPI_ATTR void (VKAPI_CALL* GetDeviceBufferMemoryRequirementsKHRFunc) (VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements);
typedef VKAPI_ATTR void (VKAPI_CALL* GetDeviceImageMemoryRequirementsKHRFunc) (VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements);
typedef VKAPI_ATTR void (VKAPI_CALL* GetDeviceImageSparseMemoryRequirementsKHRFunc) (VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
@@ -451,6 +452,7 @@
typedef VKAPI_ATTR VkResult (VKAPI_CALL* SetPrivateDataEXTFunc) (VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data);
typedef VKAPI_ATTR void (VKAPI_CALL* GetPrivateDataEXTFunc) (VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t* pData);
typedef VKAPI_ATTR void (VKAPI_CALL* CmdSetFragmentShadingRateEnumNVFunc) (VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]);
+typedef VKAPI_ATTR void (VKAPI_CALL* GetImageSubresourceLayout2EXTFunc) (VkDevice device, VkImage image, const VkImageSubresource2EXT* pSubresource, VkSubresourceLayout2EXT* pLayout);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* AcquireWinrtDisplayNVFunc) (VkPhysicalDevice physicalDevice, VkDisplayKHR display);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetWinrtDisplayNVFunc) (VkPhysicalDevice physicalDevice, uint32_t deviceRelativeId, VkDisplayKHR* pDisplay);
typedef VKAPI_ATTR void (VKAPI_CALL* CmdSetVertexInputEXTFunc) (VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, uint32_t vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions);
@@ -458,6 +460,7 @@
typedef VKAPI_ATTR void (VKAPI_CALL* CmdSubpassShadingHUAWEIFunc) (VkCommandBuffer commandBuffer);
typedef VKAPI_ATTR void (VKAPI_CALL* CmdBindInvocationMaskHUAWEIFunc) (VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout);
typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetMemoryRemoteAddressNVFunc) (VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress);
+typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetPipelinePropertiesEXTFunc) (VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, VkBaseOutStructure* pPipelineProperties);
typedef VKAPI_ATTR void (VKAPI_CALL* CmdSetPatchControlPointsEXTFunc) (VkCommandBuffer commandBuffer, uint32_t patchControlPoints);
typedef VKAPI_ATTR void (VKAPI_CALL* CmdSetRasterizerDiscardEnableEXTFunc) (VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable);
typedef VKAPI_ATTR void (VKAPI_CALL* CmdSetDepthBiasEnableEXTFunc) (VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable);
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkGetStructureTypeImpl.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkGetStructureTypeImpl.inl
index 58117fd..0717b2a 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkGetStructureTypeImpl.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkGetStructureTypeImpl.inl
@@ -1393,6 +1393,11 @@
return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR;
}
+template<> VkStructureType getStructureType<VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR> (void)
+{
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR;
+}
+
template<> VkStructureType getStructureType<VkDebugReportCallbackCreateInfoEXT> (void)
{
return VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT;
@@ -2308,6 +2313,31 @@
return VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM;
}
+template<> VkStructureType getStructureType<VkPhysicalDeviceImageCompressionControlFeaturesEXT> (void)
+{
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkImageCompressionControlEXT> (void)
+{
+ return VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT;
+}
+
+template<> VkStructureType getStructureType<VkSubresourceLayout2EXT> (void)
+{
+ return VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT;
+}
+
+template<> VkStructureType getStructureType<VkImageSubresource2EXT> (void)
+{
+ return VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT;
+}
+
+template<> VkStructureType getStructureType<VkImageCompressionPropertiesEXT> (void)
+{
+ return VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT;
+}
+
template<> VkStructureType getStructureType<VkPhysicalDevice4444FormatsFeaturesEXT> (void)
{
return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT;
@@ -2398,6 +2428,16 @@
return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV;
}
+template<> VkStructureType getStructureType<VkPipelinePropertiesIdentifierEXT> (void)
+{
+ return VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDevicePipelinePropertiesFeaturesEXT> (void)
+{
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT;
+}
+
template<> VkStructureType getStructureType<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT> (void)
{
return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT;
@@ -2493,6 +2533,31 @@
return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV;
}
+template<> VkStructureType getStructureType<VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT> (void)
+{
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT> (void)
+{
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkRenderPassCreationControlEXT> (void)
+{
+ return VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT;
+}
+
+template<> VkStructureType getStructureType<VkRenderPassCreationFeedbackInfoEXT> (void)
+{
+ return VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkRenderPassSubpassFeedbackInfoEXT> (void)
+{
+ return VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_INFO_EXT;
+}
+
template<> VkStructureType getStructureType<VkAccelerationStructureGeometryTrianglesDataKHR> (void)
{
return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR;
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkInitDeviceFunctionPointers.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkInitDeviceFunctionPointers.inl
index 70cf9f8..0ac2b11 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkInitDeviceFunctionPointers.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkInitDeviceFunctionPointers.inl
@@ -349,6 +349,7 @@
m_vk.getPipelineExecutableInternalRepresentationsKHR = (GetPipelineExecutableInternalRepresentationsKHRFunc) GET_PROC_ADDR("vkGetPipelineExecutableInternalRepresentationsKHR");
m_vk.cmdWriteBufferMarker2AMD = (CmdWriteBufferMarker2AMDFunc) GET_PROC_ADDR("vkCmdWriteBufferMarker2AMD");
m_vk.getQueueCheckpointData2NV = (GetQueueCheckpointData2NVFunc) GET_PROC_ADDR("vkGetQueueCheckpointData2NV");
+m_vk.cmdTraceRaysIndirect2KHR = (CmdTraceRaysIndirect2KHRFunc) GET_PROC_ADDR("vkCmdTraceRaysIndirect2KHR");
m_vk.debugMarkerSetObjectTagEXT = (DebugMarkerSetObjectTagEXTFunc) GET_PROC_ADDR("vkDebugMarkerSetObjectTagEXT");
m_vk.debugMarkerSetObjectNameEXT = (DebugMarkerSetObjectNameEXTFunc) GET_PROC_ADDR("vkDebugMarkerSetObjectNameEXT");
m_vk.cmdDebugMarkerBeginEXT = (CmdDebugMarkerBeginEXTFunc) GET_PROC_ADDR("vkCmdDebugMarkerBeginEXT");
@@ -439,11 +440,13 @@
m_vk.createIndirectCommandsLayoutNV = (CreateIndirectCommandsLayoutNVFunc) GET_PROC_ADDR("vkCreateIndirectCommandsLayoutNV");
m_vk.destroyIndirectCommandsLayoutNV = (DestroyIndirectCommandsLayoutNVFunc) GET_PROC_ADDR("vkDestroyIndirectCommandsLayoutNV");
m_vk.cmdSetFragmentShadingRateEnumNV = (CmdSetFragmentShadingRateEnumNVFunc) GET_PROC_ADDR("vkCmdSetFragmentShadingRateEnumNV");
+m_vk.getImageSubresourceLayout2EXT = (GetImageSubresourceLayout2EXTFunc) GET_PROC_ADDR("vkGetImageSubresourceLayout2EXT");
m_vk.cmdSetVertexInputEXT = (CmdSetVertexInputEXTFunc) GET_PROC_ADDR("vkCmdSetVertexInputEXT");
m_vk.getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = (GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEIFunc) GET_PROC_ADDR("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
m_vk.cmdSubpassShadingHUAWEI = (CmdSubpassShadingHUAWEIFunc) GET_PROC_ADDR("vkCmdSubpassShadingHUAWEI");
m_vk.cmdBindInvocationMaskHUAWEI = (CmdBindInvocationMaskHUAWEIFunc) GET_PROC_ADDR("vkCmdBindInvocationMaskHUAWEI");
m_vk.getMemoryRemoteAddressNV = (GetMemoryRemoteAddressNVFunc) GET_PROC_ADDR("vkGetMemoryRemoteAddressNV");
+m_vk.getPipelinePropertiesEXT = (GetPipelinePropertiesEXTFunc) GET_PROC_ADDR("vkGetPipelinePropertiesEXT");
m_vk.cmdSetPatchControlPointsEXT = (CmdSetPatchControlPointsEXTFunc) GET_PROC_ADDR("vkCmdSetPatchControlPointsEXT");
m_vk.cmdSetLogicOpEXT = (CmdSetLogicOpEXTFunc) GET_PROC_ADDR("vkCmdSetLogicOpEXT");
m_vk.cmdSetColorWriteEnableEXT = (CmdSetColorWriteEnableEXTFunc) GET_PROC_ADDR("vkCmdSetColorWriteEnableEXT");
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkMandatoryFeatures.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkMandatoryFeatures.inl
index be16fff..31e39db 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkMandatoryFeatures.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkMandatoryFeatures.inl
@@ -370,6 +370,16 @@
nextPtr = &physicalDeviceRayQueryFeaturesKHR.pNext;
}
+ vk::VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR physicalDeviceRayTracingMaintenance1FeaturesKHR;
+ deMemset(&physicalDeviceRayTracingMaintenance1FeaturesKHR, 0, sizeof(physicalDeviceRayTracingMaintenance1FeaturesKHR));
+
+ if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_maintenance1")) )
+ {
+ physicalDeviceRayTracingMaintenance1FeaturesKHR.sType = getStructureType<VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR>();
+ *nextPtr = &physicalDeviceRayTracingMaintenance1FeaturesKHR;
+ nextPtr = &physicalDeviceRayTracingMaintenance1FeaturesKHR.pNext;
+ }
+
vk::VkPhysicalDeviceRayTracingPipelineFeaturesKHR physicalDeviceRayTracingPipelineFeaturesKHR;
deMemset(&physicalDeviceRayTracingPipelineFeaturesKHR, 0, sizeof(physicalDeviceRayTracingPipelineFeaturesKHR));
@@ -1312,6 +1322,15 @@
}
}
+ if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_maintenance1")) )
+ {
+ if ( physicalDeviceRayTracingMaintenance1FeaturesKHR.rayTracingMaintenance1 == VK_FALSE )
+ {
+ log << tcu::TestLog::Message << "Mandatory feature rayTracingMaintenance1 not supported" << tcu::TestLog::EndMessage;
+ result = false;
+ }
+ }
+
if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) )
{
if ( ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipeline == VK_FALSE ) && ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineTraceRaysIndirect == VK_FALSE ) )
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkNullDriverImpl.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkNullDriverImpl.inl
index 9526293..4653c95 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkNullDriverImpl.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkNullDriverImpl.inl
@@ -2030,6 +2030,12 @@
DE_UNREF(pCheckpointData);
}
+VKAPI_ATTR void VKAPI_CALL cmdTraceRaysIndirect2KHR (VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress)
+{
+ DE_UNREF(commandBuffer);
+ DE_UNREF(indirectDeviceAddress);
+}
+
VKAPI_ATTR void VKAPI_CALL debugReportMessageEXT (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage)
{
DE_UNREF(instance);
@@ -2757,6 +2763,14 @@
DE_UNREF(combinerOps);
}
+VKAPI_ATTR void VKAPI_CALL getImageSubresourceLayout2EXT (VkDevice device, VkImage image, const VkImageSubresource2EXT* pSubresource, VkSubresourceLayout2EXT* pLayout)
+{
+ DE_UNREF(device);
+ DE_UNREF(image);
+ DE_UNREF(pSubresource);
+ DE_UNREF(pLayout);
+}
+
VKAPI_ATTR VkResult VKAPI_CALL acquireWinrtDisplayNV (VkPhysicalDevice physicalDevice, VkDisplayKHR display)
{
DE_UNREF(physicalDevice);
@@ -2809,6 +2823,14 @@
return VK_SUCCESS;
}
+VKAPI_ATTR VkResult VKAPI_CALL getPipelinePropertiesEXT (VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, VkBaseOutStructure* pPipelineProperties)
+{
+ DE_UNREF(device);
+ DE_UNREF(pPipelineInfo);
+ DE_UNREF(pPipelineProperties);
+ return VK_SUCCESS;
+}
+
VKAPI_ATTR void VKAPI_CALL cmdSetPatchControlPointsEXT (VkCommandBuffer commandBuffer, uint32_t patchControlPoints)
{
DE_UNREF(commandBuffer);
@@ -3677,6 +3699,7 @@
VK_NULL_FUNC_ENTRY(vkCmdCopyImageToBuffer2KHR, cmdCopyImageToBuffer2),
VK_NULL_FUNC_ENTRY(vkCmdBlitImage2KHR, cmdBlitImage2),
VK_NULL_FUNC_ENTRY(vkCmdResolveImage2KHR, cmdResolveImage2),
+ VK_NULL_FUNC_ENTRY(vkCmdTraceRaysIndirect2KHR, cmdTraceRaysIndirect2KHR),
VK_NULL_FUNC_ENTRY(vkGetDeviceBufferMemoryRequirementsKHR, getDeviceBufferMemoryRequirements),
VK_NULL_FUNC_ENTRY(vkGetDeviceImageMemoryRequirementsKHR, getDeviceImageMemoryRequirements),
VK_NULL_FUNC_ENTRY(vkGetDeviceImageSparseMemoryRequirementsKHR, getDeviceImageSparseMemoryRequirements),
@@ -3787,11 +3810,13 @@
VK_NULL_FUNC_ENTRY(vkSetPrivateDataEXT, setPrivateData),
VK_NULL_FUNC_ENTRY(vkGetPrivateDataEXT, getPrivateData),
VK_NULL_FUNC_ENTRY(vkCmdSetFragmentShadingRateEnumNV, cmdSetFragmentShadingRateEnumNV),
+ VK_NULL_FUNC_ENTRY(vkGetImageSubresourceLayout2EXT, getImageSubresourceLayout2EXT),
VK_NULL_FUNC_ENTRY(vkCmdSetVertexInputEXT, cmdSetVertexInputEXT),
VK_NULL_FUNC_ENTRY(vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI),
VK_NULL_FUNC_ENTRY(vkCmdSubpassShadingHUAWEI, cmdSubpassShadingHUAWEI),
VK_NULL_FUNC_ENTRY(vkCmdBindInvocationMaskHUAWEI, cmdBindInvocationMaskHUAWEI),
VK_NULL_FUNC_ENTRY(vkGetMemoryRemoteAddressNV, getMemoryRemoteAddressNV),
+ VK_NULL_FUNC_ENTRY(vkGetPipelinePropertiesEXT, getPipelinePropertiesEXT),
VK_NULL_FUNC_ENTRY(vkCmdSetPatchControlPointsEXT, cmdSetPatchControlPointsEXT),
VK_NULL_FUNC_ENTRY(vkCmdSetRasterizerDiscardEnableEXT, cmdSetRasterizerDiscardEnable),
VK_NULL_FUNC_ENTRY(vkCmdSetDepthBiasEnableEXT, cmdSetDepthBiasEnable),
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkStrUtil.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkStrUtil.inl
index a6530c4..bb1c221 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkStrUtil.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkStrUtil.inl
@@ -97,6 +97,7 @@
const char* getFragmentShadingRateTypeNVName (VkFragmentShadingRateTypeNV value);
const char* getFragmentShadingRateNVName (VkFragmentShadingRateNV value);
const char* getAccelerationStructureMotionInstanceTypeNVName (VkAccelerationStructureMotionInstanceTypeNV value);
+const char* getSubpassMergeStatusEXTName (VkSubpassMergeStatusEXT value);
const char* getBuildAccelerationStructureModeKHRName (VkBuildAccelerationStructureModeKHR value);
const char* getAccelerationStructureBuildTypeKHRName (VkAccelerationStructureBuildTypeKHR value);
const char* getAccelerationStructureCompatibilityKHRName (VkAccelerationStructureCompatibilityKHR value);
@@ -217,6 +218,7 @@
inline tcu::Format::Enum<VkFragmentShadingRateTypeNV> getFragmentShadingRateTypeNVStr (VkFragmentShadingRateTypeNV value) { return tcu::Format::Enum<VkFragmentShadingRateTypeNV>(getFragmentShadingRateTypeNVName, value); }
inline tcu::Format::Enum<VkFragmentShadingRateNV> getFragmentShadingRateNVStr (VkFragmentShadingRateNV value) { return tcu::Format::Enum<VkFragmentShadingRateNV>(getFragmentShadingRateNVName, value); }
inline tcu::Format::Enum<VkAccelerationStructureMotionInstanceTypeNV> getAccelerationStructureMotionInstanceTypeNVStr (VkAccelerationStructureMotionInstanceTypeNV value) { return tcu::Format::Enum<VkAccelerationStructureMotionInstanceTypeNV>(getAccelerationStructureMotionInstanceTypeNVName, value); }
+inline tcu::Format::Enum<VkSubpassMergeStatusEXT> getSubpassMergeStatusEXTStr (VkSubpassMergeStatusEXT value) { return tcu::Format::Enum<VkSubpassMergeStatusEXT>(getSubpassMergeStatusEXTName, value); }
inline tcu::Format::Enum<VkBuildAccelerationStructureModeKHR> getBuildAccelerationStructureModeKHRStr (VkBuildAccelerationStructureModeKHR value) { return tcu::Format::Enum<VkBuildAccelerationStructureModeKHR>(getBuildAccelerationStructureModeKHRName, value); }
inline tcu::Format::Enum<VkAccelerationStructureBuildTypeKHR> getAccelerationStructureBuildTypeKHRStr (VkAccelerationStructureBuildTypeKHR value) { return tcu::Format::Enum<VkAccelerationStructureBuildTypeKHR>(getAccelerationStructureBuildTypeKHRName, value); }
inline tcu::Format::Enum<VkAccelerationStructureCompatibilityKHR> getAccelerationStructureCompatibilityKHRStr (VkAccelerationStructureCompatibilityKHR value) { return tcu::Format::Enum<VkAccelerationStructureCompatibilityKHR>(getAccelerationStructureCompatibilityKHRName, value); }
@@ -337,6 +339,7 @@
inline std::ostream& operator<< (std::ostream& s, VkFragmentShadingRateTypeNV value) { return s << getFragmentShadingRateTypeNVStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkFragmentShadingRateNV value) { return s << getFragmentShadingRateNVStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkAccelerationStructureMotionInstanceTypeNV value) { return s << getAccelerationStructureMotionInstanceTypeNVStr(value); }
+inline std::ostream& operator<< (std::ostream& s, VkSubpassMergeStatusEXT value) { return s << getSubpassMergeStatusEXTStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkBuildAccelerationStructureModeKHR value) { return s << getBuildAccelerationStructureModeKHRStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkAccelerationStructureBuildTypeKHR value) { return s << getAccelerationStructureBuildTypeKHRStr(value); }
inline std::ostream& operator<< (std::ostream& s, VkAccelerationStructureCompatibilityKHR value) { return s << getAccelerationStructureCompatibilityKHRStr(value); }
@@ -448,6 +451,8 @@
tcu::Format::Bitfield<32> getIndirectCommandsLayoutUsageFlagsNVStr (VkIndirectCommandsLayoutUsageFlagsNV value);
tcu::Format::Bitfield<32> getDeviceDiagnosticsConfigFlagsNVStr (VkDeviceDiagnosticsConfigFlagsNV value);
tcu::Format::Bitfield<32> getGraphicsPipelineLibraryFlagsEXTStr (VkGraphicsPipelineLibraryFlagsEXT value);
+tcu::Format::Bitfield<32> getImageCompressionFlagsEXTStr (VkImageCompressionFlagsEXT value);
+tcu::Format::Bitfield<32> getImageCompressionFixedRateFlagsEXTStr (VkImageCompressionFixedRateFlagsEXT value);
tcu::Format::Bitfield<32> getAccelerationStructureCreateFlagsKHRStr (VkAccelerationStructureCreateFlagsKHR value);
tcu::Format::Bitfield<32> getVideoCodecOperationFlagsKHRStr (VkVideoCodecOperationFlagsKHR value);
tcu::Format::Bitfield<32> getVideoChromaSubsamplingFlagsKHRStr (VkVideoChromaSubsamplingFlagsKHR value);
@@ -881,6 +886,8 @@
std::ostream& operator<< (std::ostream& s, const VkCheckpointData2NV& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR& value);
+std::ostream& operator<< (std::ostream& s, const VkTraceRaysIndirectCommand2KHR& value);
std::ostream& operator<< (std::ostream& s, const VkDebugReportCallbackCreateInfoEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateRasterizationOrderAMD& value);
std::ostream& operator<< (std::ostream& s, const VkDebugMarkerObjectNameInfoEXT& value);
@@ -1100,6 +1107,11 @@
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkCopyCommandTransformInfoQCOM& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageCompressionControlFeaturesEXT& value);
+std::ostream& operator<< (std::ostream& s, const VkImageCompressionControlEXT& value);
+std::ostream& operator<< (std::ostream& s, const VkSubresourceLayout2EXT& value);
+std::ostream& operator<< (std::ostream& s, const VkImageSubresource2EXT& value);
+std::ostream& operator<< (std::ostream& s, const VkImageCompressionPropertiesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice4444FormatsFeaturesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT& value);
@@ -1119,6 +1131,8 @@
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI& value);
std::ostream& operator<< (std::ostream& s, const VkMemoryGetRemoteAddressInfoNV& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalMemoryRDMAFeaturesNV& value);
+std::ostream& operator<< (std::ostream& s, const VkPipelinePropertiesIdentifierEXT& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePipelinePropertiesFeaturesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceColorWriteEnableFeaturesEXT& value);
std::ostream& operator<< (std::ostream& s, const VkPipelineColorWriteCreateInfoEXT& value);
@@ -1140,6 +1154,11 @@
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM& value);
std::ostream& operator<< (std::ostream& s, const VkSubpassFragmentDensityMapOffsetEndInfoQCOM& value);
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLinearColorAttachmentFeaturesNV& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT& value);
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT& value);
+std::ostream& operator<< (std::ostream& s, const VkRenderPassCreationControlEXT& value);
+std::ostream& operator<< (std::ostream& s, const VkRenderPassCreationFeedbackInfoEXT& value);
+std::ostream& operator<< (std::ostream& s, const VkRenderPassSubpassFeedbackInfoEXT& value);
std::ostream& operator<< (std::ostream& s, const VkDeviceOrHostAddressKHR& value);
std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureBuildRangeInfoKHR& value);
std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryTrianglesDataKHR& value);
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkStrUtilImpl.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkStrUtilImpl.inl
index 2d75b53..8f59a55 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkStrUtilImpl.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkStrUtilImpl.inl
@@ -118,6 +118,7 @@
case VK_THREAD_DONE_KHR: return "VK_THREAD_DONE_KHR";
case VK_OPERATION_DEFERRED_KHR: return "VK_OPERATION_DEFERRED_KHR";
case VK_OPERATION_NOT_DEFERRED_KHR: return "VK_OPERATION_NOT_DEFERRED_KHR";
+ case VK_ERROR_COMPRESSION_EXHAUSTED_EXT: return "VK_ERROR_COMPRESSION_EXHAUSTED_EXT";
case VK_RESULT_MAX_ENUM: return "VK_RESULT_MAX_ENUM";
default: return DE_NULL;
}
@@ -708,6 +709,11 @@
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT";
case VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM: return "VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT";
+ case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT: return "VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT";
+ case VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT: return "VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT";
+ case VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT: return "VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT";
+ case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT";
@@ -742,11 +748,14 @@
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI";
case VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV: return "VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV";
+ case VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT: return "VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT";
case VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX: return "VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT";
case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT";
case VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT";
@@ -762,6 +771,11 @@
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM";
case VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM: return "VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM";
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT";
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT";
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT: return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT";
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_INFO_EXT: return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_INFO_EXT";
+ case VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_INFO_EXT: return "VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_INFO_EXT";
case VK_STRUCTURE_TYPE_MAX_ENUM: return "VK_STRUCTURE_TYPE_MAX_ENUM";
default: return DE_NULL;
}
@@ -1205,20 +1219,22 @@
{
switch (value)
{
- case VK_QUERY_TYPE_OCCLUSION: return "VK_QUERY_TYPE_OCCLUSION";
- case VK_QUERY_TYPE_PIPELINE_STATISTICS: return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
- case VK_QUERY_TYPE_TIMESTAMP: return "VK_QUERY_TYPE_TIMESTAMP";
- case VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR: return "VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR";
- case VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT: return "VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT";
- case VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR: return "VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR";
- case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR: return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR";
- case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR: return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR";
- case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV: return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV";
- case VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL: return "VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL";
- case VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR: return "VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR";
- case VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT: return "VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT";
- case VK_QUERY_TYPE_MAX_ENUM: return "VK_QUERY_TYPE_MAX_ENUM";
- default: return DE_NULL;
+ case VK_QUERY_TYPE_OCCLUSION: return "VK_QUERY_TYPE_OCCLUSION";
+ case VK_QUERY_TYPE_PIPELINE_STATISTICS: return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
+ case VK_QUERY_TYPE_TIMESTAMP: return "VK_QUERY_TYPE_TIMESTAMP";
+ case VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR: return "VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR";
+ case VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT: return "VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT";
+ case VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR: return "VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR";
+ case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR: return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR";
+ case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR: return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR";
+ case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV: return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV";
+ case VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL: return "VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL";
+ case VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR: return "VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR";
+ case VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT: return "VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT";
+ case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR: return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR";
+ case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR: return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR";
+ case VK_QUERY_TYPE_MAX_ENUM: return "VK_QUERY_TYPE_MAX_ENUM";
+ default: return DE_NULL;
}
}
@@ -2465,6 +2481,29 @@
}
}
+const char* getSubpassMergeStatusEXTName (VkSubpassMergeStatusEXT value)
+{
+ switch (value)
+ {
+ case VK_SUBPASS_MERGE_STATUS_MERGED_EXT: return "VK_SUBPASS_MERGE_STATUS_MERGED_EXT";
+ case VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT: return "VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT";
+ case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT: return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT";
+ case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT: return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT";
+ case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT: return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT";
+ case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT: return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT";
+ case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT: return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT";
+ case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT: return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT";
+ case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT: return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT";
+ case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT: return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT";
+ case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT: return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT";
+ case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT: return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT";
+ case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT: return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT";
+ case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT: return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT";
+ case VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT: return "VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT";
+ default: return DE_NULL;
+ }
+}
+
const char* getBuildAccelerationStructureModeKHRName (VkBuildAccelerationStructureModeKHR value)
{
switch (value)
@@ -4155,6 +4194,53 @@
return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}
+tcu::Format::Bitfield<32> getImageCompressionFlagsEXTStr (VkImageCompressionFlagsEXT value)
+{
+ static const tcu::Format::BitDesc s_desc[] =
+ {
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_DEFAULT_EXT, "VK_IMAGE_COMPRESSION_DEFAULT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_DISABLED_EXT, "VK_IMAGE_COMPRESSION_DISABLED_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT, "VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT"),
+ };
+ return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getImageCompressionFixedRateFlagsEXTStr (VkImageCompressionFixedRateFlagsEXT value)
+{
+ static const tcu::Format::BitDesc s_desc[] =
+ {
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT"),
+ tcu::Format::BitDesc(VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT, "VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT"),
+ };
+ return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
tcu::Format::Bitfield<32> getAccelerationStructureCreateFlagsKHRStr (VkAccelerationStructureCreateFlagsKHR value)
{
static const tcu::Format::BitDesc s_desc[] =
@@ -4324,7 +4410,8 @@
{
static const tcu::Format::BitDesc s_desc[] =
{
- tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_BIT_EXT, "VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_BIT_EXT"),
+ tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_ENABLED_BIT_EXT, "VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_ENABLED_BIT_EXT"),
+ tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_DISABLED_BIT_EXT, "VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_DISABLED_BIT_EXT"),
tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT, "VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT"),
tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT, "VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT"),
tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT, "VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT"),
@@ -4347,6 +4434,7 @@
tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT, "VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT"),
tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT, "VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT"),
tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT, "VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT"),
+ tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT, "VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT"),
tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT, "VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT"),
};
return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
@@ -9435,6 +9523,38 @@
return s;
}
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR& value)
+{
+ s << "VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\trayTracingMaintenance1 = " << value.rayTracingMaintenance1 << '\n';
+ s << "\trayTracingPipelineTraceRaysIndirect2 = " << value.rayTracingPipelineTraceRaysIndirect2 << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkTraceRaysIndirectCommand2KHR& value)
+{
+ s << "VkTraceRaysIndirectCommand2KHR = {\n";
+ s << "\traygenShaderRecordAddress = " << value.raygenShaderRecordAddress << '\n';
+ s << "\traygenShaderRecordSize = " << value.raygenShaderRecordSize << '\n';
+ s << "\tmissShaderBindingTableAddress = " << value.missShaderBindingTableAddress << '\n';
+ s << "\tmissShaderBindingTableSize = " << value.missShaderBindingTableSize << '\n';
+ s << "\tmissShaderBindingTableStride = " << value.missShaderBindingTableStride << '\n';
+ s << "\thitShaderBindingTableAddress = " << value.hitShaderBindingTableAddress << '\n';
+ s << "\thitShaderBindingTableSize = " << value.hitShaderBindingTableSize << '\n';
+ s << "\thitShaderBindingTableStride = " << value.hitShaderBindingTableStride << '\n';
+ s << "\tcallableShaderBindingTableAddress = " << value.callableShaderBindingTableAddress << '\n';
+ s << "\tcallableShaderBindingTableSize = " << value.callableShaderBindingTableSize << '\n';
+ s << "\tcallableShaderBindingTableStride = " << value.callableShaderBindingTableStride << '\n';
+ s << "\twidth = " << value.width << '\n';
+ s << "\theight = " << value.height << '\n';
+ s << "\tdepth = " << value.depth << '\n';
+ s << '}';
+ return s;
+}
+
std::ostream& operator<< (std::ostream& s, const VkDebugReportCallbackCreateInfoEXT& value)
{
s << "VkDebugReportCallbackCreateInfoEXT = {\n";
@@ -11996,6 +12116,59 @@
return s;
}
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageCompressionControlFeaturesEXT& value)
+{
+ s << "VkPhysicalDeviceImageCompressionControlFeaturesEXT = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\timageCompressionControl = " << value.imageCompressionControl << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImageCompressionControlEXT& value)
+{
+ s << "VkImageCompressionControlEXT = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tflags = " << getImageCompressionFlagsEXTStr(value.flags) << '\n';
+ s << "\tcompressionControlPlaneCount = " << value.compressionControlPlaneCount << '\n';
+ s << "\tpFixedRateFlags = " << value.pFixedRateFlags << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSubresourceLayout2EXT& value)
+{
+ s << "VkSubresourceLayout2EXT = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tsubresourceLayout = " << value.subresourceLayout << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImageSubresource2EXT& value)
+{
+ s << "VkImageSubresource2EXT = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\timageSubresource = " << value.imageSubresource << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImageCompressionPropertiesEXT& value)
+{
+ s << "VkImageCompressionPropertiesEXT = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\timageCompressionFlags = " << getImageCompressionFlagsEXTStr(value.imageCompressionFlags) << '\n';
+ s << "\timageCompressionFixedRateFlags = " << getImageCompressionFixedRateFlagsEXTStr(value.imageCompressionFixedRateFlags) << '\n';
+ s << '}';
+ return s;
+}
+
std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice4444FormatsFeaturesEXT& value)
{
s << "VkPhysicalDevice4444FormatsFeaturesEXT = {\n";
@@ -12203,6 +12376,26 @@
return s;
}
+std::ostream& operator<< (std::ostream& s, const VkPipelinePropertiesIdentifierEXT& value)
+{
+ s << "VkPipelinePropertiesIdentifierEXT = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tpipelineIdentifier = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.pipelineIdentifier)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.pipelineIdentifier))) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePipelinePropertiesFeaturesEXT& value)
+{
+ s << "VkPhysicalDevicePipelinePropertiesFeaturesEXT = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tpipelinePropertiesIdentifier = " << value.pipelinePropertiesIdentifier << '\n';
+ s << '}';
+ return s;
+}
+
std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT& value)
{
s << "VkPhysicalDeviceExtendedDynamicState2FeaturesEXT = {\n";
@@ -12423,6 +12616,58 @@
return s;
}
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT& value)
+{
+ s << "VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\timageCompressionControlSwapchain = " << value.imageCompressionControlSwapchain << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT& value)
+{
+ s << "VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tsubpassMergeFeedback = " << value.subpassMergeFeedback << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkRenderPassCreationControlEXT& value)
+{
+ s << "VkRenderPassCreationControlEXT = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tdisallowMerging = " << value.disallowMerging << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkRenderPassCreationFeedbackInfoEXT& value)
+{
+ s << "VkRenderPassCreationFeedbackInfoEXT = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tpostMergeSubpassCount = " << value.postMergeSubpassCount << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkRenderPassSubpassFeedbackInfoEXT& value)
+{
+ s << "VkRenderPassSubpassFeedbackInfoEXT = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tsubpassMergeStatus = " << value.subpassMergeStatus << '\n';
+ s << "\tdescription = " << (const char*)value.description << '\n';
+ s << "\tpostMergeIndex = " << value.postMergeIndex << '\n';
+ s << '}';
+ return s;
+}
+
std::ostream& operator<< (std::ostream& s, const VkDeviceOrHostAddressKHR& value)
{
s << "VkDeviceOrHostAddressKHR = {\n";
@@ -13857,7 +14102,6 @@
s << "\tbit_depth_luma_minus8 = " << value.bit_depth_luma_minus8 << '\n';
s << "\tbit_depth_chroma_minus8 = " << value.bit_depth_chroma_minus8 << '\n';
s << "\tlog2_max_pic_order_cnt_lsb_minus4 = " << value.log2_max_pic_order_cnt_lsb_minus4 << '\n';
- s << "\tsps_max_dec_pic_buffering_minus1 = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.sps_max_dec_pic_buffering_minus1)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.sps_max_dec_pic_buffering_minus1))) << '\n';
s << "\tlog2_min_luma_coding_block_size_minus3 = " << value.log2_min_luma_coding_block_size_minus3 << '\n';
s << "\tlog2_diff_max_min_luma_coding_block_size = " << value.log2_diff_max_min_luma_coding_block_size << '\n';
s << "\tlog2_min_luma_transform_block_size_minus2 = " << value.log2_min_luma_transform_block_size_minus2 << '\n';
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkStructTypes.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkStructTypes.inl
index b717790..4aa683f 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkStructTypes.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkStructTypes.inl
@@ -3597,6 +3597,32 @@
VkBool32 workgroupMemoryExplicitLayout16BitAccess;
};
+struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 rayTracingMaintenance1;
+ VkBool32 rayTracingPipelineTraceRaysIndirect2;
+};
+
+struct VkTraceRaysIndirectCommand2KHR
+{
+ VkDeviceAddress raygenShaderRecordAddress;
+ VkDeviceSize raygenShaderRecordSize;
+ VkDeviceAddress missShaderBindingTableAddress;
+ VkDeviceSize missShaderBindingTableSize;
+ VkDeviceSize missShaderBindingTableStride;
+ VkDeviceAddress hitShaderBindingTableAddress;
+ VkDeviceSize hitShaderBindingTableSize;
+ VkDeviceSize hitShaderBindingTableStride;
+ VkDeviceAddress callableShaderBindingTableAddress;
+ VkDeviceSize callableShaderBindingTableSize;
+ VkDeviceSize callableShaderBindingTableStride;
+ uint32_t width;
+ uint32_t height;
+ uint32_t depth;
+};
+
struct VkDebugReportCallbackCreateInfoEXT
{
VkStructureType sType;
@@ -5501,6 +5527,44 @@
VkSurfaceTransformFlagBitsKHR transform;
};
+struct VkPhysicalDeviceImageCompressionControlFeaturesEXT
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 imageCompressionControl;
+};
+
+struct VkImageCompressionControlEXT
+{
+ VkStructureType sType;
+ const void* pNext;
+ VkImageCompressionFlagsEXT flags;
+ uint32_t compressionControlPlaneCount;
+ VkImageCompressionFixedRateFlagsEXT* pFixedRateFlags;
+};
+
+struct VkSubresourceLayout2EXT
+{
+ VkStructureType sType;
+ void* pNext;
+ VkSubresourceLayout subresourceLayout;
+};
+
+struct VkImageSubresource2EXT
+{
+ VkStructureType sType;
+ void* pNext;
+ VkImageSubresource imageSubresource;
+};
+
+struct VkImageCompressionPropertiesEXT
+{
+ VkStructureType sType;
+ void* pNext;
+ VkImageCompressionFlagsEXT imageCompressionFlags;
+ VkImageCompressionFixedRateFlagsEXT imageCompressionFixedRateFlags;
+};
+
struct VkPhysicalDevice4444FormatsFeaturesEXT
{
VkStructureType sType;
@@ -5651,6 +5715,20 @@
VkBool32 externalMemoryRDMA;
};
+struct VkPipelinePropertiesIdentifierEXT
+{
+ VkStructureType sType;
+ void* pNext;
+ uint8_t pipelineIdentifier[VK_UUID_SIZE];
+};
+
+struct VkPhysicalDevicePipelinePropertiesFeaturesEXT
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 pipelinePropertiesIdentifier;
+};
+
struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
{
VkStructureType sType;
@@ -5808,6 +5886,43 @@
VkBool32 linearColorAttachment;
};
+struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 imageCompressionControlSwapchain;
+};
+
+struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT
+{
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 subpassMergeFeedback;
+};
+
+struct VkRenderPassCreationControlEXT
+{
+ VkStructureType sType;
+ const void* pNext;
+ VkBool32 disallowMerging;
+};
+
+struct VkRenderPassCreationFeedbackInfoEXT
+{
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t postMergeSubpassCount;
+};
+
+struct VkRenderPassSubpassFeedbackInfoEXT
+{
+ VkStructureType sType;
+ const void* pNext;
+ VkSubpassMergeStatusEXT subpassMergeStatus;
+ char description[VK_MAX_DESCRIPTION_SIZE];
+ uint32_t postMergeIndex;
+};
+
union VkDeviceOrHostAddressKHR
{
VkDeviceAddress deviceAddress;
@@ -6932,7 +7047,6 @@
uint8_t bit_depth_luma_minus8;
uint8_t bit_depth_chroma_minus8;
uint8_t log2_max_pic_order_cnt_lsb_minus4;
- uint8_t sps_max_dec_pic_buffering_minus1[STD_VIDEO_H265_SPS_MAX_SUB_LAYERS];
uint8_t log2_min_luma_coding_block_size_minus3;
uint8_t log2_diff_max_min_luma_coding_block_size;
uint8_t log2_min_luma_transform_block_size_minus2;
@@ -8216,6 +8330,8 @@
typedef VkQueueFamilyGlobalPriorityPropertiesKHR VkQueueFamilyGlobalPriorityPropertiesEXT;
+typedef VkPipelineInfoKHR VkPipelineInfoEXT;
+
typedef VkTransformMatrixKHR VkTransformMatrixNV;
typedef VkAabbPositionsKHR VkAabbPositionsNV;
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkTypeUtil.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkTypeUtil.inl
index 5d03a8f..e6718fc 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkTypeUtil.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkTypeUtil.inl
@@ -442,6 +442,26 @@
return res;
}
+inline VkTraceRaysIndirectCommand2KHR makeTraceRaysIndirectCommand2KHR (VkDeviceAddress raygenShaderRecordAddress, VkDeviceSize raygenShaderRecordSize, VkDeviceAddress missShaderBindingTableAddress, VkDeviceSize missShaderBindingTableSize, VkDeviceSize missShaderBindingTableStride, VkDeviceAddress hitShaderBindingTableAddress, VkDeviceSize hitShaderBindingTableSize, VkDeviceSize hitShaderBindingTableStride, VkDeviceAddress callableShaderBindingTableAddress, VkDeviceSize callableShaderBindingTableSize, VkDeviceSize callableShaderBindingTableStride, uint32_t width, uint32_t height, uint32_t depth)
+{
+ VkTraceRaysIndirectCommand2KHR res;
+ res.raygenShaderRecordAddress = raygenShaderRecordAddress;
+ res.raygenShaderRecordSize = raygenShaderRecordSize;
+ res.missShaderBindingTableAddress = missShaderBindingTableAddress;
+ res.missShaderBindingTableSize = missShaderBindingTableSize;
+ res.missShaderBindingTableStride = missShaderBindingTableStride;
+ res.hitShaderBindingTableAddress = hitShaderBindingTableAddress;
+ res.hitShaderBindingTableSize = hitShaderBindingTableSize;
+ res.hitShaderBindingTableStride = hitShaderBindingTableStride;
+ res.callableShaderBindingTableAddress = callableShaderBindingTableAddress;
+ res.callableShaderBindingTableSize = callableShaderBindingTableSize;
+ res.callableShaderBindingTableStride = callableShaderBindingTableStride;
+ res.width = width;
+ res.height = height;
+ res.depth = depth;
+ return res;
+}
+
inline VkShaderResourceUsageAMD makeShaderResourceUsageAMD (uint32_t numUsedVgprs, uint32_t numUsedSgprs, uint32_t ldsSizePerLocalWorkGroup, size_t ldsUsageSizeInBytes, size_t scratchMemUsageInBytes)
{
VkShaderResourceUsageAMD res;
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkVirtualDeviceInterface.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkVirtualDeviceInterface.inl
index b407c86..7b7cf87 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkVirtualDeviceInterface.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkVirtualDeviceInterface.inl
@@ -221,6 +221,7 @@
virtual VkResult getPipelineExecutableInternalRepresentationsKHR (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) const = 0;
virtual void cmdWriteBufferMarker2AMD (VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker) const = 0;
virtual void getQueueCheckpointData2NV (VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData) const = 0;
+virtual void cmdTraceRaysIndirect2KHR (VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress) const = 0;
virtual VkResult debugMarkerSetObjectTagEXT (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) const = 0;
virtual VkResult debugMarkerSetObjectNameEXT (VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) const = 0;
virtual void cmdDebugMarkerBeginEXT (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const = 0;
@@ -311,11 +312,13 @@
virtual VkResult createIndirectCommandsLayoutNV (VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout) const = 0;
virtual void destroyIndirectCommandsLayoutNV (VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator) const = 0;
virtual void cmdSetFragmentShadingRateEnumNV (VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) const = 0;
+virtual void getImageSubresourceLayout2EXT (VkDevice device, VkImage image, const VkImageSubresource2EXT* pSubresource, VkSubresourceLayout2EXT* pLayout) const = 0;
virtual void cmdSetVertexInputEXT (VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, uint32_t vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) const = 0;
virtual VkResult getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI (VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize) const = 0;
virtual void cmdSubpassShadingHUAWEI (VkCommandBuffer commandBuffer) const = 0;
virtual void cmdBindInvocationMaskHUAWEI (VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout) const = 0;
virtual VkResult getMemoryRemoteAddressNV (VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress) const = 0;
+virtual VkResult getPipelinePropertiesEXT (VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, VkBaseOutStructure* pPipelineProperties) const = 0;
virtual void cmdSetPatchControlPointsEXT (VkCommandBuffer commandBuffer, uint32_t patchControlPoints) const = 0;
virtual void cmdSetLogicOpEXT (VkCommandBuffer commandBuffer, VkLogicOp logicOp) const = 0;
virtual void cmdSetColorWriteEnableEXT (VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkBool32* pColorWriteEnables) const = 0;
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkVulkan_c.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkVulkan_c.inl
index 81bb195..c9fa5cc 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkan/vkVulkan_c.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkVulkan_c.inl
@@ -505,7 +505,6 @@
#define STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS 64
#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE 3
#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE 128
-#define STD_VIDEO_H265_SPS_MAX_SUB_LAYERS 8
#define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE 19
#define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE 21
#define STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE 6
@@ -728,7 +727,6 @@
deUint8 bit_depth_luma_minus8;
deUint8 bit_depth_chroma_minus8;
deUint8 log2_max_pic_order_cnt_lsb_minus4;
- deUint8 sps_max_dec_pic_buffering_minus1[STD_VIDEO_H265_SPS_MAX_SUB_LAYERS];
deUint8 log2_min_luma_coding_block_size_minus3;
deUint8 log2_diff_max_min_luma_coding_block_size;
deUint8 log2_min_luma_transform_block_size_minus2;
@@ -956,10 +954,10 @@
#define vulkan_video_codec_h265std_decode 1
// Vulkan 0.9 provisional Vulkan video H.265 decode std specification version number
-#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_0_9_6 VK_MAKE_VIDEO_STD_VERSION(0, 9, 6) // Patch version should always be set to 0
+#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_0_9_7 VK_MAKE_VIDEO_STD_VERSION(0, 9, 7) // Patch version should always be set to 0
#define STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE 8
-#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_0_9_6
+#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_0_9_7
#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265_decode"
typedef struct StdVideoDecodeH265PictureInfoFlags {
deUint32 IrapPicFlag : 1;
@@ -1073,7 +1071,7 @@
#define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0
// Version of this file
-#define VK_HEADER_VERSION 211
+#define VK_HEADER_VERSION 213
// Complete version of this file
#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION)
@@ -1176,6 +1174,7 @@
VK_THREAD_DONE_KHR = 1000268001,
VK_OPERATION_DEFERRED_KHR = 1000268002,
VK_OPERATION_NOT_DEFERRED_KHR = 1000268003,
+ VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000,
VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION,
@@ -1889,6 +1888,11 @@
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001,
VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000,
+ VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001,
+ VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002,
+ VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003,
+ VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT = 1000344000,
@@ -1923,11 +1927,14 @@
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = 1000370000,
VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV = 1000371000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001,
+ VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000,
VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX = 1000378000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000,
VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT = 1000382000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR = 1000386000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT = 1000391000,
VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT = 1000391001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000,
@@ -1943,6 +1950,11 @@
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001,
VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000,
+ VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT = 1000458001,
+ VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_INFO_EXT = 1000458002,
+ VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_INFO_EXT = 1000458003,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
@@ -2105,6 +2117,7 @@
VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2,
VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2,
VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3,
+ VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR,
VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES,
@@ -2597,6 +2610,8 @@
VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR = 1000299000,
#endif
VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000,
+ VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000,
+ VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR = 1000386001,
VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
} VkQueryType;
@@ -7357,6 +7372,7 @@
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = 0x00100000ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI = 0x8000000000ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI = 0x10000000000ULL;
+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR = 0x10000000ULL;
typedef VkFlags64 VkAccessFlags2;
@@ -7431,6 +7447,7 @@
static const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000ULL;
static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000ULL;
static const VkAccessFlagBits2 VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI = 0x8000000000ULL;
+static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR = 0x10000000000ULL;
typedef enum VkSubmitFlagBits {
@@ -10485,6 +10502,42 @@
+#define VK_KHR_ray_tracing_maintenance1 1
+#define VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION 1
+#define VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_ray_tracing_maintenance1"
+typedef struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 rayTracingMaintenance1;
+ VkBool32 rayTracingPipelineTraceRaysIndirect2;
+} VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR;
+
+typedef struct VkTraceRaysIndirectCommand2KHR {
+ VkDeviceAddress raygenShaderRecordAddress;
+ VkDeviceSize raygenShaderRecordSize;
+ VkDeviceAddress missShaderBindingTableAddress;
+ VkDeviceSize missShaderBindingTableSize;
+ VkDeviceSize missShaderBindingTableStride;
+ VkDeviceAddress hitShaderBindingTableAddress;
+ VkDeviceSize hitShaderBindingTableSize;
+ VkDeviceSize hitShaderBindingTableStride;
+ VkDeviceAddress callableShaderBindingTableAddress;
+ VkDeviceSize callableShaderBindingTableSize;
+ VkDeviceSize callableShaderBindingTableStride;
+ deUint32 width;
+ deUint32 height;
+ deUint32 depth;
+} VkTraceRaysIndirectCommand2KHR;
+
+typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirect2KHR)(VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirect2KHR(
+ VkCommandBuffer commandBuffer,
+ VkDeviceAddress indirectDeviceAddress);
+#endif
+
+
#define VK_KHR_portability_enumeration 1
#define VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION 1
#define VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME "VK_KHR_portability_enumeration"
@@ -14454,6 +14507,92 @@
+#define VK_EXT_image_compression_control 1
+#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION 1
+#define VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME "VK_EXT_image_compression_control"
+
+typedef enum VkImageCompressionFlagBitsEXT {
+ VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 0x00000001,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 0x00000002,
+ VK_IMAGE_COMPRESSION_DISABLED_EXT = 0x00000004,
+ VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkImageCompressionFlagBitsEXT;
+typedef VkFlags VkImageCompressionFlagsEXT;
+
+typedef enum VkImageCompressionFixedRateFlagBitsEXT {
+ VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 0x00000001,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 0x00000002,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 0x00000004,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 0x00000008,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 0x00000010,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 0x00000020,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 0x00000040,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 0x00000080,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 0x00000100,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 0x00000200,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 0x00000400,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 0x00000800,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 0x00001000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 0x00002000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 0x00004000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 0x00008000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 0x00010000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 0x00020000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 0x00040000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 0x00080000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 0x00100000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 0x00200000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 0x00400000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 0x00800000,
+ VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkImageCompressionFixedRateFlagBitsEXT;
+typedef VkFlags VkImageCompressionFixedRateFlagsEXT;
+typedef struct VkPhysicalDeviceImageCompressionControlFeaturesEXT {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 imageCompressionControl;
+} VkPhysicalDeviceImageCompressionControlFeaturesEXT;
+
+typedef struct VkImageCompressionControlEXT {
+ VkStructureType sType;
+ const void* pNext;
+ VkImageCompressionFlagsEXT flags;
+ deUint32 compressionControlPlaneCount;
+ VkImageCompressionFixedRateFlagsEXT* pFixedRateFlags;
+} VkImageCompressionControlEXT;
+
+typedef struct VkSubresourceLayout2EXT {
+ VkStructureType sType;
+ void* pNext;
+ VkSubresourceLayout subresourceLayout;
+} VkSubresourceLayout2EXT;
+
+typedef struct VkImageSubresource2EXT {
+ VkStructureType sType;
+ void* pNext;
+ VkImageSubresource imageSubresource;
+} VkImageSubresource2EXT;
+
+typedef struct VkImageCompressionPropertiesEXT {
+ VkStructureType sType;
+ void* pNext;
+ VkImageCompressionFlagsEXT imageCompressionFlags;
+ VkImageCompressionFixedRateFlagsEXT imageCompressionFixedRateFlags;
+} VkImageCompressionPropertiesEXT;
+
+typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout2EXT)(VkDevice device, VkImage image, const VkImageSubresource2EXT* pSubresource, VkSubresourceLayout2EXT* pLayout);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout2EXT(
+ VkDevice device,
+ VkImage image,
+ const VkImageSubresource2EXT* pSubresource,
+ VkSubresourceLayout2EXT* pLayout);
+#endif
+
+
#define VK_EXT_4444_formats 1
#define VK_EXT_4444_FORMATS_SPEC_VERSION 1
#define VK_EXT_4444_FORMATS_EXTENSION_NAME "VK_EXT_4444_formats"
@@ -14697,6 +14836,33 @@
#endif
+#define VK_EXT_pipeline_properties 1
+#define VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION 1
+#define VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME "VK_EXT_pipeline_properties"
+typedef VkPipelineInfoKHR VkPipelineInfoEXT;
+
+typedef struct VkPipelinePropertiesIdentifierEXT {
+ VkStructureType sType;
+ void* pNext;
+ deUint8 pipelineIdentifier[VK_UUID_SIZE];
+} VkPipelinePropertiesIdentifierEXT;
+
+typedef struct VkPhysicalDevicePipelinePropertiesFeaturesEXT {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 pipelinePropertiesIdentifier;
+} VkPhysicalDevicePipelinePropertiesFeaturesEXT;
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetPipelinePropertiesEXT)(VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, VkBaseOutStructure* pPipelineProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelinePropertiesEXT(
+ VkDevice device,
+ const VkPipelineInfoEXT* pPipelineInfo,
+ VkBaseOutStructure* pPipelineProperties);
+#endif
+
+
#define VK_EXT_extended_dynamic_state2 1
#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION 1
#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME "VK_EXT_extended_dynamic_state2"
@@ -14986,6 +15152,66 @@
#define VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME "VK_GOOGLE_surfaceless_query"
+#define VK_EXT_image_compression_control_swapchain 1
+#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION 1
+#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME "VK_EXT_image_compression_control_swapchain"
+typedef struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 imageCompressionControlSwapchain;
+} VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;
+
+
+
+#define VK_EXT_subpass_merge_feedback 1
+#define VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION 1
+#define VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME "VK_EXT_subpass_merge_feedback"
+
+typedef enum VkSubpassMergeStatusEXT {
+ VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0,
+ VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12,
+ VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13,
+ VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkSubpassMergeStatusEXT;
+typedef struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 subpassMergeFeedback;
+} VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT;
+
+typedef struct VkRenderPassCreationControlEXT {
+ VkStructureType sType;
+ const void* pNext;
+ VkBool32 disallowMerging;
+} VkRenderPassCreationControlEXT;
+
+typedef struct VkRenderPassCreationFeedbackInfoEXT {
+ VkStructureType sType;
+ const void* pNext;
+ deUint32 postMergeSubpassCount;
+} VkRenderPassCreationFeedbackInfoEXT;
+
+typedef struct VkRenderPassSubpassFeedbackInfoEXT {
+ VkStructureType sType;
+ const void* pNext;
+ VkSubpassMergeStatusEXT subpassMergeStatus;
+ char description[VK_MAX_DESCRIPTION_SIZE];
+ deUint32 postMergeIndex;
+} VkRenderPassSubpassFeedbackInfoEXT;
+
+
+
#define VK_KHR_acceleration_structure 1
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR)
#define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13
diff --git a/external/vulkancts/framework/vulkan/generated/vulkansc/vkDeviceExtensions.inl b/external/vulkancts/framework/vulkan/generated/vulkansc/vkDeviceExtensions.inl
index 17291c1..fde77c8 100644
--- a/external/vulkancts/framework/vulkan/generated/vulkansc/vkDeviceExtensions.inl
+++ b/external/vulkancts/framework/vulkan/generated/vulkansc/vkDeviceExtensions.inl
@@ -51,6 +51,7 @@
"VK_KHR_present_wait",
"VK_KHR_push_descriptor",
"VK_KHR_ray_query",
+ "VK_KHR_ray_tracing_maintenance1",
"VK_KHR_ray_tracing_pipeline",
"VK_KHR_relaxed_block_layout",
"VK_KHR_sampler_mirror_clamp_to_edge",
diff --git a/external/vulkancts/framework/vulkan/vkRayTracingUtil.cpp b/external/vulkancts/framework/vulkan/vkRayTracingUtil.cpp
index f96ec96..7eeaf90 100644
--- a/external/vulkancts/framework/vulkan/vkRayTracingUtil.cpp
+++ b/external/vulkancts/framework/vulkan/vkRayTracingUtil.cpp
@@ -1757,9 +1757,7 @@
Allocator& allocator)
{
// Prevent a programmer from calling this method more than once.
- if (m_createOnce) DE_ASSERT(0);
-
- m_createOnce = true;
+ if (m_createOnce) DE_ASSERT(0); m_createOnce = true;
DE_ASSERT(m_structs.size() != 0);
auto createAccellerationStructureBuffer = [&](VkDeviceSize bufferSize) -> typename std::add_pointer<BufferWithMemory>::type
@@ -2784,7 +2782,7 @@
{
const deUint64& lookAddr = addresses[i+1];
auto end = matches.end();
- auto match = std::find_if(matches.begin(), end, [&](const std::pair<deUint64, deUint32>& item){ return item.first == lookAddr; });
+ auto match = std::find_if(matches.begin(), end, [&](const std::pair<deUint64, std::size_t>& item){ return item.first == lookAddr; });
if (match != end)
{
m_bottomLevelInstances .emplace_back(m_bottomLevelInstances[match->second]);
@@ -3491,6 +3489,22 @@
indirectDeviceAddress);
}
+static inline void cmdTraceRaysIndirect2KHR (const DeviceInterface& vk,
+ VkCommandBuffer commandBuffer,
+ VkDeviceAddress indirectDeviceAddress )
+{
+ DE_ASSERT(indirectDeviceAddress != 0);
+
+ return vk.cmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress);
+}
+
+void cmdTraceRaysIndirect2 (const DeviceInterface& vk,
+ VkCommandBuffer commandBuffer,
+ VkDeviceAddress indirectDeviceAddress)
+{
+ return cmdTraceRaysIndirect2KHR(vk, commandBuffer, indirectDeviceAddress);
+}
+
#else
deUint32 rayTracingDefineAnything()
diff --git a/external/vulkancts/framework/vulkan/vkRayTracingUtil.hpp b/external/vulkancts/framework/vulkan/vkRayTracingUtil.hpp
index 958d0b7..3569d37 100644
--- a/external/vulkancts/framework/vulkan/vkRayTracingUtil.hpp
+++ b/external/vulkancts/framework/vulkan/vkRayTracingUtil.hpp
@@ -959,6 +959,11 @@
const VkStridedDeviceAddressRegionKHR* callableShaderBindingTableRegion,
VkDeviceAddress indirectDeviceAddress);
+void cmdTraceRaysIndirect2 (const DeviceInterface& vk,
+ VkCommandBuffer commandBuffer,
+ VkDeviceAddress indirectDeviceAddress);
+
+
#else
deUint32 rayTracingDefineAnything();
diff --git a/external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingAccelerationStructuresTests.cpp b/external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingAccelerationStructuresTests.cpp
index b6738e6..24d9f9b 100644
--- a/external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingAccelerationStructuresTests.cpp
+++ b/external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingAccelerationStructuresTests.cpp
@@ -44,6 +44,8 @@
#include "tcuImageCompare.hpp"
#include "tcuFloat.hpp"
+#include <cmath>
+#include <cstddef>
#include <set>
#include <limits>
@@ -55,6 +57,7 @@
{
using namespace vk;
using namespace vkt;
+using namespace tcu;
static const VkFlags ALL_RAY_TRACING_STAGES = VK_SHADER_STAGE_RAYGEN_BIT_KHR
| VK_SHADER_STAGE_ANY_HIT_BIT_KHR
@@ -176,6 +179,8 @@
deUint32 workerThreadsCount;
EmptyAccelerationStructureCase emptyASCase;
InstanceCustomIndexCase instanceCustomIndexCase;
+ bool useCullMask;
+ uint32_t cullMask;
};
deUint32 getShaderGroupSize (const InstanceInterface& vki,
@@ -538,7 +543,15 @@
if (((x + y) % 2) == 0)
continue;
const deUint32 instanceCustomIndex = ((testParams.instanceCustomIndexCase != InstanceCustomIndexCase::NONE) ? (INSTANCE_CUSTOM_INDEX_BASE + x + y) : 0u);
- result->addInstance(bottomLevelAccelerationStructures[currentInstanceIndex++], identityMatrix3x4, instanceCustomIndex, 0xFFu, 0u, instanceFlags);
+
+ if (testParams.useCullMask)
+ {
+ result->addInstance(bottomLevelAccelerationStructures[currentInstanceIndex++], identityMatrix3x4, instanceCustomIndex, testParams.cullMask, 0u, instanceFlags);
+ }
+ else
+ {
+ result->addInstance(bottomLevelAccelerationStructures[currentInstanceIndex++], identityMatrix3x4, instanceCustomIndex, 0xFFu, 0u, instanceFlags);
+ }
}
}
@@ -587,26 +600,49 @@
missShaderBindingTable = rayTracingPipeline->createShaderBindingTable(vkd, device, pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 3, 1 );
}
+deUint32 bitfieldReverse(deUint32 num)
+{
+ deUint32 reverse_num = 0;
+ deUint32 i;
+ for (i = 0; i < 32; i++)
+ {
+ if((num & (1 << i)))
+ reverse_num |= 1 << ((32 - 1) - i);
+ }
+ return reverse_num;
+}
+
bool CheckerboardConfiguration::verifyImage(BufferWithMemory* resultBuffer, Context& context, TestParams& testParams)
{
// Checkerboard configuration does not support empty geometry tests.
DE_ASSERT(testParams.emptyASCase == EmptyAccelerationStructureCase::NOT_EMPTY);
DE_UNREF(context);
- const auto* bufferPtr = (deInt32*)resultBuffer->getAllocation().getHostPtr();
- deUint32 pos = 0;
- deUint32 failures = 0;
+ const auto* bufferPtr = (deInt32*)resultBuffer->getAllocation().getHostPtr();
+ deUint32 pos = 0;
+ deUint32 failures = 0;
// verify results - each test case should generate checkerboard pattern
for (deUint32 y = 0; y < testParams.height; ++y)
for (deUint32 x = 0; x < testParams.width; ++x)
{
// The hit value should match the shader code.
- const deInt32 hitValue = ((testParams.instanceCustomIndexCase != InstanceCustomIndexCase::NONE) ? static_cast<deInt32>(INSTANCE_CUSTOM_INDEX_BASE + x + y) : 2);
- const deInt32 expectedResult = ((x + y) % 2) ? hitValue : 1;
+ if (testParams.useCullMask)
+ {
+ const deInt32 hitValue = testParams.cullMask & 0x000000FFu; // only 8 last bits are used by the cullMask
+ const deInt32 expectedResult = ((x + y) % 2) ? hitValue : bitfieldReverse(testParams.cullMask & 0x000000FFu);
- if (bufferPtr[pos] != expectedResult)
- failures++;
+ if (bufferPtr[pos] != expectedResult)
+ failures++;
+ }
+ else
+ {
+ const deInt32 hitValue = ((testParams.instanceCustomIndexCase != InstanceCustomIndexCase::NONE) ? static_cast<deInt32>(INSTANCE_CUSTOM_INDEX_BASE + x + y) : 2);
+ const deInt32 expectedResult = ((x + y) % 2) ? hitValue : 1;
+
+ if (bufferPtr[pos] != expectedResult)
+ failures++;
+ }
++pos;
}
@@ -804,6 +840,21 @@
missShaderBindingTable = rayTracingPipeline->createShaderBindingTable(vkd, device, pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 2, 1 );
}
+bool pointInTriangle2D(const tcu::Vec3& p, const tcu::Vec3& p0, const tcu::Vec3& p1, const tcu::Vec3& p2)
+{
+ float s = p0.y() * p2.x() - p0.x() * p2.y() + (p2.y() - p0.y()) * p.x() + (p0.x() - p2.x()) * p.y();
+ float t = p0.x() * p1.y() - p0.y() * p1.x() + (p0.y() - p1.y()) * p.x() + (p1.x() - p0.x()) * p.y();
+
+ if ((s < 0) != (t < 0))
+ return false;
+
+ float a = -p1.y() * p2.x() + p0.y() * (p2.x() - p1.x()) + p0.x() * (p1.y() - p2.y()) + p1.x() * p2.y();
+
+ return a < 0 ?
+ (s <= 0 && s + t >= a) :
+ (s >= 0 && s + t <= a);
+}
+
bool SingleTriangleConfiguration::verifyImage(BufferWithMemory* resultBuffer, Context& context, TestParams& testParams)
{
tcu::TextureFormat imageFormat = vk::mapVkFormat(getResultImageFormat());
@@ -928,6 +979,9 @@
if (m_data.buildType == VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR && accelerationStructureFeaturesKHR.accelerationStructureHostCommands == DE_FALSE)
TCU_THROW(NotSupportedError, "Requires VkPhysicalDeviceAccelerationStructureFeaturesKHR.accelerationStructureHostCommands");
+ if (m_data.useCullMask)
+ context.requireDeviceFunctionality("VK_KHR_ray_tracing_maintenance1");
+
// Check supported vertex format.
checkAccelerationStructureVertexBufferFormat(context.getInstanceInterface(), context.getPhysicalDevice(), m_data.vertexFormat);
}
@@ -948,8 +1002,10 @@
default: DE_ASSERT(false); break;
}
+
const std::string imageDeclaration = "layout(r32i, set = 0, binding = 0) uniform iimage2D result;\n";
const std::string storeCustomIndex = " imageStore(result, ivec2(gl_LaunchIDEXT.xy), ivec4(gl_InstanceCustomIndexEXT, 0, 0, 1));\n";
+ const std::string storeCullMask = " imageStore(result, ivec2(gl_LaunchIDEXT.xy), ivec4(gl_CullMaskEXT, 0, 0, 1));\n";
const vk::ShaderBuildOptions buildOptions (programCollection.usedVulkanVersion, vk::SPIRV_VERSION_1_4, 0u, true);
{
@@ -972,7 +1028,7 @@
<< " vec3 origin = vec3(float(gl_LaunchIDEXT.x) + 0.5f, float(gl_LaunchIDEXT.y) + 0.5f, 0.5);\n"
<< " vec3 direction = vec3(0.0,0.0,-1.0);\n"
<< " hitValue = ivec4(0,0,0,0);\n"
- << " traceRayEXT(topLevelAS, " << ((m_data.cullFlags == InstanceCullFlags::NONE) ? "0" : "gl_RayFlagsCullBackFacingTrianglesEXT") << ", 0xFF, 0, 0, 0, origin, tmin, direction, tmax, 0);\n";
+ << " traceRayEXT(topLevelAS, " << ((m_data.cullFlags == InstanceCullFlags::NONE) ? "0, " : "gl_RayFlagsCullBackFacingTrianglesEXT, ") << m_data.cullMask << ", 0, 0, 0, origin, tmin, direction, tmax, 0);\n";
if (storeInRGen)
css << " imageStore(result, ivec2(gl_LaunchIDEXT.xy), hitValue);\n";
@@ -987,6 +1043,7 @@
css
<< "#version 460 core\n"
<< "#extension GL_EXT_ray_tracing : require\n"
+ << ((m_data.useCullMask) ? "#extension GL_EXT_ray_cull_mask : require\n" : "\n")
<< "layout(location = 0) rayPayloadInEXT ivec4 hitValue;\n";
if (storeInCHit)
@@ -998,7 +1055,16 @@
<< " hitValue = ivec4(2,0,0,1);\n";
if (storeInCHit)
- css << storeCustomIndex;
+ {
+ if (m_data.useCullMask)
+ {
+ css << storeCullMask;
+ }
+ else
+ {
+ css << storeCustomIndex;
+ }
+ }
css << "}\n";
@@ -1011,10 +1077,11 @@
css
<< "#version 460 core\n"
<< "#extension GL_EXT_ray_tracing : require\n"
+ << ((m_data.useCullMask) ? "#extension GL_EXT_ray_cull_mask : require\n" : "\n")
<< imageDeclaration
<< "void main()\n"
<< "{\n"
- << storeCustomIndex
+ << ((m_data.useCullMask) ? storeCullMask : storeCustomIndex)
<< "}\n";
programCollection.glslSources.add("ahit") << glu::AnyHitSource(updateRayTracingGLSL(css.str())) << buildOptions;
@@ -1025,6 +1092,7 @@
css
<< "#version 460 core\n"
<< "#extension GL_EXT_ray_tracing : require\n"
+ << ((m_data.useCullMask) ? "#extension GL_EXT_ray_cull_mask : require\n" : "\n")
<< "hitAttributeEXT ivec4 hitAttribute;\n";
if (storeInISec)
@@ -1035,9 +1103,17 @@
<< "{\n"
<< " hitAttribute = ivec4(0,0,0,0);\n"
<< " reportIntersectionEXT(0.5f, 0);\n";
-
if (storeInISec)
- css << storeCustomIndex;
+ {
+ if (m_data.useCullMask)
+ {
+ css << storeCullMask;
+ }
+ else
+ {
+ css << storeCustomIndex;
+ }
+ }
css << "}\n";
@@ -1049,6 +1125,7 @@
css
<< "#version 460 core\n"
<< "#extension GL_EXT_ray_tracing : require\n"
+ << ((m_data.useCullMask) ? "#extension GL_EXT_ray_cull_mask : require\n" : "\n")
<< "layout(location = 0) rayPayloadInEXT ivec4 hitValue;\n";
if (!storeInRGen)
@@ -1058,9 +1135,17 @@
<< "void main()\n"
<< "{\n"
<< " hitValue = ivec4(1,0,0,1);\n";
-
if (!storeInRGen)
- css << " imageStore(result, ivec2(gl_LaunchIDEXT.xy), hitValue);\n";
+ {
+ if (m_data.useCullMask)
+ {
+ css << " imageStore(result, ivec2(gl_LaunchIDEXT.xy), ivec4(bitfieldReverse(uint(gl_CullMaskEXT)), 0, 0, 1)); \n";
+ }
+ else
+ {
+ css << " imageStore(result, ivec2(gl_LaunchIDEXT.xy), hitValue);\n";
+ }
+ }
css << "}\n";
@@ -2779,7 +2864,7 @@
{ 0.0f, 0.0f, 1.0f, 0.0f },
}
};
- tlas->addInstance(bottoms[i], transformMatrixKHR, 0, 0xFFu, 0u, getCullFlags((m_params->cullFlags)));
+ tlas->addInstance(bottoms[i], transformMatrixKHR, 0, m_params->cullMask, 0u, getCullFlags((m_params->cullFlags)));
}
tlas->createAndBuild(vk, device, cmdBuffer, allocator);
@@ -2890,6 +2975,1155 @@
return (matches == 0);
}
+// note that these names should be auto-generated but they do not
+#ifndef VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME
+#define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure"
+#endif
+#ifndef VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME
+#define VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_ray_tracing_maintenance1"
+#endif
+
+template<class X, class... Y>
+inline de::SharedPtr<X> makeShared(Y&&... ctorArgs) {
+ return de::SharedPtr<X>(new X(std::forward<Y>(ctorArgs)...));
+}
+template<class X, class... Y>
+inline de::MovePtr<X> makeMovePtr(Y&&... ctorArgs) {
+ return de::MovePtr<X>(new X(std::forward<Y>(ctorArgs)...));
+}
+template<class X>
+inline de::SharedPtr<X> makeSharedFrom(const X& x) {
+ return makeShared<X>(x);
+}
+
+struct QueryPoolResultsParams
+{
+ enum class Type
+ {
+ Size,
+ Pointers
+ } queryType;
+ VkAccelerationStructureBuildTypeKHR buildType;
+ bool inVkBuffer;
+ deUint32 blasCount;
+};
+
+typedef de::SharedPtr<const QueryPoolResultsParams> QueryPoolResultsParamsPtr;
+
+class QueryPoolResultsInstance : public TestInstance
+{
+public:
+ using TlasPtr = de::SharedPtr<TopLevelAccelerationStructure>;
+ using BlasPtr = de::SharedPtr<BottomLevelAccelerationStructure>;
+
+ QueryPoolResultsInstance (Context& context,
+ QueryPoolResultsParamsPtr params)
+ : TestInstance (context)
+ , m_params (params) {}
+ auto prepareBottomAccStructures (const DeviceInterface& vk,
+ VkDevice device,
+ Allocator& allocator,
+ VkCommandBuffer cmdBuffer) ->std::vector<BlasPtr>;
+ TlasPtr prepareTopAccStructure (const DeviceInterface& vk,
+ VkDevice device,
+ Allocator& allocator,
+ VkCommandBuffer cmdBuffer,
+ const std::vector<BlasPtr>& bottoms);
+protected:
+ const QueryPoolResultsParamsPtr m_params;
+};
+
+class QueryPoolResultsSizeInstance : public QueryPoolResultsInstance
+{
+public:
+ QueryPoolResultsSizeInstance (Context& context, QueryPoolResultsParamsPtr params)
+ : QueryPoolResultsInstance(context, params) {}
+ TestStatus iterate (void) override;
+};
+
+class QueryPoolResultsPointersInstance : public QueryPoolResultsInstance
+{
+public:
+ QueryPoolResultsPointersInstance (Context& context, QueryPoolResultsParamsPtr params)
+ : QueryPoolResultsInstance(context, params) {}
+
+ TestStatus iterate (void) override;
+};
+
+class QueryPoolResultsCase : public TestCase
+{
+public:
+ QueryPoolResultsCase (TestContext& ctx,
+ const char* name,
+ QueryPoolResultsParamsPtr params)
+ : TestCase(ctx, name, std::string())
+ , m_params(params) {}
+ void checkSupport (Context& context) const override;
+ TestInstance* createInstance (Context& context) const override;
+
+ template<class T, class P = T(*)[1], class R = decltype(std::begin(*std::declval<P>()))>
+ static auto makeStdBeginEnd(void* p, deUint32 n) -> std::pair<R, R>
+ {
+ auto tmp = std::begin(*P(p));
+ auto begin = tmp;
+ std::advance(tmp, n);
+ return { begin, tmp };
+ }
+
+private:
+ const QueryPoolResultsParamsPtr m_params;
+};
+
+TestInstance* QueryPoolResultsCase::createInstance (Context& context) const
+{
+ switch (m_params->queryType)
+ {
+ case QueryPoolResultsParams::Type::Size: return new QueryPoolResultsSizeInstance(context, m_params);
+ case QueryPoolResultsParams::Type::Pointers: return new QueryPoolResultsPointersInstance(context, m_params);
+ }
+ TCU_THROW(InternalError, "Unknown test type");
+ return nullptr;
+}
+
+void QueryPoolResultsCase::checkSupport (Context& context) const
+{
+ context.requireDeviceFunctionality(VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME);
+ context.requireDeviceFunctionality(VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME);
+
+ const VkPhysicalDeviceAccelerationStructureFeaturesKHR& accelerationStructureFeaturesKHR = context.getAccelerationStructureFeatures();
+ if (m_params->buildType == VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR && accelerationStructureFeaturesKHR.accelerationStructureHostCommands == DE_FALSE)
+ TCU_THROW(NotSupportedError, "Requires VkPhysicalDeviceAccelerationStructureFeaturesKHR.accelerationStructureHostCommands");
+
+ const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR& maintenance1FeaturesKHR = context.getRayTracingMaintenance1Features();
+ if (maintenance1FeaturesKHR.rayTracingMaintenance1 == VK_FALSE)
+ TCU_THROW(NotSupportedError, "Requires VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR::rayTracingMaintenance1");
+}
+
+auto QueryPoolResultsInstance::prepareBottomAccStructures (const DeviceInterface& vk,
+ VkDevice device,
+ Allocator& allocator,
+ VkCommandBuffer cmdBuffer) -> std::vector<BlasPtr>
+{
+ std::vector<Vec3> triangle =
+ {
+ { 0.0, 0.0, 0.0 },
+ { 0.5, 0.0, 0.0 },
+ { 0.0, 0.5, 0.0 },
+ };
+
+ const deUint32 triangleCount = ((1 + m_params->blasCount) * m_params->blasCount) / 2;
+ const float angle = (4.0f * std::acos(0.0f)) / float(triangleCount);
+ auto rotateCcwZ = [&](const Vec3& p, const Vec3& center) -> tcu::Vec3
+ {
+ const float s = std::sin(angle);
+ const float c = std::cos(angle);
+ const auto t = p - center;
+ return tcu::Vec3(c * t.x() - s * t.y(), s * t.x() + c * t.y(), t.z()) + center;
+ };
+ auto nextGeometry = [&]() -> void
+ {
+ for (auto& vertex : triangle)
+ vertex = rotateCcwZ(vertex, Vec3(0.0f, 0.0f, 0.0f));
+ };
+
+ std::vector<BlasPtr> bottoms (m_params->blasCount);
+
+ for (deUint32 b = 0; b < m_params->blasCount; ++b)
+ {
+ BlasPtr blas(makeBottomLevelAccelerationStructure().release());
+
+ blas->setBuildType(m_params->buildType);
+ blas->addGeometry(triangle, true, VK_GEOMETRY_OPAQUE_BIT_KHR);
+ for (deUint32 geom = b; geom < m_params->blasCount; ++geom)
+ {
+ nextGeometry();
+ blas->addGeometry(triangle, true, VK_GEOMETRY_OPAQUE_BIT_KHR);
+ }
+
+ blas->createAndBuild(vk, device, cmdBuffer, allocator);
+
+ bottoms[b] = blas;
+ }
+
+ return bottoms;
+}
+
+auto QueryPoolResultsInstance::prepareTopAccStructure (const DeviceInterface& vk,
+ VkDevice device,
+ Allocator& allocator,
+ VkCommandBuffer cmdBuffer,
+ const std::vector<BlasPtr>& bottoms) -> TlasPtr
+{
+ const std::size_t instanceCount = bottoms.size();
+
+ de::MovePtr<TopLevelAccelerationStructure> tlas = makeTopLevelAccelerationStructure();
+ tlas->setBuildType(m_params->buildType);
+ tlas->setInstanceCount(instanceCount);
+
+ for (std::size_t i = 0; i < instanceCount; ++i)
+ {
+ tlas->addInstance(bottoms[i], identityMatrix3x4, 0, 0xFFu, 0u, VkGeometryInstanceFlagsKHR(0));
+ }
+
+ tlas->createAndBuild(vk, device, cmdBuffer, allocator);
+
+ return TlasPtr(tlas.release());
+}
+
+TestStatus QueryPoolResultsSizeInstance::iterate (void)
+{
+ const DeviceInterface& vk = m_context.getDeviceInterface();
+ const VkDevice device = m_context.getDevice();
+ const deUint32 familyIndex = m_context.getUniversalQueueFamilyIndex();
+ const VkQueue queue = m_context.getUniversalQueue();
+ Allocator& allocator = m_context.getDefaultAllocator();
+
+ const Move<VkCommandPool> cmdPool = createCommandPool(vk, device, 0, familyIndex);
+ const Move<VkCommandBuffer> cmdBuffer = allocateCommandBuffer(vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY);
+
+ beginCommandBuffer(vk, *cmdBuffer, 0);
+ const std::vector<BlasPtr> bottoms = prepareBottomAccStructures(vk, device, allocator, *cmdBuffer);
+ TlasPtr tlas = prepareTopAccStructure(vk, device, allocator, *cmdBuffer, bottoms);
+ endCommandBuffer(vk, *cmdBuffer);
+ submitCommandsAndWait(vk, device, queue, *cmdBuffer);
+
+ const deUint32 queryCount = m_params->blasCount + 1;
+ std::vector<VkAccelerationStructureKHR> handles (queryCount);
+ handles[0] = *tlas.get()->getPtr();
+ std::transform(bottoms.begin(), bottoms.end(), std::next(handles.begin()), [](const BlasPtr& blas){ return *blas.get()->getPtr(); });
+
+ Move<VkQueryPool> queryPoolSize = makeQueryPool(vk, device, VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR, queryCount);
+ Move<VkQueryPool> queryPoolSerial = makeQueryPool(vk, device, VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR, queryCount);
+
+ de::MovePtr<BufferWithMemory> buffer;
+ std::vector<VkDeviceSize> sizeSizes (queryCount);
+ std::vector<VkDeviceSize> serialSizes (queryCount);
+
+ if (m_params->inVkBuffer)
+ {
+ const auto vci = makeBufferCreateInfo(2 * queryCount * sizeof(VkDeviceSize), VK_BUFFER_USAGE_TRANSFER_DST_BIT);
+ buffer = makeMovePtr<BufferWithMemory>(vk, device, allocator, vci, MemoryRequirement::Coherent | MemoryRequirement::HostVisible);
+ }
+
+ if (m_params->buildType == VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR)
+ {
+ beginCommandBuffer(vk, *cmdBuffer, 0);
+ vk.cmdResetQueryPool(*cmdBuffer, *queryPoolSize, 0, queryCount);
+ vk.cmdResetQueryPool(*cmdBuffer, *queryPoolSerial, 0, queryCount);
+ vk.cmdWriteAccelerationStructuresPropertiesKHR(*cmdBuffer, queryCount, handles.data(), VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR, *queryPoolSize, 0);
+ vk.cmdWriteAccelerationStructuresPropertiesKHR(*cmdBuffer, queryCount, handles.data(), VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR, *queryPoolSerial, 0);
+ if (m_params->inVkBuffer)
+ {
+ vk.cmdCopyQueryPoolResults(*cmdBuffer, *queryPoolSize, 0, queryCount, **buffer, (0 * queryCount * sizeof(VkDeviceSize)),
+ sizeof(VkDeviceSize), VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WAIT_BIT);
+ vk.cmdCopyQueryPoolResults(*cmdBuffer, *queryPoolSerial, 0, queryCount, **buffer, (1 * queryCount * sizeof(VkDeviceSize)),
+ sizeof(VkDeviceSize), VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WAIT_BIT);
+ }
+ endCommandBuffer(vk, *cmdBuffer);
+ submitCommandsAndWait(vk, device, queue, *cmdBuffer);
+
+ if (m_params->inVkBuffer)
+ {
+ Allocation& alloc = buffer->getAllocation();
+ invalidateMappedMemoryRange(vk, device, alloc.getMemory(), alloc.getOffset(), VK_WHOLE_SIZE);
+
+ deUint8* ptrSize = reinterpret_cast<deUint8*>(alloc.getHostPtr());
+ deUint8* ptrSerial = ptrSize + queryCount * sizeof(VkDeviceSize);
+
+ auto rangeSize = QueryPoolResultsCase::makeStdBeginEnd<VkDeviceSize>(ptrSize, queryCount);
+ auto rangeSerial = QueryPoolResultsCase::makeStdBeginEnd<VkDeviceSize>(ptrSerial, queryCount);
+
+ std::copy_n(rangeSize.first, queryCount, sizeSizes.begin());
+ std::copy_n(rangeSerial.first, queryCount, serialSizes.begin());
+ }
+ else
+ {
+ VK_CHECK(vk.getQueryPoolResults(device, *queryPoolSize, 0u, queryCount, queryCount * sizeof(VkDeviceSize),
+ sizeSizes.data(), sizeof(VkDeviceSize), VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WAIT_BIT));
+ VK_CHECK(vk.getQueryPoolResults(device, *queryPoolSerial, 0u, queryCount, queryCount * sizeof(VkDeviceSize),
+ serialSizes.data(), sizeof(VkDeviceSize), VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WAIT_BIT));
+ }
+ }
+ else
+ {
+ vk.writeAccelerationStructuresPropertiesKHR(device, queryCount, handles.data(), VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR,
+ queryCount * sizeof(VkDeviceSize), sizeSizes.data(), sizeof(VkDeviceSize));
+ vk.writeAccelerationStructuresPropertiesKHR(device, queryCount, handles.data(), VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR,
+ queryCount * sizeof(VkDeviceSize), serialSizes.data(), sizeof(VkDeviceSize));
+ }
+
+ // verification
+ bool pass = true;
+ const VkDeviceSize payloadOffset = offsetof(SerialStorage::AccelerationStructureHeader, handleArray);
+
+ for (deUint32 i = 0; pass && i < queryCount; ++i)
+ {
+ const VkDeviceSize accSize = sizeSizes[i];
+ const VkDeviceSize serialSize = serialSizes[i];
+ if (i)
+ {
+ pass = (payloadOffset + accSize) == serialSize;
+ }
+ else // process top accelleration structure size
+ {
+ const VkDeviceSize pointersSize = bottoms.size() * sizeof(VkDeviceSize);
+ pass = (payloadOffset + pointersSize + accSize) == serialSize;
+ }
+ }
+
+ return pass ? TestStatus::pass("") : TestStatus::fail("");
+}
+
+TestStatus QueryPoolResultsPointersInstance::iterate (void)
+{
+ const DeviceInterface& vk = m_context.getDeviceInterface();
+ const VkDevice device = m_context.getDevice();
+ const deUint32 familyIndex = m_context.getUniversalQueueFamilyIndex();
+ const VkQueue queue = m_context.getUniversalQueue();
+ Allocator& allocator = m_context.getDefaultAllocator();
+
+ const Move<VkCommandPool> cmdPool = createCommandPool(vk, device, 0, familyIndex);
+ const Move<VkCommandBuffer> cmdBuffer = allocateCommandBuffer(vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY);
+
+ beginCommandBuffer(vk, *cmdBuffer, 0);
+ const std::vector<BlasPtr> bottoms = prepareBottomAccStructures(vk, device, allocator, *cmdBuffer);
+ TlasPtr tlas = prepareTopAccStructure(vk, device, allocator, *cmdBuffer, bottoms);
+ endCommandBuffer(vk, *cmdBuffer);
+ submitCommandsAndWait(vk, device, queue, *cmdBuffer);
+
+ const deUint32 queryCount = m_params->blasCount + 1;
+ std::vector<VkAccelerationStructureKHR> handles (queryCount);
+ handles[0] = *tlas.get()->getPtr();
+ std::transform(bottoms.begin(), bottoms.end(), std::next(handles.begin()), [](const BlasPtr& blas){ return *blas.get()->getPtr(); });
+
+ const VkQueryType queryType = VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR;
+ Move<VkQueryPool> queryPoolCounts = makeQueryPool(vk, device, queryType, queryCount);
+
+ de::MovePtr<BufferWithMemory> buffer;
+ std::vector<VkDeviceSize> pointerCounts (queryCount, 123u);
+
+ if (m_params->inVkBuffer)
+ {
+ const auto vci = makeBufferCreateInfo(queryCount * sizeof(VkDeviceSize), VK_BUFFER_USAGE_TRANSFER_DST_BIT);
+ buffer = makeMovePtr<BufferWithMemory>(vk, device, allocator, vci, MemoryRequirement::Coherent | MemoryRequirement::HostVisible);
+ }
+
+ if (m_params->buildType == VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR)
+ {
+ beginCommandBuffer(vk, *cmdBuffer, 0);
+ vk.cmdResetQueryPool(*cmdBuffer, *queryPoolCounts, 0, queryCount);
+ vk.cmdWriteAccelerationStructuresPropertiesKHR(*cmdBuffer, queryCount, handles.data(), queryType, *queryPoolCounts, 0);
+ if (m_params->inVkBuffer)
+ {
+ vk.cmdCopyQueryPoolResults(*cmdBuffer, *queryPoolCounts, 0, queryCount, **buffer, 0 /*offset*/,
+ sizeof(VkDeviceSize), VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WAIT_BIT);
+ }
+ endCommandBuffer(vk, *cmdBuffer);
+ submitCommandsAndWait(vk, device, queue, *cmdBuffer);
+
+ if (m_params->inVkBuffer)
+ {
+ Allocation& alloc = buffer->getAllocation();
+ invalidateMappedMemoryRange(vk, device, alloc.getMemory(), alloc.getOffset(), VK_WHOLE_SIZE);
+ auto rangeCounts = QueryPoolResultsCase::makeStdBeginEnd<VkDeviceSize>(alloc.getHostPtr(), queryCount);
+ std::copy_n(rangeCounts.first, queryCount, pointerCounts.begin());
+ }
+ else
+ {
+ VK_CHECK(vk.getQueryPoolResults(device, *queryPoolCounts, 0u, queryCount, queryCount * sizeof(VkDeviceSize),
+ pointerCounts.data(), sizeof(VkDeviceSize), VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WAIT_BIT));
+ }
+ }
+ else
+ {
+ vk.writeAccelerationStructuresPropertiesKHR(device, queryCount, handles.data(), queryType,
+ queryCount * sizeof(VkDeviceSize), pointerCounts.data(), sizeof(VkDeviceSize));
+ }
+
+ // verification
+ const std::vector<VkDeviceSize> inSizes = tlas->getSerializingSizes(vk, device, queue, familyIndex);
+ SerialStorage storage (vk, device, allocator, m_params->buildType, inSizes[0]);
+
+ beginCommandBuffer(vk, *cmdBuffer, 0);
+ tlas->serialize(vk, device, *cmdBuffer, &storage);
+ endCommandBuffer(vk, *cmdBuffer);
+ submitCommandsAndWait(vk, device, queue, *cmdBuffer);
+
+ const SerialStorage::AccelerationStructureHeader* header = storage.getASHeader();
+
+ bool pass = (header->handleCount == pointerCounts[0]); // must be the same as bottoms.size()
+ for (deUint32 i = 1; pass && i < queryCount; ++i)
+ {
+ pass = (0 == pointerCounts[i]); // bottoms have no chidren
+ }
+
+ return pass ? TestStatus::pass("") : TestStatus::fail("");
+}
+
+#ifndef VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME
+#define VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME "VK_KHR_synchronization2"
+#endif
+#ifndef VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME
+#define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
+#endif
+
+struct CopyWithinPipelineParams
+{
+ enum class Type
+ {
+ StageASCopyBit,
+ StageAllTransferBit,
+ AccessSBTReadBit
+ } type;
+ deUint32 width;
+ deUint32 height;
+ VkAccelerationStructureBuildTypeKHR build;
+};
+typedef de::SharedPtr<const CopyWithinPipelineParams> CopyWithinPipelineParamsPtr;
+
+class CopyWithinPipelineInstance : public TestInstance
+{
+public:
+ using TlasPtr = de::SharedPtr<TopLevelAccelerationStructure>;
+ using BlasPtr = de::SharedPtr<BottomLevelAccelerationStructure>;
+
+ CopyWithinPipelineInstance (Context& context, CopyWithinPipelineParamsPtr params)
+ : TestInstance (context)
+ , vk (context.getDeviceInterface())
+ , device (context.getDevice())
+ , allocator (context.getDefaultAllocator())
+ , rgenShader (createShaderModule(vk, device, context.getBinaryCollection().get("rgen")))
+ , chitShader (createShaderModule(vk, device, context.getBinaryCollection().get("chit")))
+ , missShader (createShaderModule(vk, device, context.getBinaryCollection().get("miss")))
+ , m_params (params)
+ , m_format (VK_FORMAT_R32G32B32A32_SFLOAT) {}
+protected:
+ const DeviceInterface& vk;
+ const VkDevice device;
+ Allocator& allocator;
+ Move<VkShaderModule> rgenShader;
+ Move<VkShaderModule> chitShader;
+ Move<VkShaderModule> missShader;
+ CopyWithinPipelineParamsPtr m_params;
+ VkFormat m_format;
+};
+
+class CopyBlasInstance : public CopyWithinPipelineInstance
+{
+public:
+ CopyBlasInstance (Context& context, CopyWithinPipelineParamsPtr params)
+ : CopyWithinPipelineInstance(context, params) {}
+ TestStatus iterate (void) override;
+ auto getRefImage (BlasPtr blas) const -> de::MovePtr<BufferWithMemory>;
+
+};
+
+class CopySBTInstance : public CopyWithinPipelineInstance
+{
+public:
+ CopySBTInstance (Context& context,
+ CopyWithinPipelineParamsPtr params)
+ : CopyWithinPipelineInstance(context, params) {}
+ TestStatus iterate (void) override;
+ auto getBufferSizeForSBT (const deUint32& groupCount,
+ const deUint32& shaderGroupHandleSize,
+ const deUint32& shaderGroupBaseAlignment) const -> VkDeviceSize;
+ auto getBufferForSBT (const deUint32& groupCount,
+ const deUint32& shaderGroupHandleSize,
+ const deUint32& shaderGroupBaseAlignment) const -> de::MovePtr<BufferWithMemory>;
+};
+
+class PipelineStageASCase : public TestCase
+{
+public:
+ PipelineStageASCase (TestContext& ctx,
+ const char* name,
+ CopyWithinPipelineParamsPtr params)
+ : TestCase (ctx, name, std::string())
+ , m_params (params) {}
+ void initPrograms (SourceCollections& programs) const override;
+ void checkSupport (Context& context) const override;
+ TestInstance* createInstance (Context& context) const override;
+
+private:
+ CopyWithinPipelineParamsPtr m_params;
+};
+
+namespace u
+{
+namespace details
+{
+template<class X, class Y> struct BarrierMaker {
+ const X& m_x;
+ BarrierMaker (const X& x) : m_x(x) {}
+ uint32_t count () const { return 1; }
+ const X* pointer () const { return &m_x; }
+};
+template<class Y> struct BarrierMaker<std::false_type, Y> {
+ BarrierMaker (const std::false_type&) {}
+ uint32_t count () const { return 0; }
+ Y* pointer () const { return nullptr; }
+};
+template<class Z, uint32_t N> struct BarrierMaker<const Z[N], Z> {
+ const Z (&m_a)[N];
+ BarrierMaker (const Z (&a)[N]) : m_a(a) {}
+ uint32_t count () const { return N; }
+ const Z* pointer () const { return m_a; }
+};
+template<class Mem, class Buf, class Img, class Exp>
+struct Sel {
+ typedef typename std::remove_cv<Mem>::type t_Mem;
+ typedef typename std::remove_cv<Buf>::type t_Buf;
+ typedef typename std::remove_cv<Img>::type t_Img;
+ typedef std::integral_constant<uint32_t, 0> index0;
+ typedef std::integral_constant<uint32_t, 1> index1;
+ typedef std::integral_constant<uint32_t, 2> index2;
+ typedef std::integral_constant<uint32_t, 3> index3;
+ using isMem = std::is_same<t_Mem, Exp>;
+ using isBuf = std::is_same<t_Buf, Exp>;
+ using isImg = std::is_same<t_Img, Exp>;
+ template<bool B, class T, class F> using choose = typename std::conditional<B,T,F>::type;
+ typedef choose<isMem::value, BarrierMaker<Mem, Exp>,
+ choose<isBuf::value, BarrierMaker<Buf, Exp>,
+ choose<isImg::value, BarrierMaker<Img, Exp>,
+ BarrierMaker<std::false_type, Exp>>>> type;
+ typedef choose<isMem::value, index0,
+ choose<isBuf::value, index1,
+ choose<isImg::value, index2,
+ index3>>> index;
+};
+} // details
+constexpr std::false_type NoneBarriers{};
+/**
+ * @brief Helper function that makes and populates VkDependencyInfoKHR structure.
+ * @param barriers1 - any of VkMemoryBarrier2KHR, VkBufferMemoryBarrier2KHR or VkImageMemoryBarrier2KHR (mandatory param)
+ * @param barriers2 - any of VkMemoryBarrier2KHR, VkBufferMemoryBarrier2KHR or VkImageMemoryBarrier2KHR (optional param)
+ * @param barriers2 - any of VkMemoryBarrier2KHR, VkBufferMemoryBarrier2KHR or VkImageMemoryBarrier2KHR (optional param)
+ * @note The order of the parameters does not matter.
+ */
+template<class Barriers1, class Barriers2 = std::false_type, class Barriers3 = std::false_type>
+VkDependencyInfoKHR makeDependency (const Barriers1& barriers1, const Barriers2& barriers2 = NoneBarriers, const Barriers3& barriers3 = NoneBarriers)
+{
+ auto args = std::forward_as_tuple(barriers1, barriers2, barriers3, std::false_type());
+ const uint32_t memIndex = details::Sel<Barriers1, Barriers2, Barriers3, VkMemoryBarrier2KHR>::index::value;
+ const uint32_t bufIndex = details::Sel<Barriers1, Barriers2, Barriers3, VkBufferMemoryBarrier2KHR>::index::value;
+ const uint32_t imgIndex = details::Sel<Barriers1, Barriers2, Barriers3, VkImageMemoryBarrier2KHR>::index::value;
+ typedef typename details::Sel<Barriers1, Barriers2, Barriers3, VkMemoryBarrier2KHR>::type memType;
+ typedef typename details::Sel<Barriers1, Barriers2, Barriers3, VkBufferMemoryBarrier2KHR>::type bufType;
+ typedef typename details::Sel<Barriers1, Barriers2, Barriers3, VkImageMemoryBarrier2KHR>::type imgType;
+ return
+ {
+ VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR, // VkStructureType sType;
+ nullptr, // const void* pNext;
+ VK_DEPENDENCY_BY_REGION_BIT, // VkDependencyFlags dependencyFlags;
+ memType(std::get<memIndex>(args)).count(), // uint32_t memoryBarrierCount;
+ memType(std::get<memIndex>(args)).pointer(), // const VkMemoryBarrier2KHR* pMemoryBarriers;
+ bufType(std::get<bufIndex>(args)).count(), // uint32_t bufferMemoryBarrierCount;
+ bufType(std::get<bufIndex>(args)).pointer(), // const VkBufferMemoryBarrier2KHR* pBufferMemoryBarriers;
+ imgType(std::get<imgIndex>(args)).count(), // uint32_t imageMemoryBarrierCount;
+ imgType(std::get<imgIndex>(args)).pointer() // const VkImageMemoryBarrier2KHR* pImageMemoryBarriers;
+ };
+}
+} // u
+
+TestInstance* PipelineStageASCase::createInstance (Context& context) const
+{
+ de::MovePtr<TestInstance> instance;
+ switch (m_params->type)
+ {
+ case CopyWithinPipelineParams::Type::StageASCopyBit:
+ case CopyWithinPipelineParams::Type::StageAllTransferBit:
+ instance = makeMovePtr<CopyBlasInstance>(context, m_params);
+ break;
+ case CopyWithinPipelineParams::Type::AccessSBTReadBit:
+ instance = makeMovePtr<CopySBTInstance>(context, m_params);
+ break;
+ }
+ return instance.release();
+}
+
+void PipelineStageASCase::initPrograms (SourceCollections& programs) const
+{
+ const vk::ShaderBuildOptions buildOptions (programs.usedVulkanVersion, vk::SPIRV_VERSION_1_4, 0u, true);
+ const char endl = '\n';
+
+ {
+ std::stringstream str;
+ str << "#version 460 core" << endl
+ << "#extension GL_EXT_ray_tracing : require" << endl
+ << "layout(location = 0) rayPayloadEXT vec4 payload;" << endl
+ << "layout(rgba32f, set = 0, binding = 0) uniform image2D result;" << endl
+ << "layout(set = 0, binding = 1) uniform accelerationStructureEXT topLevelAS;" << endl
+ << "void main()" << endl
+ << "{" << endl
+ << " float rx = (float(gl_LaunchIDEXT.x) + 0.5) / float(gl_LaunchSizeEXT.x);" << endl
+ << " float ry = (float(gl_LaunchIDEXT.y) + 0.5) / float(gl_LaunchSizeEXT.y);" << endl
+ << " payload = vec4(0.5, 0.5, 0.5, 1.0);" << endl
+ << " vec3 orig = vec3(rx, ry, 1.0);" << endl
+ << " vec3 dir = vec3(0.0, 0.0, -1.0);" << endl
+ << " traceRayEXT(topLevelAS, gl_RayFlagsNoneEXT, 0xFFu, 0, 0, 0, orig, 0.0, dir, 2.0, 0);" << endl
+ << " imageStore(result, ivec2(gl_LaunchIDEXT.xy), payload);" << endl
+ << "}";
+ str.flush();
+ programs.glslSources.add("rgen") << glu::RaygenSource(str.str()) << buildOptions;
+ }
+
+ {
+ std::stringstream str;
+ str << "#version 460 core" << endl
+ << "#extension GL_EXT_ray_tracing : require" << endl
+ << "layout(location = 0) rayPayloadInEXT vec4 payload;" << endl
+ << "void main()" << endl
+ << "{" << endl
+ << " payload = vec4(0.0, 1.0, 0.0, 1.0);" << endl
+ << "}";
+ str.flush();
+ programs.glslSources.add("chit") << glu::ClosestHitSource(str.str()) << buildOptions;
+ }
+
+ {
+ std::stringstream str;
+ str << "#version 460 core" << endl
+ << "#extension GL_EXT_ray_tracing : require" << endl
+ << "layout(location = 0) rayPayloadInEXT vec4 payload;" << endl
+ << "void main()" << endl
+ << "{" << endl
+ << " payload = vec4(1.0, 0.0, 0.0, 1.0);" << endl
+ << "}";
+ str.flush();
+ programs.glslSources.add("miss") << glu::MissSource(str.str()) << buildOptions;
+ }
+}
+
+void PipelineStageASCase::checkSupport (Context& context) const
+{
+ context.requireInstanceFunctionality(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
+ context.requireDeviceFunctionality(VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME);
+ context.requireDeviceFunctionality(VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME);
+ context.requireDeviceFunctionality(VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME);
+
+ const VkPhysicalDeviceAccelerationStructureFeaturesKHR& accelerationStructureFeaturesKHR = context.getAccelerationStructureFeatures();
+ if (m_params->build == VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR && accelerationStructureFeaturesKHR.accelerationStructureHostCommands == DE_FALSE)
+ TCU_THROW(NotSupportedError, "Requires VkPhysicalDeviceAccelerationStructureFeaturesKHR::accelerationStructureHostCommands");
+
+ const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR& maintenance1FeaturesKHR = context.getRayTracingMaintenance1Features();
+ if (maintenance1FeaturesKHR.rayTracingMaintenance1 == VK_FALSE)
+ TCU_THROW(NotSupportedError, "Requires VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR::rayTracingMaintenance1");
+
+ const VkPhysicalDeviceSynchronization2FeaturesKHR& synchronization2Features = context.getSynchronization2Features();
+ if (synchronization2Features.synchronization2 == VK_FALSE)
+ TCU_THROW(NotSupportedError, "Requires VkPhysicalDeviceSynchronization2FeaturesKHR::synchronization2");
+
+ if (m_params->type != CopyWithinPipelineParams::Type::AccessSBTReadBit)
+ {
+ context.requireDeviceFunctionality(VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME);
+ const VkPhysicalDevicePushDescriptorPropertiesKHR& pushDescriptorProperties = context.getPushDescriptorProperties();
+ if (pushDescriptorProperties.maxPushDescriptors < 32)
+ TCU_THROW(NotSupportedError, "Requires VK_KHR_push_descriptor extension");
+ }
+}
+
+auto CopyBlasInstance::getRefImage (BlasPtr blas) const -> de::MovePtr<BufferWithMemory>
+{
+ const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex();
+ const VkQueue queue = m_context.getUniversalQueue();
+
+ const de::MovePtr<RayTracingProperties> rtProps = makeRayTracingProperties(m_context.getInstanceInterface(), m_context.getPhysicalDevice());
+ const deUint32 shaderGroupHandleSize = rtProps->getShaderGroupHandleSize();
+ const deUint32 shaderGroupBaseAlignment = rtProps->getShaderGroupBaseAlignment();
+
+ const VkImageCreateInfo imageCreateInfo = makeImageCreateInfo(m_params->width, m_params->height, m_format);
+ const VkImageSubresourceRange imageSubresourceRange = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0, 1u);
+ const de::MovePtr<ImageWithMemory> image = makeMovePtr<ImageWithMemory>(vk, device, allocator, imageCreateInfo, MemoryRequirement::Any);
+ const Move<VkImageView> view = makeImageView(vk, device, **image, VK_IMAGE_VIEW_TYPE_2D, m_format, imageSubresourceRange);
+
+ const deUint32 bufferSize = (m_params->width * m_params->height * mapVkFormat(m_format).getPixelSize());
+ const VkBufferCreateInfo bufferCreateInfo = makeBufferCreateInfo(bufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT);
+ de::MovePtr<BufferWithMemory> buffer = makeMovePtr<BufferWithMemory>(vk, device, allocator, bufferCreateInfo, MemoryRequirement::HostVisible);
+
+ const VkImageSubresourceLayers imageSubresourceLayers = makeImageSubresourceLayers(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 0u, 1u);
+ const VkBufferImageCopy bufferCopyImageRegion = makeBufferImageCopy(makeExtent3D(m_params->width, m_params->height, 1u), imageSubresourceLayers);
+
+ de::MovePtr<RayTracingPipeline> rtPipeline = makeMovePtr<RayTracingPipeline>();
+ rtPipeline->addShader(VK_SHADER_STAGE_RAYGEN_BIT_KHR, *rgenShader, 0);
+ rtPipeline->addShader(VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR, *chitShader, 1);
+ rtPipeline->addShader(VK_SHADER_STAGE_MISS_BIT_KHR, *missShader, 2);
+
+ const Move<VkDescriptorPool> descriptorPool = DescriptorPoolBuilder()
+ .addType(VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, 2)
+ .addType(VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, 2)
+ .build(vk, device, VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, 1u);
+ const Move<VkDescriptorSetLayout> descriptorSetLayout = DescriptorSetLayoutBuilder()
+ .addSingleBinding(VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, ALL_RAY_TRACING_STAGES)
+ .addSingleBinding(VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, ALL_RAY_TRACING_STAGES)
+ .build(vk, device);
+ const Move<VkDescriptorSet> descriptorSet = makeDescriptorSet(vk, device, *descriptorPool, *descriptorSetLayout);
+
+ const Move<VkPipelineLayout> pipelineLayout = makePipelineLayout(vk, device, *descriptorSetLayout);
+ Move<VkPipeline> pipeline = rtPipeline->createPipeline(vk, device, *pipelineLayout);
+
+ de::MovePtr<BufferWithMemory> rgenSbt = rtPipeline->createShaderBindingTable(vk, device, *pipeline, allocator,
+ shaderGroupHandleSize, shaderGroupBaseAlignment, 0, 1);
+ VkStridedDeviceAddressRegionKHR rgenRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, **rgenSbt, 0),
+ shaderGroupHandleSize, shaderGroupHandleSize);
+ de::MovePtr<BufferWithMemory> chitSbt = rtPipeline->createShaderBindingTable(vk, device, *pipeline, allocator,
+ shaderGroupHandleSize, shaderGroupBaseAlignment, 1, 1);
+ VkStridedDeviceAddressRegionKHR chitRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, **chitSbt, 0),
+ shaderGroupHandleSize, shaderGroupHandleSize);
+ de::MovePtr<BufferWithMemory> missSbt = rtPipeline->createShaderBindingTable(vk, device, *pipeline, allocator,
+ shaderGroupHandleSize, shaderGroupBaseAlignment, 2, 1);
+ VkStridedDeviceAddressRegionKHR missRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, **missSbt, 0),
+ shaderGroupHandleSize, shaderGroupHandleSize);
+ const VkStridedDeviceAddressRegionKHR callRegion = makeStridedDeviceAddressRegionKHR(VkDeviceAddress(0), 0, 0);
+
+ const VkClearValue clearValue = { { { 0.1f, 0.2f, 0.3f, 0.4f } } };
+
+ const VkImageMemoryBarrier2KHR preClearImageImageBarrier = makeImageMemoryBarrier2(VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR, 0,
+ VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR, VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
+ VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
+ **image, imageSubresourceRange, queueFamilyIndex, queueFamilyIndex);
+ const VkImageMemoryBarrier2KHR postClearImageImageBarrier = makeImageMemoryBarrier2(VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR, VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
+ VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, VK_ACCESS_2_SHADER_READ_BIT_KHR,
+ VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_GENERAL,
+ **image, imageSubresourceRange, queueFamilyIndex, queueFamilyIndex);
+ const VkDependencyInfoKHR preClearImageDependency = u::makeDependency(preClearImageImageBarrier);
+ const VkDependencyInfoKHR postClearImageDependency = u::makeDependency(postClearImageImageBarrier);
+
+
+ const VkImageMemoryBarrier2KHR postTraceRaysImageBarrier = makeImageMemoryBarrier2(VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, VK_ACCESS_2_SHADER_WRITE_BIT_KHR,
+ VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR, VK_ACCESS_2_TRANSFER_READ_BIT_KHR,
+ VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
+ **image, imageSubresourceRange, queueFamilyIndex, queueFamilyIndex);
+ const VkImageMemoryBarrier2KHR postCopyImageImageBarrier = makeImageMemoryBarrier2(VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR, VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
+ VK_PIPELINE_STAGE_2_HOST_BIT_KHR, VK_ACCESS_2_HOST_READ_BIT_KHR,
+ VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
+ **image, imageSubresourceRange, queueFamilyIndex, queueFamilyIndex);
+ const VkDependencyInfoKHR postTraceRaysDependency = u::makeDependency(postTraceRaysImageBarrier);
+ const VkDependencyInfoKHR postCopyImageDependency = u::makeDependency(postCopyImageImageBarrier);
+
+ const Move<VkCommandPool> cmdPool = createCommandPool(vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex);
+ const Move<VkCommandBuffer> cmdBuffer = allocateCommandBuffer(vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY);
+
+ auto tlas = makeTopLevelAccelerationStructure();
+ tlas->setBuildType(m_params->build);
+ tlas->setInstanceCount(1);
+ tlas->addInstance(blas, identityMatrix3x4, 0, (~0u), 0, VkGeometryInstanceFlagsKHR(0));
+ beginCommandBuffer(vk, *cmdBuffer);
+ tlas->createAndBuild(vk, device, *cmdBuffer, allocator);
+ endCommandBuffer(vk, *cmdBuffer);
+ submitCommandsAndWait(vk, device, queue, *cmdBuffer);
+
+ const VkDescriptorImageInfo descriptorImageInfo = makeDescriptorImageInfo(VkSampler(), *view, VK_IMAGE_LAYOUT_GENERAL);
+ const VkWriteDescriptorSetAccelerationStructureKHR writeDescriptorTlas
+ {
+ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR, // VkStructureType sType;
+ nullptr, // const void* pNext;
+ 1, // deUint32 accelerationStructureCount;
+ tlas->getPtr() // const VkAccelerationStructureKHR* pAccelerationStructures;
+ };
+
+ DescriptorSetUpdateBuilder()
+ .writeSingle(*descriptorSet, DescriptorSetUpdateBuilder::Location::binding(0u), VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, &descriptorImageInfo)
+ .writeSingle(*descriptorSet, DescriptorSetUpdateBuilder::Location::binding(1u), VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, &writeDescriptorTlas)
+ .update(vk, device);
+
+ beginCommandBuffer(vk, *cmdBuffer);
+ vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, *pipeline);
+ vk.cmdBindDescriptorSets(*cmdBuffer, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, *pipelineLayout, 0, 1, &descriptorSet.get(), 0, nullptr);
+ vk.cmdPipelineBarrier2(*cmdBuffer, &preClearImageDependency);
+ vk.cmdClearColorImage(*cmdBuffer, **image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, &clearValue.color, 1, &imageSubresourceRange);
+ vk.cmdPipelineBarrier2(*cmdBuffer, &postClearImageDependency);
+ cmdTraceRays(vk,
+ *cmdBuffer,
+ &rgenRegion, // rgen
+ &missRegion, // miss
+ &chitRegion, // hit
+ &callRegion, // call
+ m_params->width, m_params->height, 1);
+ vk.cmdPipelineBarrier2(*cmdBuffer, &postTraceRaysDependency);
+ vk.cmdCopyImageToBuffer(*cmdBuffer, **image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, **buffer, 1u, &bufferCopyImageRegion);
+ vk.cmdPipelineBarrier2(*cmdBuffer, &postCopyImageDependency);
+ endCommandBuffer(vk, *cmdBuffer);
+ submitCommandsAndWait(vk, device, queue, *cmdBuffer);
+
+ invalidateMappedMemoryRange(vk, device, buffer->getAllocation().getMemory(), buffer->getAllocation().getOffset(), bufferSize);
+
+ return buffer;
+}
+
+TestStatus CopyBlasInstance::iterate (void)
+{
+ const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex();
+ const VkQueue queue = m_context.getUniversalQueue();
+
+ const de::MovePtr<RayTracingProperties> rtProps = makeRayTracingProperties(m_context.getInstanceInterface(), m_context.getPhysicalDevice());
+ const deUint32 shaderGroupHandleSize = rtProps->getShaderGroupHandleSize();
+ const deUint32 shaderGroupBaseAlignment = rtProps->getShaderGroupBaseAlignment();
+
+ const VkImageCreateInfo imageCreateInfo = makeImageCreateInfo(m_params->width, m_params->height, m_format);
+ const VkImageSubresourceRange imageSubresourceRange = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0, 1u);
+ const de::MovePtr<ImageWithMemory> image = makeMovePtr<ImageWithMemory>(vk, device, allocator, imageCreateInfo, MemoryRequirement::Any);
+ const Move<VkImageView> view = makeImageView(vk, device, **image, VK_IMAGE_VIEW_TYPE_2D, m_format, imageSubresourceRange);
+
+ const deUint32 bufferSize = (m_params->width * m_params->height * mapVkFormat(m_format).getPixelSize());
+ const VkBufferCreateInfo bufferCreateInfo = makeBufferCreateInfo(bufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT);
+ de::MovePtr<BufferWithMemory> resultImageBuffer = makeMovePtr<BufferWithMemory>(vk, device, allocator, bufferCreateInfo, MemoryRequirement::HostVisible);
+
+ const VkImageSubresourceLayers imageSubresourceLayers = makeImageSubresourceLayers(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 0u, 1u);
+ const VkBufferImageCopy bufferCopyImageRegion = makeBufferImageCopy(makeExtent3D(m_params->width, m_params->height, 1u), imageSubresourceLayers);
+
+ de::MovePtr<RayTracingPipeline> rtPipeline = makeMovePtr<RayTracingPipeline>();
+ rtPipeline->addShader(VK_SHADER_STAGE_RAYGEN_BIT_KHR, *rgenShader, 0);
+ rtPipeline->addShader(VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR, *chitShader, 1);
+ rtPipeline->addShader(VK_SHADER_STAGE_MISS_BIT_KHR, *missShader, 2);
+
+ const Move<VkDescriptorSetLayout> descriptorSetLayout = DescriptorSetLayoutBuilder()
+ .addSingleBinding(VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, ALL_RAY_TRACING_STAGES)
+ .addSingleBinding(VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, ALL_RAY_TRACING_STAGES)
+ .build(vk, device, VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR);
+
+ const Move<VkPipelineLayout> pipelineLayout = makePipelineLayout(vk, device, *descriptorSetLayout);
+ Move<VkPipeline> pipeline = rtPipeline->createPipeline(vk, device, *pipelineLayout);
+
+ de::MovePtr<BufferWithMemory> rgenSbt = rtPipeline->createShaderBindingTable(vk, device, *pipeline, allocator,
+ shaderGroupHandleSize, shaderGroupBaseAlignment, 0, 1);
+ VkStridedDeviceAddressRegionKHR rgenRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, **rgenSbt, 0),
+ shaderGroupHandleSize, shaderGroupHandleSize);
+ de::MovePtr<BufferWithMemory> chitSbt = rtPipeline->createShaderBindingTable(vk, device, *pipeline, allocator,
+ shaderGroupHandleSize, shaderGroupBaseAlignment, 1, 1);
+ VkStridedDeviceAddressRegionKHR chitRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, **chitSbt, 0),
+ shaderGroupHandleSize, shaderGroupHandleSize);
+ de::MovePtr<BufferWithMemory> missSbt = rtPipeline->createShaderBindingTable(vk, device, *pipeline, allocator,
+ shaderGroupHandleSize, shaderGroupBaseAlignment, 2, 1);
+ VkStridedDeviceAddressRegionKHR missRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, **missSbt, 0),
+ shaderGroupHandleSize, shaderGroupHandleSize);
+ const VkStridedDeviceAddressRegionKHR callRegion = makeStridedDeviceAddressRegionKHR(VkDeviceAddress(0), 0, 0);
+
+ const VkClearValue clearValue = { { { 0.1f, 0.2f, 0.3f, 0.4f } } };
+
+ const VkImageMemoryBarrier2KHR preClearImageImageBarrier = makeImageMemoryBarrier2(VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR, 0,
+ VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR, VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
+ VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
+ **image, imageSubresourceRange, queueFamilyIndex, queueFamilyIndex);
+ const VkImageMemoryBarrier2KHR postClearImageImageBarrier = makeImageMemoryBarrier2(VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR, VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
+ VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, VK_ACCESS_2_SHADER_READ_BIT_KHR,
+ VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_GENERAL,
+ **image, imageSubresourceRange, queueFamilyIndex, queueFamilyIndex);
+ const VkDependencyInfoKHR preClearImageDependency = u::makeDependency(preClearImageImageBarrier);
+ const VkDependencyInfoKHR postClearImageDependency = u::makeDependency(postClearImageImageBarrier);
+
+
+ const VkImageMemoryBarrier2KHR postTraceRaysImageBarrier = makeImageMemoryBarrier2(VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, VK_ACCESS_2_SHADER_WRITE_BIT_KHR,
+ VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR, VK_ACCESS_2_TRANSFER_READ_BIT_KHR,
+ VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
+ **image, imageSubresourceRange, queueFamilyIndex, queueFamilyIndex);
+ const VkImageMemoryBarrier2KHR postCopyImageImageBarrier = makeImageMemoryBarrier2(VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR, VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
+ VK_PIPELINE_STAGE_2_HOST_BIT_KHR, VK_ACCESS_2_HOST_READ_BIT_KHR,
+ VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
+ **image, imageSubresourceRange, queueFamilyIndex, queueFamilyIndex);
+ const VkDependencyInfoKHR postTraceRaysDependency = u::makeDependency(postTraceRaysImageBarrier);
+ const VkDependencyInfoKHR postCopyImageDependency = u::makeDependency(postCopyImageImageBarrier);
+ const VkPipelineStageFlags2KHR srcStageMask = m_params->type == CopyWithinPipelineParams::Type::StageASCopyBit
+ ? VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR
+ : VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR;
+ const VkMemoryBarrier2KHR copyBlasMemoryBarrier = makeMemoryBarrier2(srcStageMask, VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
+ VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
+ VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR | VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR);
+ const VkDependencyInfoKHR copyBlasDependency = u::makeDependency(copyBlasMemoryBarrier);
+
+
+ const Move<VkCommandPool> cmdPool = createCommandPool(vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex);
+ const Move<VkCommandBuffer> cmdBuffer = allocateCommandBuffer(vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY);
+
+ std::vector<VkDeviceSize> blasSize (1);
+ BlasPtr blas1 (makeBottomLevelAccelerationStructure().release());
+
+ // After this block the blas1 stays on device or host respectively to its build type.
+ // Once it is created it is asked for the serialization size that will be used for a
+ // creation of an empty blas2. Probably this size will be bigger than it is needed but
+ // one thing that is important is it must not be less.
+ {
+ const VkQueryType query = VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR;
+ Move<VkQueryPool> queryPoolSize = makeQueryPool(vk, device, query, 1);
+ beginCommandBuffer(vk, *cmdBuffer);
+ blas1->setBuildType(m_params->build);
+ blas1->setGeometryData( {
+ { 0.0, 0.0, 0.0 },
+ { 1.0, 0.0, 0.0 },
+ { 0.0, 1.0, 0.0 }}, true, VK_GEOMETRY_OPAQUE_BIT_KHR);
+ blas1->createAndBuild(vk, device, *cmdBuffer, allocator);
+ queryAccelerationStructureSize(vk, device, *cmdBuffer, { *blas1->getPtr() }, m_params->build, *queryPoolSize, query, 0u, blasSize);
+ endCommandBuffer(vk, *cmdBuffer);
+ submitCommandsAndWait(vk, device, queue, *cmdBuffer);
+ VK_CHECK(vk.getQueryPoolResults(device, *queryPoolSize, 0u, 1, sizeof(VkDeviceSize), blasSize.data(),
+ sizeof(VkDeviceSize), VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WAIT_BIT));
+ }
+
+ de::MovePtr<BufferWithMemory> referenceImageBuffer = getRefImage(blas1);
+
+ // Create blas2 as empty struct
+ BlasPtr blas2 (makeBottomLevelAccelerationStructure().release());
+ blas2->create(vk, device, allocator, blasSize[0]);
+
+ auto tlas = makeTopLevelAccelerationStructure();
+ tlas->setBuildType(m_params->build);
+ tlas->setInstanceCount(1);
+ tlas->addInstance(blas2, identityMatrix3x4, 0, (~0u), 0, VkGeometryInstanceFlagsKHR(0));
+
+ const VkCopyAccelerationStructureInfoKHR copyBlasInfo
+ {
+ VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR, // VkStructureType sType;
+ nullptr, // const void* pNext;
+ *blas1->getPtr(), // VkAccelerationStructureKHR src;
+ *blas2->getPtr(), // VkAccelerationStructureKHR dst;
+ VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR // VkCopyAccelerationStructureModeKHR mode;
+ };
+
+ beginCommandBuffer(vk, *cmdBuffer);
+ vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, *pipeline);
+
+ if (m_params->build == VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR)
+ {
+ vk.cmdCopyAccelerationStructureKHR(*cmdBuffer, ©BlasInfo);
+ vk.cmdPipelineBarrier2(*cmdBuffer, ©BlasDependency);
+ }
+ else VK_CHECK(vk.copyAccelerationStructureKHR(device, VkDeferredOperationKHR(0), ©BlasInfo));
+
+ tlas->createAndBuild(vk, device, *cmdBuffer, allocator);
+
+ const VkDescriptorImageInfo descriptorImageInfo = makeDescriptorImageInfo(VkSampler(), *view, VK_IMAGE_LAYOUT_GENERAL);
+ const VkWriteDescriptorSetAccelerationStructureKHR writeDescriptorTlas
+ {
+ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR, // VkStructureType sType;
+ nullptr, // const void* pNext;
+ 1, // deUint32 accelerationStructureCount;
+ tlas->getPtr() // const VkAccelerationStructureKHR* pAccelerationStructures;
+ };
+
+ DescriptorSetUpdateBuilder()
+ .writeSingle(VkDescriptorSet(), DescriptorSetUpdateBuilder::Location::binding(0u), VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, &descriptorImageInfo)
+ .writeSingle(VkDescriptorSet(), DescriptorSetUpdateBuilder::Location::binding(1u), VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, &writeDescriptorTlas)
+ .updateWithPush(vk, *cmdBuffer, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, *pipelineLayout, 0, 0, 2);
+
+ vk.cmdPipelineBarrier2(*cmdBuffer, &preClearImageDependency);
+ vk.cmdClearColorImage(*cmdBuffer, **image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, &clearValue.color, 1, &imageSubresourceRange);
+ vk.cmdPipelineBarrier2(*cmdBuffer, &postClearImageDependency);
+
+ cmdTraceRays(vk,
+ *cmdBuffer,
+ &rgenRegion, // rgen
+ &missRegion, // miss
+ &chitRegion, // hit
+ &callRegion, // call
+ m_params->width, m_params->height, 1);
+
+ vk.cmdPipelineBarrier2(*cmdBuffer, &postTraceRaysDependency);
+ vk.cmdCopyImageToBuffer(*cmdBuffer, **image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, **resultImageBuffer, 1u, &bufferCopyImageRegion);
+ vk.cmdPipelineBarrier2(*cmdBuffer, &postCopyImageDependency);
+
+ endCommandBuffer(vk, *cmdBuffer);
+ submitCommandsAndWait(vk, device, queue, *cmdBuffer);
+
+ invalidateMappedMemoryRange(vk, device, resultImageBuffer->getAllocation().getMemory(), resultImageBuffer->getAllocation().getOffset(), bufferSize);
+
+ const void* referenceImageData = referenceImageBuffer->getAllocation().getHostPtr();
+ const void* resultImageData = resultImageBuffer->getAllocation().getHostPtr();
+
+ return (deMemCmp(referenceImageData, resultImageData, bufferSize) == 0) ? TestStatus::pass("") : TestStatus::fail("Reference and result images differ");
+}
+
+VkDeviceSize CopySBTInstance::getBufferSizeForSBT (const deUint32& groupCount, const deUint32& shaderGroupHandleSize, const deUint32& shaderGroupBaseAlignment) const
+{
+ DE_UNREF(shaderGroupBaseAlignment);
+ return (groupCount * deAlign32(shaderGroupHandleSize, shaderGroupHandleSize));
+}
+
+de::MovePtr<BufferWithMemory> CopySBTInstance::getBufferForSBT (const deUint32& groupCount, const deUint32& shaderGroupHandleSize, const deUint32& shaderGroupBaseAlignment) const
+{
+ const VkDeviceSize sbtSize = getBufferSizeForSBT(groupCount, shaderGroupHandleSize, shaderGroupBaseAlignment);
+ const VkBufferUsageFlags sbtFlags = VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT;
+ const VkBufferCreateInfo sbtCreateInfo = makeBufferCreateInfo(sbtSize, sbtFlags);
+ const MemoryRequirement sbtMemRequirements = MemoryRequirement::HostVisible | MemoryRequirement::Coherent | MemoryRequirement::DeviceAddress;
+
+ return makeMovePtr<BufferWithMemory>(vk, device, allocator, sbtCreateInfo, sbtMemRequirements);
+}
+
+TestStatus CopySBTInstance::iterate (void)
+{
+ const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex();
+ const VkQueue queue = m_context.getUniversalQueue();
+
+ const de::MovePtr<RayTracingProperties> rtProps = makeRayTracingProperties(m_context.getInstanceInterface(), m_context.getPhysicalDevice());
+ const deUint32 shaderGroupHandleSize = rtProps->getShaderGroupHandleSize();
+ const deUint32 shaderGroupBaseAlignment = rtProps->getShaderGroupBaseAlignment();
+
+ const VkImageCreateInfo imageCreateInfo = makeImageCreateInfo(m_params->width, m_params->height, m_format);
+ const VkImageSubresourceRange imageSubresourceRange = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0, 1u);
+ const de::MovePtr<ImageWithMemory> image = makeMovePtr<ImageWithMemory>(vk, device, allocator, imageCreateInfo, MemoryRequirement::Any);
+ const Move<VkImageView> view = makeImageView(vk, device, **image, VK_IMAGE_VIEW_TYPE_2D, m_format, imageSubresourceRange);
+
+ const deUint32 bufferSize = (m_params->width * m_params->height * mapVkFormat(m_format).getPixelSize());
+ const VkBufferCreateInfo bufferCreateInfo = makeBufferCreateInfo(bufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT);
+ de::MovePtr<BufferWithMemory> referenceImageBuffer = makeMovePtr<BufferWithMemory>(vk, device, allocator, bufferCreateInfo, MemoryRequirement::HostVisible);
+ de::MovePtr<BufferWithMemory> resultImageBuffer = makeMovePtr<BufferWithMemory>(vk, device, allocator, bufferCreateInfo, MemoryRequirement::HostVisible);
+
+ const VkImageSubresourceLayers imageSubresourceLayers = makeImageSubresourceLayers(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 0u, 1u);
+ const VkBufferImageCopy bufferCopyImageRegion = makeBufferImageCopy(makeExtent3D(m_params->width, m_params->height, 1u), imageSubresourceLayers);
+
+ de::MovePtr<RayTracingPipeline> rtPipeline = makeMovePtr<RayTracingPipeline>();
+ rtPipeline->addShader(VK_SHADER_STAGE_RAYGEN_BIT_KHR, *rgenShader, 0);
+ rtPipeline->addShader(VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR, *chitShader, 1);
+ rtPipeline->addShader(VK_SHADER_STAGE_MISS_BIT_KHR, *missShader, 2);
+
+ const Move<VkDescriptorPool> descriptorPool = DescriptorPoolBuilder()
+ .addType(VK_DESCRIPTOR_TYPE_STORAGE_IMAGE)
+ .addType(VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR)
+ .build(vk, device, VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, 1u);
+ const Move<VkDescriptorSetLayout> descriptorSetLayout = DescriptorSetLayoutBuilder()
+ .addSingleBinding(VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, ALL_RAY_TRACING_STAGES)
+ .addSingleBinding(VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, ALL_RAY_TRACING_STAGES)
+ .build(vk, device);
+ const Move<VkDescriptorSet> descriptorSet = makeDescriptorSet(vk, device, *descriptorPool, *descriptorSetLayout);
+
+ const Move<VkPipelineLayout> pipelineLayout = makePipelineLayout(vk, device, *descriptorSetLayout);
+ Move<VkPipeline> pipeline = rtPipeline->createPipeline(vk, device, *pipelineLayout);
+
+ de::MovePtr<BufferWithMemory> sourceRgenSbt = rtPipeline->createShaderBindingTable(vk, device, *pipeline, allocator,
+ shaderGroupHandleSize, shaderGroupBaseAlignment, 0, 1,
+ VkBufferCreateFlags(0), VK_BUFFER_USAGE_TRANSFER_SRC_BIT);
+ VkStridedDeviceAddressRegionKHR sourceRgenRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, **sourceRgenSbt, 0),
+ shaderGroupHandleSize, shaderGroupHandleSize);
+ de::MovePtr<BufferWithMemory> copyRgenSbt = getBufferForSBT(1, shaderGroupHandleSize, shaderGroupBaseAlignment);
+ VkStridedDeviceAddressRegionKHR copyRgenRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, **copyRgenSbt, 0),
+ shaderGroupHandleSize, shaderGroupHandleSize);
+ de::MovePtr<BufferWithMemory> chitSbt = rtPipeline->createShaderBindingTable(vk, device, *pipeline, allocator,
+ shaderGroupHandleSize, shaderGroupBaseAlignment, 1, 1);
+ VkStridedDeviceAddressRegionKHR chitRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, **chitSbt, 0),
+ shaderGroupHandleSize, shaderGroupHandleSize);
+ de::MovePtr<BufferWithMemory> missSbt = rtPipeline->createShaderBindingTable(vk, device, *pipeline, allocator,
+ shaderGroupHandleSize, shaderGroupBaseAlignment, 2, 1);
+ VkStridedDeviceAddressRegionKHR missRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, **missSbt, 0),
+ shaderGroupHandleSize, shaderGroupHandleSize);
+ const VkStridedDeviceAddressRegionKHR callRegion = makeStridedDeviceAddressRegionKHR(VkDeviceAddress(0), 0, 0);
+
+ const VkClearValue clearValue = { { { 0.1f, 0.2f, 0.3f, 0.4f } } };
+
+ const VkImageMemoryBarrier2KHR preClearImageImageBarrier = makeImageMemoryBarrier2(VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR, 0,
+ VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR, VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
+ VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
+ **image, imageSubresourceRange, queueFamilyIndex, queueFamilyIndex);
+ const VkImageMemoryBarrier2KHR postClearImageImageBarrier = makeImageMemoryBarrier2(VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR, VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
+ VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, VK_ACCESS_2_SHADER_READ_BIT_KHR,
+ VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_GENERAL,
+ **image, imageSubresourceRange, queueFamilyIndex, queueFamilyIndex);
+ const VkDependencyInfoKHR preClearImageDependency = u::makeDependency(preClearImageImageBarrier);
+ const VkDependencyInfoKHR postClearImageDependency = u::makeDependency(postClearImageImageBarrier);
+
+
+ const VkImageMemoryBarrier2KHR postTraceRaysImageBarrier = makeImageMemoryBarrier2(VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, VK_ACCESS_2_SHADER_WRITE_BIT_KHR,
+ VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR, VK_ACCESS_2_TRANSFER_READ_BIT_KHR,
+ VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
+ **image, imageSubresourceRange, queueFamilyIndex, queueFamilyIndex);
+ const VkImageMemoryBarrier2KHR postCopyImageImageBarrier = makeImageMemoryBarrier2(VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR, VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,
+ VK_PIPELINE_STAGE_2_HOST_BIT_KHR, VK_ACCESS_2_HOST_READ_BIT_KHR,
+ VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
+ **image, imageSubresourceRange, queueFamilyIndex, queueFamilyIndex);
+ const VkDependencyInfoKHR postTraceRaysDependency = u::makeDependency(postTraceRaysImageBarrier);
+ const VkDependencyInfoKHR postCopyImageDependency = u::makeDependency(postCopyImageImageBarrier);
+
+ const Move<VkCommandPool> cmdPool = createCommandPool(vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex);
+ const Move<VkCommandBuffer> cmdBuffer = allocateCommandBuffer(vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY);
+
+ auto tlas = makeTopLevelAccelerationStructure();
+ BlasPtr blas (makeBottomLevelAccelerationStructure().release());
+ blas->setBuildType(m_params->build);
+ blas->setGeometryData( {
+ { 0.0, 0.0, 0.0 },
+ { 1.0, 0.0, 0.0 },
+ { 0.0, 1.0, 0.0 }}, true, VK_GEOMETRY_OPAQUE_BIT_KHR);
+ tlas->setBuildType(m_params->build);
+ tlas->setInstanceCount(1);
+ tlas->addInstance(blas, identityMatrix3x4, 0, (~0u), 0, VkGeometryInstanceFlagsKHR(0));
+ beginCommandBuffer(vk, *cmdBuffer);
+ blas->createAndBuild(vk, device, *cmdBuffer, allocator);
+ tlas->createAndBuild(vk, device, *cmdBuffer, allocator);
+ endCommandBuffer(vk, *cmdBuffer);
+ submitCommandsAndWait(vk, device, queue, *cmdBuffer);
+
+ const VkDescriptorImageInfo descriptorImageInfo = makeDescriptorImageInfo(VkSampler(), *view, VK_IMAGE_LAYOUT_GENERAL);
+ const VkWriteDescriptorSetAccelerationStructureKHR writeDescriptorTlas
+ {
+ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR, // VkStructureType sType;
+ nullptr, // const void* pNext;
+ 1, // deUint32 accelerationStructureCount;
+ tlas->getPtr() // const VkAccelerationStructureKHR* pAccelerationStructures;
+ };
+
+ DescriptorSetUpdateBuilder()
+ .writeSingle(*descriptorSet, DescriptorSetUpdateBuilder::Location::binding(0u), VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, &descriptorImageInfo)
+ .writeSingle(*descriptorSet, DescriptorSetUpdateBuilder::Location::binding(1u), VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, &writeDescriptorTlas)
+ .update(vk, device);
+
+ beginCommandBuffer(vk, *cmdBuffer);
+ vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, *pipeline);
+ vk.cmdBindDescriptorSets(*cmdBuffer, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, *pipelineLayout, 0, 1, &descriptorSet.get(), 0, nullptr);
+ vk.cmdPipelineBarrier2(*cmdBuffer, &preClearImageDependency);
+ vk.cmdClearColorImage(*cmdBuffer, **image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, &clearValue.color, 1, &imageSubresourceRange);
+ vk.cmdPipelineBarrier2(*cmdBuffer, &postClearImageDependency);
+ cmdTraceRays(vk,
+ *cmdBuffer,
+ &sourceRgenRegion, // rgen
+ &missRegion, // miss
+ &chitRegion, // hit
+ &callRegion, // call
+ m_params->width, m_params->height, 1);
+ vk.cmdPipelineBarrier2(*cmdBuffer, &postTraceRaysDependency);
+ vk.cmdCopyImageToBuffer(*cmdBuffer, **image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, **referenceImageBuffer, 1u, &bufferCopyImageRegion);
+ vk.cmdPipelineBarrier2(*cmdBuffer, &postCopyImageDependency);
+ endCommandBuffer(vk, *cmdBuffer);
+ submitCommandsAndWait(vk, device, queue, *cmdBuffer);
+
+
+ const VkBufferCopy bufferCopy
+ {
+ 0, // VkDeviceSize srcOffset;
+ 0, // VkDeviceSize srcOffset;
+ getBufferForSBT(1, shaderGroupHandleSize, shaderGroupBaseAlignment)
+ };
+ const VkMemoryBarrier2KHR postCopySBTMemoryBarrier = makeMemoryBarrier2(VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR,
+ VkAccessFlags2KHR(0),
+ VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,
+ VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR);
+ const VkDependencyInfoKHR postClearImgCopySBTDependency = u::makeDependency(postCopySBTMemoryBarrier, postClearImageImageBarrier);
+
+ beginCommandBuffer(vk, *cmdBuffer);
+ vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, *pipeline);
+ vk.cmdBindDescriptorSets(*cmdBuffer, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, *pipelineLayout, 0, 1, &descriptorSet.get(), 0, nullptr);
+ vk.cmdClearColorImage(*cmdBuffer, **image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, &clearValue.color, 1, &imageSubresourceRange);
+ vk.cmdCopyBuffer(*cmdBuffer, **sourceRgenSbt, **copyRgenSbt, 1, &bufferCopy);
+ vk.cmdPipelineBarrier2(*cmdBuffer, &postClearImgCopySBTDependency);
+ cmdTraceRays(vk,
+ *cmdBuffer,
+ ©RgenRegion, // rgen
+ &missRegion, // miss
+ &chitRegion, // hit
+ &callRegion, // call
+ m_params->width, m_params->height, 1);
+ vk.cmdPipelineBarrier2(*cmdBuffer, &postTraceRaysDependency);
+ vk.cmdCopyImageToBuffer(*cmdBuffer, **image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, **resultImageBuffer, 1u, &bufferCopyImageRegion);
+ vk.cmdPipelineBarrier2(*cmdBuffer, &postCopyImageDependency);
+ endCommandBuffer(vk, *cmdBuffer);
+ submitCommandsAndWait(vk, device, queue, *cmdBuffer);
+
+ invalidateMappedMemoryRange(vk, device, referenceImageBuffer->getAllocation().getMemory(), referenceImageBuffer->getAllocation().getOffset(), bufferSize);
+ invalidateMappedMemoryRange(vk, device, resultImageBuffer->getAllocation().getMemory(), resultImageBuffer->getAllocation().getOffset(), bufferSize);
+
+ const void* referenceImageDataPtr = referenceImageBuffer->getAllocation().getHostPtr();
+ const void* resultImageDataPtr = resultImageBuffer->getAllocation().getHostPtr();
+
+ return (deMemCmp(referenceImageDataPtr, resultImageDataPtr, bufferSize) == 0) ? TestStatus::pass("") : TestStatus::fail("");
+}
+
} // anonymous
void addBasicBuildingTests(tcu::TestCaseGroup* group)
@@ -3039,6 +4273,8 @@
0u,
EmptyAccelerationStructureCase::NOT_EMPTY,
InstanceCustomIndexCase::NONE,
+ false,
+ 0xFFu,
};
paddingGroup->addChild(new RayTracingASBasicTestCase(group->getTestContext(), testName.c_str(), "", testParams));
}
@@ -3150,6 +4386,8 @@
0u,
EmptyAccelerationStructureCase::NOT_EMPTY,
InstanceCustomIndexCase::NONE,
+ false,
+ 0xFFu,
};
paddingGroup->addChild(new RayTracingASBasicTestCase(group->getTestContext(), indexFormats[indexFormatNdx].name, "", testParams));
}
@@ -3249,6 +4487,8 @@
workerThreads,
EmptyAccelerationStructureCase::NOT_EMPTY,
InstanceCustomIndexCase::NONE,
+ false,
+ 0xFFu,
};
operationTargetGroup->addChild(new RayTracingASBasicTestCase(group->getTestContext(), bottomTestTypes[testTypeNdx].name, "", testParams));
}
@@ -3321,6 +4561,8 @@
0u,
EmptyAccelerationStructureCase::NOT_EMPTY,
InstanceCustomIndexCase::NONE,
+ false,
+ 0xFFu,
};
group->addChild(new RayTracingASFuncArgTestCase(ctx, buildTypes[buildTypeNdx].name, "", testParams));
@@ -3410,6 +4652,8 @@
0u,
EmptyAccelerationStructureCase::NOT_EMPTY,
InstanceCustomIndexCase::NONE,
+ false,
+ 0xFFu,
};
indexTypeGroup->addChild(new RayTracingASBasicTestCase(ctx, testName.c_str(), "", testParams));
}
@@ -3497,6 +4741,8 @@
0u,
emptyCases[emptyCaseIdx].emptyASCase,
InstanceCustomIndexCase::NONE,
+ false,
+ 0xFFu,
};
indexTypeGroup->addChild(new RayTracingASBasicTestCase(ctx, emptyCases[emptyCaseIdx].name.c_str(), "", testParams));
}
@@ -3563,6 +4809,8 @@
0u,
EmptyAccelerationStructureCase::NOT_EMPTY,
customIndexCases[customIndexCaseIdx].customIndexCase,
+ false,
+ 0xFFu,
};
buildTypeGroup->addChild(new RayTracingASBasicTestCase(ctx, customIndexCases[customIndexCaseIdx].name.c_str(), "", testParams));
}
@@ -3570,6 +4818,91 @@
}
}
+
+void addInstanceRayCullMaskTests(tcu::TestCaseGroup* group)
+{
+ const struct
+ {
+ vk::VkAccelerationStructureBuildTypeKHR buildType;
+ std::string name;
+ } buildTypes[] =
+ {
+ { VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR, "cpu_built" },
+ { VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR, "gpu_built" },
+ };
+
+ const struct
+ {
+ InstanceCustomIndexCase customIndexCase;
+ std::string name;
+ } customIndexCases[] =
+ {
+ { InstanceCustomIndexCase::ANY_HIT, "ahit" },
+ { InstanceCustomIndexCase::CLOSEST_HIT, "chit" },
+ { InstanceCustomIndexCase::INTERSECTION, "isec" },
+ };
+
+ const struct
+ {
+ uint32_t cullMask;
+ std::string name;
+ } cullMask[] =
+ {
+ { 0x000000AAu, "4_bits"},
+ { 0x00000055u, "4_bits_reverse"},
+ { 0xAAAAAAAAu, "16_bits"},
+ { 0x55555555u, "16_bits_reverse"},
+ };
+
+ auto& ctx = group->getTestContext();
+
+ for (int buildTypeIdx = 0; buildTypeIdx < DE_LENGTH_OF_ARRAY(buildTypes); ++buildTypeIdx)
+ {
+ de::MovePtr<tcu::TestCaseGroup> buildTypeGroup(new tcu::TestCaseGroup(ctx, buildTypes[buildTypeIdx].name.c_str(), ""));
+
+ for (int customIndexCaseIdx = 0; customIndexCaseIdx < DE_LENGTH_OF_ARRAY(customIndexCases); ++customIndexCaseIdx)
+ {
+ de::MovePtr<tcu::TestCaseGroup> customIndexCaseGroup(new tcu::TestCaseGroup(ctx, customIndexCases[customIndexCaseIdx].name.c_str(), ""));
+
+ for (int cullMaskIdx = 0; cullMaskIdx < DE_LENGTH_OF_ARRAY(cullMask); ++cullMaskIdx)
+ {
+ const auto& idxCase = customIndexCases[customIndexCaseIdx].customIndexCase;
+ const auto bottomGeometryType = ((idxCase == InstanceCustomIndexCase::INTERSECTION) ? BTT_AABBS : BTT_TRIANGLES);
+
+ TestParams testParams
+ {
+ buildTypes[buildTypeIdx].buildType,
+ VK_FORMAT_R32G32B32_SFLOAT,
+ false,
+ VK_INDEX_TYPE_NONE_KHR,
+ bottomGeometryType,
+ InstanceCullFlags::NONE,
+ false,
+ false,
+ TTT_IDENTICAL_INSTANCES,
+ false,
+ false,
+ VkBuildAccelerationStructureFlagsKHR(0u),
+ OT_NONE,
+ OP_NONE,
+ RTAS_DEFAULT_SIZE,
+ RTAS_DEFAULT_SIZE,
+ de::SharedPtr<TestConfiguration>(new CheckerboardConfiguration()),
+ 0u,
+ EmptyAccelerationStructureCase::NOT_EMPTY,
+ customIndexCases[customIndexCaseIdx].customIndexCase,
+ true,
+ cullMask[cullMaskIdx].cullMask,
+ };
+ customIndexCaseGroup->addChild(new RayTracingASBasicTestCase(ctx, cullMask[cullMaskIdx].name.c_str(), "", testParams));
+ }
+ buildTypeGroup->addChild(customIndexCaseGroup.release());
+ }
+ group->addChild(buildTypeGroup.release());
+ }
+}
+
+
void addGetDeviceAccelerationStructureCompabilityTests (tcu::TestCaseGroup* group)
{
struct
@@ -3624,6 +4957,8 @@
0u, // workerThreadsCount
EmptyAccelerationStructureCase::NOT_EMPTY, // emptyASCase
InstanceCustomIndexCase::NONE, // instanceCustomIndexCase
+ false, // useCullMask
+ 0xFFu, // cullMask
};
buildTypeGroup->addChild(new RayTracingDeviceASCompabilityKHRTestCase(ctx, targets[targetIdx].name.c_str(), de::SharedPtr<TestParams>(new TestParams(testParams))));
}
@@ -3686,6 +5021,8 @@
0u, // workerThreadsCount
EmptyAccelerationStructureCase::NOT_EMPTY, // emptyASCase
InstanceCustomIndexCase::NONE, // instanceCustomIndexCase
+ false, // useCullMask
+ 0xFFu, // cullMask
};
buildTypeGroup->addChild(new RayTracingHeaderBottomAddressTestCase(ctx, instTypes[instTypeIdx].name.c_str(), de::SharedPtr<TestParams>(new TestParams(testParams))));
}
@@ -3693,6 +5030,87 @@
}
}
+void addQueryPoolResultsTests (TestCaseGroup* group)
+{
+ std::pair<VkAccelerationStructureBuildTypeKHR, const char*>
+ const buildTypes[]
+ {
+ { VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR, "cpu" },
+ { VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR, "gpu" },
+ };
+
+ std::pair<bool, const char*>
+ const storeTypes[]
+ {
+ { false, "memory" },
+ { true, "buffer" }
+ };
+
+ std::pair<QueryPoolResultsParams::Type, const char*>
+ const queryTypes[]
+ {
+ { QueryPoolResultsParams::Type::Size, "size" },
+ { QueryPoolResultsParams::Type::Pointers, "pointer_count" }
+ };
+
+
+ auto& testContext = group->getTestContext();
+ for (const auto& buildType : buildTypes)
+ {
+ auto buildTypeGroup = makeMovePtr<TestCaseGroup>(testContext, buildType.second, "");
+ for (const auto& storeType : storeTypes)
+ {
+ auto storeTypeGroup = makeMovePtr<TestCaseGroup>(testContext, storeType.second, "");
+ for (const auto& queryType : queryTypes)
+ {
+ QueryPoolResultsParams p;
+ p.buildType = buildType.first;
+ p.inVkBuffer = storeType.first;
+ p.queryType = queryType.first;
+ p.blasCount = 5;
+
+ storeTypeGroup->addChild(new QueryPoolResultsCase(testContext, queryType.second, makeSharedFrom(p)));
+ }
+ buildTypeGroup->addChild(storeTypeGroup.release());
+ }
+ group->addChild(buildTypeGroup.release());
+ }
+}
+
+void addCopyWithinPipelineTests (TestCaseGroup* group)
+{
+ std::pair<VkAccelerationStructureBuildTypeKHR, const char*>
+ const buildTypes[]
+ {
+ { VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR, "cpu" },
+ { VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR, "gpu" },
+ };
+ std::pair<CopyWithinPipelineParams::Type, const char*>
+ const testTypes[]
+ {
+ { CopyWithinPipelineParams::Type::StageASCopyBit, "stage_as_copy_bit" },
+ { CopyWithinPipelineParams::Type::StageAllTransferBit, "stage_all_transfer" },
+ { CopyWithinPipelineParams::Type::AccessSBTReadBit, "access_sbt_read" }
+ };
+
+ auto& testContext = group->getTestContext();
+ for (const auto& buildType : buildTypes)
+ {
+ auto buildTypeGroup = makeMovePtr<TestCaseGroup>(testContext, buildType.second, "");
+ for (const auto& testType : testTypes)
+ {
+ CopyWithinPipelineParams p;
+ p.width = 16;
+ p.height = 16;
+ p.build = buildType.first;
+ p.type = testType.first;
+
+ buildTypeGroup->addChild(new PipelineStageASCase(testContext, testType.second, makeSharedFrom(p)));
+ }
+ group->addChild(buildTypeGroup.release());
+ }
+}
+
tcu::TestCaseGroup* createAccelerationStructuresTests(tcu::TestContext& testCtx)
{
de::MovePtr<tcu::TestCaseGroup> group(new tcu::TestCaseGroup(testCtx, "acceleration_structures", "Acceleration structure tests"));
@@ -3703,11 +5121,14 @@
addTestGroup(group.get(), "host_threading", "Test host threading operations", addHostThreadingOperationTests);
addTestGroup(group.get(), "function_argument", "Test using AS as function argument using both pointers and bare values", addFuncArgTests);
addTestGroup(group.get(), "instance_triangle_culling", "Test building AS with counterclockwise triangles and/or disabling face culling", addInstanceTriangleCullingTests);
+ addTestGroup(group.get(), "ray_cull_mask", "Test for CullMaskKHR builtin as a part of VK_KHR_ray_tracing_maintenance1", addInstanceRayCullMaskTests);
addTestGroup(group.get(), "dynamic_indexing", "Exercise dynamic indexing of acceleration structures", addDynamicIndexingTests);
addTestGroup(group.get(), "empty", "Test building empty acceleration structures using different methods", addEmptyAccelerationStructureTests);
addTestGroup(group.get(), "instance_index", "Test using different values for the instance index and checking them in shaders", addInstanceIndexTests);
addTestGroup(group.get(), "device_compability_khr", "", addGetDeviceAccelerationStructureCompabilityTests);
addTestGroup(group.get(), "header_bottom_address", "", addUpdateHeaderBottomAddressTests);
+ addTestGroup(group.get(), "query_pool_results", "Test for a new VkQueryPool queries for VK_KHR_ray_tracing_maintenance1", addQueryPoolResultsTests);
+ addTestGroup(group.get(), "copy_within_pipeline", "Tests ACCELLERATION_STRUCTURE_COPY and ACCESS_2_SBT_READ with VK_KHR_ray_tracing_maintenance1", addCopyWithinPipelineTests);
return group.release();
}
@@ -3715,4 +5136,3 @@
} // RayTracing
} // vkt
-
diff --git a/external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingTests.cpp b/external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingTests.cpp
index f87d8a3..62d31e0 100644
--- a/external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingTests.cpp
+++ b/external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingTests.cpp
@@ -65,6 +65,7 @@
group->addChild(createBuildTests(testCtx));
group->addChild(createCallableShadersTests(testCtx));
group->addChild(createTraceRaysTests(testCtx));
+ group->addChild(createTraceRaysMaintenance1Tests(testCtx));
group->addChild(createShaderBindingTableTests(testCtx));
group->addChild(createTraversalControlTests(testCtx));
group->addChild(createAccelerationStructuresTests(testCtx));
@@ -84,6 +85,7 @@
group->addChild(createBarycentricCoordinatesTests(testCtx));
group->addChild(createNonUniformArgsTests(testCtx));
group->addChild(createPipelineFlagsTests(testCtx));
+ group->addChild(createTraceRays2Tests(testCtx));
return group.release();
}
diff --git a/external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingTraceRaysTests.cpp b/external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingTraceRaysTests.cpp
index 75743ee..89856c1 100644
--- a/external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingTraceRaysTests.cpp
+++ b/external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingTraceRaysTests.cpp
@@ -2,7 +2,7 @@
* Vulkan Conformance Tests
* ------------------------
*
- * Copyright (c) 2020 The Khronos Group Inc.
+ * Copyright (c) 2020-2022 The Khronos Group Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -37,6 +37,9 @@
#include "vkRayTracingUtil.hpp"
+#include <limits>
+#include <tuple>
+
namespace vkt
{
namespace RayTracing
@@ -62,12 +65,23 @@
DIRECT = 0,
INDIRECT_CPU = 1,
INDIRECT_GPU = 2,
+ INDIRECT2_GPU = 3,
+ INDIRECT2_CPU = 4,
};
struct TestParams
{
TraceType traceType;
VkTraceRaysIndirectCommandKHR traceDimensions; // Note: to be used for both direct and indirect variants.
+ bool useKhrMaintenance1Semantics;
+ VkTraceRaysIndirectCommand2KHR extendedTraceDimensions;
+};
+struct TestParams2
+{
+ TraceType traceType;
+ VkExtent3D traceDimensions;
+ bool partialCopy;
+ VkQueueFlagBits submitQueue;
};
deUint32 getShaderGroupSize (const InstanceInterface& vki,
@@ -88,16 +102,28 @@
return rayTracingPropertiesKHR->getShaderGroupBaseAlignment();
}
-bool isNullTrace (const VkTraceRaysIndirectCommandKHR& cmd)
+template<typename T>
+bool isNullTrace (const T cmd)
{
return (cmd.width == 0u || cmd.height == 0u || cmd.depth == 0u);
}
-VkExtent3D getImageExtent (const VkTraceRaysIndirectCommandKHR& cmd)
+template<typename T>
+VkExtent3D getImageExtent (const T cmd)
{
return (isNullTrace(cmd) ? makeExtent3D(8u, 8u, 1u) : makeExtent3D(cmd.width, cmd.height, cmd.depth));
}
+bool isNullExtent (const VkExtent3D& extent)
+{
+ return (extent.width == 0u || extent.height == 0u || extent.depth == 0u);
+}
+
+VkExtent3D getNonNullImageExtent (const VkExtent3D& extent)
+{
+ return (isNullExtent(extent) ? makeExtent3D(8u, 8u, 1u) : makeExtent3D(extent.width, extent.height, extent.depth));
+}
+
VkImageCreateInfo makeImageCreateInfo (deUint32 width, deUint32 height, deUint32 depth, VkFormat format)
{
const VkImageCreateInfo imageCreateInfo =
@@ -122,6 +148,70 @@
return imageCreateInfo;
}
+std::tuple<bool, VkQueue, deUint32> getQueueFamilyIndexAtExact (const DeviceInterface& vkd,
+ const InstanceInterface& vki,
+ VkPhysicalDevice physDevice,
+ VkDevice device,
+ VkQueueFlagBits bits,
+ deUint32 queueIndex = 0)
+{
+ bool found = false;
+ VkQueue queue = 0;
+ deUint32 queueFamilyCount = 0;
+ deUint32 queueFamilyIndex = std::numeric_limits<deUint32>::max();
+
+ vki.getPhysicalDeviceQueueFamilyProperties(physDevice, &queueFamilyCount, nullptr);
+
+ std::vector<VkQueueFamilyProperties> queueFamilies(queueFamilyCount);
+ vki.getPhysicalDeviceQueueFamilyProperties(physDevice, &queueFamilyCount, queueFamilies.data());
+
+ for (uint32_t index = 0; index < queueFamilyCount; ++index)
+ {
+ if ((queueFamilies[index].queueFlags & bits) == bits)
+ {
+ queueFamilyIndex = index;
+ break;
+ }
+ }
+
+ if (std::numeric_limits<deUint32>::max() != queueFamilyIndex)
+ {
+ found = true;
+ vkd.getDeviceQueue(device, queueFamilyIndex, queueIndex, &queue);
+ }
+
+ return { found, queue, queueFamilyIndex };
+}
+
+typedef std::vector<de::SharedPtr<BottomLevelAccelerationStructure>> BlasVec;
+auto initTopAccelerationStructure (VkCommandBuffer cmdBuffer,
+ const BlasVec& bottomLevelAccelerationStructures,
+ Context& context,
+ const VkExtent3D& imageExtent) -> de::MovePtr<TopLevelAccelerationStructure>
+{
+ const DeviceInterface& vkd = context.getDeviceInterface();
+ const VkDevice device = context.getDevice();
+ Allocator& allocator = context.getDefaultAllocator();
+ const deUint32 instanceCount = imageExtent.depth * imageExtent.height * imageExtent.width / 2;
+
+ de::MovePtr<TopLevelAccelerationStructure> result = makeTopLevelAccelerationStructure();
+ result->setInstanceCount(instanceCount);
+
+ deUint32 currentInstanceIndex = 0;
+
+ for (deUint32 z = 0; z < imageExtent.depth; ++z)
+ for (deUint32 y = 0; y < imageExtent.height; ++y)
+ for (deUint32 x = 0; x < imageExtent.width; ++x)
+ {
+ if (((x + y + z) % 2) == 0)
+ continue;
+ result->addInstance(bottomLevelAccelerationStructures[currentInstanceIndex++]);
+ }
+ result->createAndBuild(vkd, device, cmdBuffer, allocator);
+
+ return result;
+}
+
class RayTracingTraceRaysIndirectTestCase : public TestCase
{
public:
@@ -144,12 +234,11 @@
protected:
std::vector<de::SharedPtr<BottomLevelAccelerationStructure>> initBottomAccelerationStructures (VkCommandBuffer cmdBuffer);
- de::MovePtr<TopLevelAccelerationStructure> initTopAccelerationStructure (VkCommandBuffer cmdBuffer,
- std::vector<de::SharedPtr<BottomLevelAccelerationStructure> >& bottomLevelAccelerationStructures);
de::MovePtr<BufferWithMemory> runTest ();
+
private:
TestParams m_data;
- const VkExtent3D m_imageExtent;
+ VkExtent3D m_imageExtent;
};
@@ -175,6 +264,16 @@
if (rayTracingPipelineFeaturesKHR.rayTracingPipelineTraceRaysIndirect == DE_FALSE)
TCU_THROW(NotSupportedError, "Requires VkPhysicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineTraceRaysIndirect");
+ if (m_data.useKhrMaintenance1Semantics) {
+ context.requireDeviceFunctionality("VK_KHR_ray_tracing_maintenance1");
+
+ const VkPhysicalDeviceFeatures deviceFeatures = getPhysicalDeviceFeatures(context.getInstanceInterface(), context.getPhysicalDevice());
+ if (!deviceFeatures.shaderInt64)
+ {
+ TCU_THROW(NotSupportedError, "Device feature shaderInt64 is not supported");
+ }
+ }
+
const VkPhysicalDeviceAccelerationStructureFeaturesKHR& accelerationStructureFeaturesKHR = context.getAccelerationStructureFeatures();
if (accelerationStructureFeaturesKHR.accelerationStructure == DE_FALSE)
TCU_THROW(TestError, "VK_KHR_ray_tracing_pipeline requires VkPhysicalDeviceAccelerationStructureFeaturesKHR.accelerationStructure");
@@ -187,8 +286,25 @@
std::stringstream css;
css <<
"#version 460 core\n"
+ << (m_data.useKhrMaintenance1Semantics ? "#extension GL_ARB_gpu_shader_int64: enable\n" : "\n") <<
"struct TraceRaysIndirectCommand\n"
- "{\n"
+ "{\n";
+ if (m_data.useKhrMaintenance1Semantics)
+ {
+ css <<
+ " uint64_t raygenShaderRecordAddress;\n"
+ " uint64_t raygenShaderRecordSize;\n"
+ " uint64_t missShaderBindingTableAddress;\n"
+ " uint64_t missShaderBindingTableSize;\n"
+ " uint64_t missShaderBindingTableStride;\n"
+ " uint64_t hitShaderBindingTableAddress;\n"
+ " uint64_t hitShaderBindingTableSize;\n"
+ " uint64_t hitShaderBindingTableStride;\n"
+ " uint64_t callableShaderBindingTableAddress;\n"
+ " uint64_t callableShaderBindingTableSize;\n"
+ " uint64_t callableShaderBindingTableStride;\n";
+ }
+ css <<
" uint width;\n"
" uint height;\n"
" uint depth;\n"
@@ -202,7 +318,23 @@
" TraceRaysIndirectCommand indirectCommands;\n"
"};\n"
"void main()\n"
- "{\n"
+ "{\n";
+ if (m_data.useKhrMaintenance1Semantics)
+ {
+ css <<
+ " indirectCommands.raygenShaderRecordAddress = ubo.indirectCommands.raygenShaderRecordAddress;\n"
+ " indirectCommands.raygenShaderRecordSize = ubo.indirectCommands.raygenShaderRecordSize;\n"
+ " indirectCommands.missShaderBindingTableAddress = ubo.indirectCommands.missShaderBindingTableAddress;\n"
+ " indirectCommands.missShaderBindingTableSize = ubo.indirectCommands.missShaderBindingTableSize;\n"
+ " indirectCommands.missShaderBindingTableStride = ubo.indirectCommands.missShaderBindingTableStride;\n"
+ " indirectCommands.hitShaderBindingTableAddress = ubo.indirectCommands.hitShaderBindingTableAddress;\n"
+ " indirectCommands.hitShaderBindingTableSize = ubo.indirectCommands.hitShaderBindingTableSize;\n"
+ " indirectCommands.hitShaderBindingTableStride = ubo.indirectCommands.hitShaderBindingTableStride;\n"
+ " indirectCommands.callableShaderBindingTableAddress = ubo.indirectCommands.callableShaderBindingTableAddress;\n"
+ " indirectCommands.callableShaderBindingTableSize = ubo.indirectCommands.callableShaderBindingTableSize;\n"
+ " indirectCommands.callableShaderBindingTableStride = ubo.indirectCommands.callableShaderBindingTableStride;\n";
+ }
+ css <<
" indirectCommands.width = ubo.indirectCommands.width;\n"
" indirectCommands.height = ubo.indirectCommands.height;\n"
" indirectCommands.depth = ubo.indirectCommands.depth;\n"
@@ -269,8 +401,8 @@
RayTracingTraceRaysIndirectTestInstance::RayTracingTraceRaysIndirectTestInstance (Context& context, const TestParams& data)
: vkt::TestInstance (context)
, m_data (data)
- , m_imageExtent (getImageExtent(data.traceDimensions))
{
+ m_imageExtent = data.useKhrMaintenance1Semantics ? getImageExtent(data.extendedTraceDimensions) : getImageExtent(data.traceDimensions);
}
RayTracingTraceRaysIndirectTestInstance::~RayTracingTraceRaysIndirectTestInstance (void)
@@ -317,32 +449,6 @@
return result;
}
-de::MovePtr<TopLevelAccelerationStructure> RayTracingTraceRaysIndirectTestInstance::initTopAccelerationStructure (VkCommandBuffer cmdBuffer,
- std::vector<de::SharedPtr<BottomLevelAccelerationStructure> >& bottomLevelAccelerationStructures)
-{
- const DeviceInterface& vkd = m_context.getDeviceInterface();
- const VkDevice device = m_context.getDevice();
- Allocator& allocator = m_context.getDefaultAllocator();
- const deUint32 instanceCount = m_imageExtent.depth * m_imageExtent.height * m_imageExtent.width / 2;
-
- de::MovePtr<TopLevelAccelerationStructure> result = makeTopLevelAccelerationStructure();
- result->setInstanceCount(instanceCount);
-
- deUint32 currentInstanceIndex = 0;
-
- for (deUint32 z = 0; z < m_imageExtent.depth; ++z)
- for (deUint32 y = 0; y < m_imageExtent.height; ++y)
- for (deUint32 x = 0; x < m_imageExtent.width; ++x)
- {
- if (((x + y + z) % 2) == 0)
- continue;
- result->addInstance(bottomLevelAccelerationStructures[currentInstanceIndex++]);
- }
- result->createAndBuild(vkd, device, cmdBuffer, allocator);
-
- return result;
-}
-
de::MovePtr<BufferWithMemory> RayTracingTraceRaysIndirectTestInstance::runTest()
{
const InstanceInterface& vki = m_context.getInstanceInterface();
@@ -363,7 +469,7 @@
Move<VkShaderModule> computeShader;
Move<VkPipeline> computePipeline;
- if (m_data.traceType == TraceType::INDIRECT_GPU)
+ if (m_data.traceType == TraceType::INDIRECT_GPU || m_data.traceType == TraceType::INDIRECT2_GPU)
{
computeDescriptorSetLayout = DescriptorSetLayoutBuilder()
.addSingleBinding(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, VK_SHADER_STAGE_COMPUTE_BIT)
@@ -444,19 +550,33 @@
de::MovePtr<BufferWithMemory> indirectBuffer;
de::MovePtr<BufferWithMemory> uniformBuffer;
+ // Update trace details according to VK_KHR_ray_tracing_maintenance1 semantics
+ m_data.extendedTraceDimensions.raygenShaderRecordAddress = raygenShaderBindingTableRegion.deviceAddress;
+ m_data.extendedTraceDimensions.raygenShaderRecordSize = raygenShaderBindingTableRegion.size;
+ m_data.extendedTraceDimensions.missShaderBindingTableAddress = missShaderBindingTableRegion.deviceAddress;
+ m_data.extendedTraceDimensions.missShaderBindingTableSize = missShaderBindingTableRegion.size;
+ m_data.extendedTraceDimensions.missShaderBindingTableStride = missShaderBindingTableRegion.stride;
+ m_data.extendedTraceDimensions.hitShaderBindingTableAddress = hitShaderBindingTableRegion.deviceAddress;
+ m_data.extendedTraceDimensions.hitShaderBindingTableSize = hitShaderBindingTableRegion.size;
+ m_data.extendedTraceDimensions.hitShaderBindingTableStride = hitShaderBindingTableRegion.stride;
+ m_data.extendedTraceDimensions.callableShaderBindingTableAddress = callableShaderBindingTableRegion.deviceAddress;
+ m_data.extendedTraceDimensions.callableShaderBindingTableSize = callableShaderBindingTableRegion.size;
+ m_data.extendedTraceDimensions.callableShaderBindingTableStride = callableShaderBindingTableRegion.stride;
+
if (m_data.traceType != TraceType::DIRECT)
{
- const bool indirectGpu = (m_data.traceType == TraceType::INDIRECT_GPU);
- VkBufferUsageFlags indirectBufferUsageFlags = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT | ( indirectGpu ? VK_BUFFER_USAGE_STORAGE_BUFFER_BIT : VK_BUFFER_USAGE_TRANSFER_DST_BIT );
- const VkBufferCreateInfo indirectBufferCreateInfo = makeBufferCreateInfo(sizeof(VkTraceRaysIndirectCommandKHR), indirectBufferUsageFlags);
- vk::MemoryRequirement indirectBufferMemoryRequirement = MemoryRequirement::DeviceAddress | ( indirectGpu ? MemoryRequirement::Any : MemoryRequirement::HostVisible );
- indirectBuffer = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, allocator, indirectBufferCreateInfo, indirectBufferMemoryRequirement));
+ const bool indirectGpu = (m_data.traceType == TraceType::INDIRECT_GPU || m_data.traceType == TraceType::INDIRECT2_GPU);
+ VkDeviceSize bufferSize = m_data.useKhrMaintenance1Semantics ? sizeof(VkTraceRaysIndirectCommand2KHR) : sizeof(VkTraceRaysIndirectCommandKHR);
+ VkBufferUsageFlags indirectBufferUsageFlags = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT | (indirectGpu ? VK_BUFFER_USAGE_STORAGE_BUFFER_BIT : VK_BUFFER_USAGE_TRANSFER_DST_BIT);
+ const VkBufferCreateInfo indirectBufferCreateInfo = makeBufferCreateInfo(bufferSize, indirectBufferUsageFlags);
+ vk::MemoryRequirement indirectBufferMemoryRequirement = MemoryRequirement::DeviceAddress | (indirectGpu ? MemoryRequirement::Any : MemoryRequirement::HostVisible);
+ indirectBuffer = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, allocator, indirectBufferCreateInfo, indirectBufferMemoryRequirement));
}
if (m_data.traceType == TraceType::INDIRECT_GPU)
{
- const VkBufferCreateInfo uniformBufferCreateInfo = makeBufferCreateInfo(sizeof(VkTraceRaysIndirectCommandKHR), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT);
- uniformBuffer = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, allocator, uniformBufferCreateInfo, MemoryRequirement::HostVisible));
+ const VkBufferCreateInfo uniformBufferCreateInfo = makeBufferCreateInfo(sizeof(VkTraceRaysIndirectCommandKHR), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT);
+ uniformBuffer = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, allocator, uniformBufferCreateInfo, MemoryRequirement::HostVisible));
deMemcpy(uniformBuffer->getAllocation().getHostPtr(), &m_data.traceDimensions, sizeof(VkTraceRaysIndirectCommandKHR));
flushMappedMemoryRange(vkd, device, uniformBuffer->getAllocation().getMemory(), uniformBuffer->getAllocation().getOffset(), VK_WHOLE_SIZE);
}
@@ -465,6 +585,18 @@
deMemcpy(indirectBuffer->getAllocation().getHostPtr(), &m_data.traceDimensions, sizeof(VkTraceRaysIndirectCommandKHR));
flushMappedMemoryRange(vkd, device, indirectBuffer->getAllocation().getMemory(), indirectBuffer->getAllocation().getOffset(), VK_WHOLE_SIZE);
}
+ else if (m_data.traceType == TraceType::INDIRECT2_GPU)
+ {
+ const VkBufferCreateInfo uniformBufferCreateInfo = makeBufferCreateInfo(sizeof(VkTraceRaysIndirectCommand2KHR), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT);
+ uniformBuffer = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, allocator, uniformBufferCreateInfo, MemoryRequirement::HostVisible));
+ deMemcpy(uniformBuffer->getAllocation().getHostPtr(), &m_data.extendedTraceDimensions, sizeof(VkTraceRaysIndirectCommand2KHR));
+ flushMappedMemoryRange(vkd, device, uniformBuffer->getAllocation().getMemory(), uniformBuffer->getAllocation().getOffset(), VK_WHOLE_SIZE);
+ }
+ else if (m_data.traceType == TraceType::INDIRECT2_CPU)
+ {
+ deMemcpy(indirectBuffer->getAllocation().getHostPtr(), &m_data.extendedTraceDimensions, sizeof(VkTraceRaysIndirectCommand2KHR));
+ flushMappedMemoryRange(vkd, device, indirectBuffer->getAllocation().getMemory(), indirectBuffer->getAllocation().getOffset(), VK_WHOLE_SIZE);
+ }
const Move<VkCommandPool> cmdPool = createCommandPool(vkd, device, 0, queueFamilyIndex);
const Move<VkCommandBuffer> cmdBuffer = allocateCommandBuffer(vkd, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY);
@@ -488,12 +620,13 @@
cmdPipelineImageMemoryBarrier(vkd, *cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, &postImageBarrier);
bottomLevelAccelerationStructures = initBottomAccelerationStructures(*cmdBuffer);
- topLevelAccelerationStructure = initTopAccelerationStructure(*cmdBuffer, bottomLevelAccelerationStructures);
+ topLevelAccelerationStructure = initTopAccelerationStructure(*cmdBuffer, bottomLevelAccelerationStructures, m_context, m_imageExtent);
if (m_data.traceType == TraceType::INDIRECT_GPU)
{
- const VkDescriptorBufferInfo uniformBufferDescriptorInfo = makeDescriptorBufferInfo(uniformBuffer->get(), 0ull, sizeof(VkTraceRaysIndirectCommandKHR));
- const VkDescriptorBufferInfo indirectBufferDescriptorInfo = makeDescriptorBufferInfo(indirectBuffer->get(), 0ull, sizeof(VkTraceRaysIndirectCommandKHR));
+ const VkDescriptorBufferInfo uniformBufferDescriptorInfo = makeDescriptorBufferInfo(uniformBuffer->get(), 0ull, sizeof(VkTraceRaysIndirectCommandKHR));
+ const VkDescriptorBufferInfo indirectBufferDescriptorInfo = makeDescriptorBufferInfo(indirectBuffer->get(), 0ull, sizeof(VkTraceRaysIndirectCommandKHR));
+
DescriptorSetUpdateBuilder()
.writeSingle(*computeDescriptorSet, DescriptorSetUpdateBuilder::Location::binding(0u), VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, &uniformBufferDescriptorInfo)
.writeSingle(*computeDescriptorSet, DescriptorSetUpdateBuilder::Location::binding(1u), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, &indirectBufferDescriptorInfo)
@@ -507,6 +640,25 @@
indirectBuffer->get(), 0ull, sizeof(VkTraceRaysIndirectCommandKHR));
cmdPipelineBufferMemoryBarrier(vkd, *cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, &fillIndirectBufferMemoryBarrier);
}
+ else if (m_data.traceType == TraceType::INDIRECT2_GPU)
+ {
+ const VkDescriptorBufferInfo uniformBufferDescriptorInfo = makeDescriptorBufferInfo(uniformBuffer->get(), 0ull, sizeof(VkTraceRaysIndirectCommand2KHR));
+ const VkDescriptorBufferInfo indirectBufferDescriptorInfo = makeDescriptorBufferInfo(indirectBuffer->get(), 0ull, sizeof(VkTraceRaysIndirectCommand2KHR));
+
+ DescriptorSetUpdateBuilder()
+ .writeSingle(*computeDescriptorSet, DescriptorSetUpdateBuilder::Location::binding(0u), VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, &uniformBufferDescriptorInfo)
+ .writeSingle(*computeDescriptorSet, DescriptorSetUpdateBuilder::Location::binding(1u), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, &indirectBufferDescriptorInfo)
+ .update(vkd, device);
+
+ vkd.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *computePipeline);
+ vkd.cmdBindDescriptorSets(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *computePipelineLayout, 0u, 1u, &computeDescriptorSet.get(), 0u, DE_NULL);
+ vkd.cmdDispatch(*cmdBuffer, 1, 1, 1);
+
+ const VkBufferMemoryBarrier fillIndirectBufferMemoryBarrier = makeBufferMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
+ indirectBuffer->get(), 0ull, sizeof(VkTraceRaysIndirectCommand2KHR));
+ cmdPipelineBufferMemoryBarrier(vkd, *cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, &fillIndirectBufferMemoryBarrier);
+
+ }
const TopLevelAccelerationStructure* topLevelAccelerationStructurePtr = topLevelAccelerationStructure.get();
VkWriteDescriptorSetAccelerationStructureKHR accelerationStructureWriteDescriptorSet =
@@ -537,7 +689,7 @@
&callableShaderBindingTableRegion,
m_data.traceDimensions.width, m_data.traceDimensions.height, m_data.traceDimensions.depth);
}
- else
+ else if(m_data.traceType == TraceType::INDIRECT_CPU || m_data.traceType == TraceType::INDIRECT_GPU)
{
cmdTraceRaysIndirect(vkd,
*cmdBuffer,
@@ -547,6 +699,12 @@
&callableShaderBindingTableRegion,
getBufferDeviceAddress(vkd, device, indirectBuffer->get(), 0));
}
+ else if (m_data.traceType == TraceType::INDIRECT2_CPU || m_data.traceType == TraceType::INDIRECT2_GPU)
+ {
+ vkd.cmdTraceRaysIndirect2KHR(
+ *cmdBuffer,
+ getBufferDeviceAddress(vkd, device, indirectBuffer->get(), 0));
+ }
const VkMemoryBarrier postTraceMemoryBarrier = makeMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_TRANSFER_READ_BIT);
const VkMemoryBarrier postCopyMemoryBarrier = makeMemoryBarrier(VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT);
@@ -570,7 +728,7 @@
// run test using arrays of pointers
const de::MovePtr<BufferWithMemory> buffer = runTest();
const deUint32* bufferPtr = (deUint32*)buffer->getAllocation().getHostPtr();
- const bool noWrites = isNullTrace(m_data.traceDimensions);
+ const bool noWrites = m_data.useKhrMaintenance1Semantics ? isNullTrace(m_data.extendedTraceDimensions) : isNullTrace(m_data.traceDimensions);
deUint32 failures = 0;
deUint32 pos = 0;
@@ -592,6 +750,567 @@
return tcu::TestStatus::fail("Fail (failures=" + de::toString(failures) + ")");
}
+template<typename T>
+std::string makeDimensionsName (const T cmd)
+{
+ std::ostringstream name;
+ name << cmd.width << "_" << cmd.height << "_" << cmd.depth;
+ return name.str();
+}
+
+using namespace tcu;
+
+class TraceRaysIndirect2Instance : public TestInstance
+{
+public:
+ TraceRaysIndirect2Instance (Context& context,
+ const TestParams2& params);
+ virtual ~TraceRaysIndirect2Instance (void) override = default;
+ virtual TestStatus iterate (void) override;
+
+protected:
+ void makeIndirectStructAndFlush (BufferWithMemory& buffer,
+ const bool source,
+ const BufferWithMemory& rgenSbt,
+ const BufferWithMemory& hitSbt,
+ const BufferWithMemory& missSbt,
+ const BufferWithMemory& callSbt) const;
+ void initBottomAccellStructures (VkCommandBuffer cmdBuffer,
+ BottomLevelAccelerationStructurePool& pool,
+ const size_t& batchStructCount) const;
+private:
+ TestParams2 m_params;
+ const VkExtent3D m_imageExtent;
+};
+
+class TraceRaysIndirect2Case : public TestCase
+{
+public:
+ TraceRaysIndirect2Case (TestContext& testCtx, const std::string& name, const TestParams2& params);
+ virtual ~TraceRaysIndirect2Case (void) override = default;
+ virtual void initPrograms (SourceCollections& programCollection) const override;
+ virtual TestInstance* createInstance (Context& context) const override;
+ virtual void checkSupport (Context& context) const override;
+private:
+ TestParams2 m_params;
+};
+
+TraceRaysIndirect2Case::TraceRaysIndirect2Case (TestContext& testCtx, const std::string& name, const TestParams2& params)
+ : TestCase (testCtx, name, std::string())
+ , m_params (params)
+{
+}
+
+TestInstance* TraceRaysIndirect2Case::createInstance (Context& context) const
+{
+ return new TraceRaysIndirect2Instance(context, m_params);
+}
+
+// note that this/these name(s) should be auto-generated but they do not
+#ifndef VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME
+#define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure"
+#endif
+
+void TraceRaysIndirect2Case::checkSupport (Context& context) const
+{
+ context.requireInstanceFunctionality(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
+ context.requireDeviceFunctionality(VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME);
+ context.requireDeviceFunctionality(VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME);
+
+ const VkPhysicalDeviceFeatures& features = context.getDeviceFeatures();
+ if (features.shaderInt64 == VK_FALSE)
+ TCU_THROW(NotSupportedError, "64-bit integers not supported by device");
+
+ const VkPhysicalDeviceAccelerationStructureFeaturesKHR& accelerationStructureFeaturesKHR = context.getAccelerationStructureFeatures();
+ if (accelerationStructureFeaturesKHR.accelerationStructure == VK_FALSE)
+ TCU_THROW(NotSupportedError, "Requires VkPhysicalDeviceAccelerationStructureFeaturesKHR::accelerationStructure");
+
+ const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR& maintenance1FeaturesKHR = context.getRayTracingMaintenance1Features();
+ if (maintenance1FeaturesKHR.rayTracingMaintenance1 == VK_FALSE)
+ TCU_THROW(NotSupportedError, "Requires VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR::rayTracingMaintenance1");
+ if (maintenance1FeaturesKHR.rayTracingPipelineTraceRaysIndirect2 == VK_FALSE)
+ TCU_THROW(NotSupportedError, "Requires VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR::rayTracingPipelineTraceRaysIndirect2");
+
+ auto desiredQueue = getQueueFamilyIndexAtExact(context.getDeviceInterface(),
+ context.getInstanceInterface(),
+ context.getPhysicalDevice(),
+ context.getDevice(),
+ m_params.submitQueue);
+ if (!std::get<0>(desiredQueue))
+ {
+ std::stringstream errorMsg;
+ errorMsg << "Desired queue " << m_params.submitQueue << " is not supported by device";
+ errorMsg.flush();
+ TCU_THROW(NotSupportedError, errorMsg.str());
+ }
+}
+
+void TraceRaysIndirect2Case::initPrograms (SourceCollections& programCollection) const
+{
+ const vk::ShaderBuildOptions buildOptions(programCollection.usedVulkanVersion, vk::SPIRV_VERSION_1_4, 0u, true);
+ {
+ std::stringstream css;
+ std::string comp(R"(
+ #version 460 core
+ #extension GL_ARB_gpu_shader_int64: enable
+ struct TraceRaysIndirectCommand
+ {
+ uint64_t raygenShaderRecordAddress;
+ uint64_t raygenShaderRecordSize;
+ uint64_t missShaderBindingTableAddress;
+ uint64_t missShaderBindingTableSize;
+ uint64_t missShaderBindingTableStride;
+ uint64_t hitShaderBindingTableAddress;
+ uint64_t hitShaderBindingTableSize;
+ uint64_t hitShaderBindingTableStride;
+ uint64_t callableShaderBindingTableAddress;
+ uint64_t callableShaderBindingTableSize;
+ uint64_t callableShaderBindingTableStride;
+ uint width;
+ uint height;
+ uint depth;
+ };
+ layout(push_constant) uniform CopyStyle {
+ uint full;
+ } cs;
+ layout(binding = 0) uniform IndirectCommandsUBO {
+ TraceRaysIndirectCommand indirectCommands;
+ } ubo;
+ layout(binding = 1) buffer IndirectCommandsSBO {
+ TraceRaysIndirectCommand indirectCommands;
+ };
+ void main()
+ {
+ if (cs.full != 0) {
+ indirectCommands.raygenShaderRecordAddress = ubo.indirectCommands.raygenShaderRecordAddress;
+ indirectCommands.raygenShaderRecordSize = ubo.indirectCommands.raygenShaderRecordSize;
+ indirectCommands.missShaderBindingTableAddress = ubo.indirectCommands.missShaderBindingTableAddress;
+ indirectCommands.missShaderBindingTableSize = ubo.indirectCommands.missShaderBindingTableSize;
+ indirectCommands.missShaderBindingTableStride = ubo.indirectCommands.missShaderBindingTableStride;
+ indirectCommands.hitShaderBindingTableAddress = ubo.indirectCommands.hitShaderBindingTableAddress;
+ indirectCommands.hitShaderBindingTableSize = ubo.indirectCommands.hitShaderBindingTableSize;
+ indirectCommands.hitShaderBindingTableStride = ubo.indirectCommands.hitShaderBindingTableStride;
+ indirectCommands.callableShaderBindingTableAddress = ubo.indirectCommands.callableShaderBindingTableAddress;
+ indirectCommands.callableShaderBindingTableSize = ubo.indirectCommands.callableShaderBindingTableSize;
+ indirectCommands.callableShaderBindingTableStride = ubo.indirectCommands.callableShaderBindingTableStride;
+ }
+ else {
+ indirectCommands.raygenShaderRecordAddress = ubo.indirectCommands.raygenShaderRecordAddress;
+
+ indirectCommands.missShaderBindingTableStride = ubo.indirectCommands.missShaderBindingTableStride;
+
+ indirectCommands.hitShaderBindingTableSize = ubo.indirectCommands.hitShaderBindingTableSize;
+
+ indirectCommands.callableShaderBindingTableAddress = ubo.indirectCommands.callableShaderBindingTableAddress;
+ indirectCommands.callableShaderBindingTableStride = ubo.indirectCommands.callableShaderBindingTableStride;
+ }
+
+ indirectCommands.width = ubo.indirectCommands.width;
+ indirectCommands.height = ubo.indirectCommands.height;
+ indirectCommands.depth = ubo.indirectCommands.depth;
+
+ })");
+
+ programCollection.glslSources.add("compute_indirect_command") << glu::ComputeSource(comp) << buildOptions;
+ }
+
+ {
+ std::stringstream css;
+ css <<
+ "#version 460 core\n"
+ "#extension GL_EXT_ray_tracing : require\n"
+ "layout(location = 0) rayPayloadEXT uvec4 hitValue;\n"
+ "layout(r32ui, set = 0, binding = 0) uniform uimage3D result;\n"
+ "layout(set = 0, binding = 1) uniform accelerationStructureEXT topLevelAS;\n"
+ "\n"
+ "void main()\n"
+ "{\n"
+ " float tmin = 0.0;\n"
+ " float tmax = 1.0;\n"
+ " vec3 origin = vec3(float(gl_LaunchIDEXT.x) + 0.5f, float(gl_LaunchIDEXT.y) + 0.5f, float(gl_LaunchIDEXT.z + 0.5f));\n"
+ " vec3 direct = vec3(0.0, 0.0, -1.0);\n"
+ " hitValue = uvec4(0,0,0,0);\n"
+ " traceRayEXT(topLevelAS, 0, 0xFF, 0, 0, 0, origin, tmin, direct, tmax, 0);\n"
+ " imageStore(result, ivec3(gl_LaunchIDEXT), hitValue);\n"
+ "}\n";
+ programCollection.glslSources.add("rgen") << glu::RaygenSource(updateRayTracingGLSL(css.str())) << buildOptions;
+ }
+
+ {
+ std::stringstream css;
+ css <<
+ "#version 460 core\n"
+ "#extension GL_EXT_ray_tracing : require\n"
+ "layout(location = 0) rayPayloadInEXT uvec4 hitValue;\n"
+ "void main()\n"
+ "{\n"
+ " hitValue = uvec4(" << kHitColorValue << ",0,0,1);\n"
+ "}\n";
+ programCollection.glslSources.add("chit") << glu::ClosestHitSource(updateRayTracingGLSL(css.str())) << buildOptions;
+ }
+
+ {
+ std::stringstream css;
+ css <<
+ "#version 460 core\n"
+ "#extension GL_EXT_ray_tracing : require\n"
+ "layout(location = 0) rayPayloadInEXT uvec4 hitValue;\n"
+ "void main()\n"
+ "{\n"
+ " hitValue = uvec4(" << kMissColorValue << ",0,0,1);\n"
+ "}\n";
+
+ programCollection.glslSources.add("miss") << glu::MissSource(updateRayTracingGLSL(css.str())) << buildOptions;
+ }
+}
+
+TraceRaysIndirect2Instance::TraceRaysIndirect2Instance (Context& context, const TestParams2& params)
+ : TestInstance (context)
+ , m_params (params)
+ , m_imageExtent (getNonNullImageExtent(params.traceDimensions))
+{
+}
+
+void TraceRaysIndirect2Instance::makeIndirectStructAndFlush (BufferWithMemory& buffer,
+ const bool source,
+ const BufferWithMemory& rgenSbt,
+ const BufferWithMemory& hitSbt,
+ const BufferWithMemory& missSbt,
+ const BufferWithMemory& callSbt) const
+{
+ DE_UNREF(callSbt);
+
+ const DeviceInterface& vkd = m_context.getDeviceInterface();
+ const InstanceInterface& vki = m_context.getInstanceInterface();
+ const VkPhysicalDevice physicalDevice = m_context.getPhysicalDevice();
+ const VkDevice device = m_context.getDevice();
+ const deUint32 shaderGroupHandleSize = getShaderGroupSize(vki, physicalDevice);
+ Allocation& alloc = buffer.getAllocation();
+
+ VkTraceRaysIndirectCommand2KHR data {};
+
+ if (m_params.traceType == TraceType::INDIRECT_GPU && m_params.partialCopy)
+ {
+ if (source)
+ {
+ data.raygenShaderRecordAddress = getBufferDeviceAddress(vkd, device, *rgenSbt, 0);
+ data.missShaderBindingTableStride = shaderGroupHandleSize;
+ data.hitShaderBindingTableSize = shaderGroupHandleSize;
+ data.callableShaderBindingTableAddress = 0;
+ data.callableShaderBindingTableStride = 0;
+ }
+ else
+ {
+ data.raygenShaderRecordSize = shaderGroupHandleSize;
+ data.missShaderBindingTableAddress = getBufferDeviceAddress(vkd, device, *missSbt, 0);
+ data.missShaderBindingTableSize = shaderGroupHandleSize;
+ data.hitShaderBindingTableAddress = getBufferDeviceAddress(vkd, device, *hitSbt, 0);
+ data.hitShaderBindingTableStride = shaderGroupHandleSize;
+ data.callableShaderBindingTableSize = 0;
+ }
+ }
+ else
+ {
+ data.raygenShaderRecordAddress = getBufferDeviceAddress(vkd, device, *rgenSbt, 0);
+ data.raygenShaderRecordSize = shaderGroupHandleSize;
+
+ data.missShaderBindingTableAddress = getBufferDeviceAddress(vkd, device, *missSbt, 0);
+ data.missShaderBindingTableSize = shaderGroupHandleSize;
+ data.missShaderBindingTableStride = shaderGroupHandleSize;
+
+ data.hitShaderBindingTableAddress = getBufferDeviceAddress(vkd, device, *hitSbt, 0);
+ data.hitShaderBindingTableSize = shaderGroupHandleSize;
+ data.hitShaderBindingTableStride = shaderGroupHandleSize;
+
+ data.callableShaderBindingTableAddress = 0;
+ data.callableShaderBindingTableSize = 0;
+ data.callableShaderBindingTableStride = 0;
+ }
+
+ data.width = m_params.traceDimensions.width;
+ data.height = m_params.traceDimensions.height;
+ data.depth = m_params.traceDimensions.depth;
+
+ deMemcpy(alloc.getHostPtr(), &data, sizeof(data));
+ flushMappedMemoryRange(vkd, device, alloc.getMemory(), alloc.getOffset(), VK_WHOLE_SIZE);
+}
+
+void TraceRaysIndirect2Instance::initBottomAccellStructures (VkCommandBuffer cmdBuffer,
+ BottomLevelAccelerationStructurePool& pool,
+ const size_t& batchStructCount) const
+{
+ const DeviceInterface& vkd = m_context.getDeviceInterface();
+ const VkDevice device = m_context.getDevice();
+ Allocator& allocator = m_context.getDefaultAllocator();
+
+ pool.batchStructCount(batchStructCount);
+ pool.batchGeomCount(batchStructCount * 8);
+
+ tcu::Vec3 v0(0.0, 1.0, 0.0);
+ tcu::Vec3 v1(0.0, 0.0, 0.0);
+ tcu::Vec3 v2(1.0, 1.0, 0.0);
+ tcu::Vec3 v3(1.0, 0.0, 0.0);
+
+ for (deUint32 z = 0; z < m_imageExtent.depth; ++z)
+ for (deUint32 y = 0; y < m_imageExtent.height; ++y)
+ for (deUint32 x = 0; x < m_imageExtent.width; ++x)
+ {
+ // let's build a 3D chessboard of geometries
+ if (((x + y + z) % 2) == 0)
+ continue;
+ tcu::Vec3 xyz((float)x, (float)y, (float)z);
+ std::vector<tcu::Vec3> geometryData;
+
+ auto bottomLevelAccelerationStructure = pool.add();
+ bottomLevelAccelerationStructure->setGeometryCount(1u);
+
+ geometryData.push_back(xyz + v0);
+ geometryData.push_back(xyz + v1);
+ geometryData.push_back(xyz + v2);
+ geometryData.push_back(xyz + v2);
+ geometryData.push_back(xyz + v1);
+ geometryData.push_back(xyz + v3);
+
+ bottomLevelAccelerationStructure->addGeometry(geometryData, true);
+ }
+
+ pool.batchCreate(vkd, device, allocator);
+ pool.batchBuild(vkd, device, cmdBuffer);
+}
+
+TestStatus TraceRaysIndirect2Instance::iterate (void)
+{
+ const InstanceInterface& vki = m_context.getInstanceInterface();
+ const DeviceInterface& vkd = m_context.getDeviceInterface();
+ const VkDevice device = m_context.getDevice();
+ const VkPhysicalDevice physicalDevice = m_context.getPhysicalDevice();
+ const auto queueAndFamilyIndex = getQueueFamilyIndexAtExact(vkd, vki, physicalDevice, device, m_params.submitQueue);
+ const VkQueue queue = std::get<1>(queueAndFamilyIndex);
+ const deUint32 queueFamilyIndex = std::get<2>(queueAndFamilyIndex);
+ Allocator& allocator = m_context.getDefaultAllocator();
+ const deUint32 width = m_imageExtent.width;
+ const deUint32 height = m_imageExtent.height;
+ const deUint32 depth = m_imageExtent.depth;
+ const deUint32 pixelCount = width * height * depth;
+ const deUint32 shaderGroupHandleSize = getShaderGroupSize(vki, physicalDevice);
+ const deUint32 shaderGroupBaseAlignment = getShaderGroupBaseAlignment(vki, physicalDevice);
+
+ Move<VkDescriptorSetLayout> computeDescriptorSetLayout;
+ Move<VkDescriptorPool> computeDescriptorPool;
+ Move<VkDescriptorSet> computeDescriptorSet;
+ Move<VkPipelineLayout> computePipelineLayout;
+ Move<VkShaderModule> computeShader;
+ Move<VkPipeline> computePipeline;
+
+ if (m_params.traceType == TraceType::INDIRECT_GPU)
+ {
+ computeDescriptorSetLayout = DescriptorSetLayoutBuilder()
+ .addSingleBinding(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, VK_SHADER_STAGE_COMPUTE_BIT)
+ .addSingleBinding(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, VK_SHADER_STAGE_COMPUTE_BIT)
+ .build(vkd, device);
+ computeDescriptorPool = DescriptorPoolBuilder()
+ .addType(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER)
+ .addType(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER)
+ .build(vkd, device, VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, 1u);
+ const VkPushConstantRange full { VK_SHADER_STAGE_COMPUTE_BIT, 0, deUint32(sizeof(deUint32)) };
+ computeDescriptorSet = makeDescriptorSet(vkd, device, *computeDescriptorPool, *computeDescriptorSetLayout);
+ computePipelineLayout = makePipelineLayout(vkd, device, 1, &computeDescriptorSetLayout.get(), 1, &full);
+
+ computeShader = createShaderModule(vkd, device, m_context.getBinaryCollection().get("compute_indirect_command"), 0);
+ const VkPipelineShaderStageCreateInfo pipelineShaderStageParams =
+ {
+ VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType;
+ DE_NULL, // const void* pNext;
+ VkPipelineShaderStageCreateFlags(0u), // VkPipelineShaderStageCreateFlags flags;
+ VK_SHADER_STAGE_COMPUTE_BIT, // VkShaderStageFlagBits stage;
+ *computeShader, // VkShaderModule module;
+ "main", // const char* pName;
+ DE_NULL, // const VkSpecializationInfo* pSpecializationInfo;
+ };
+ const VkComputePipelineCreateInfo pipelineCreateInfo =
+ {
+ VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO, // VkStructureType sType;
+ DE_NULL, // const void* pNext;
+ VkPipelineCreateFlags(0u), // VkPipelineCreateFlags flags;
+ pipelineShaderStageParams, // VkPipelineShaderStageCreateInfo stage;
+ *computePipelineLayout, // VkPipelineLayout layout;
+ DE_NULL, // VkPipeline basePipelineHandle;
+ 0, // deInt32 basePipelineIndex;
+ };
+
+ computePipeline = vk::createComputePipeline(vkd, device, (VkPipelineCache)0u, &pipelineCreateInfo);
+ }
+
+ const Move<VkDescriptorSetLayout> descriptorSetLayout = DescriptorSetLayoutBuilder()
+ .addSingleBinding(VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, ALL_RAY_TRACING_STAGES)
+ .addSingleBinding(VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, ALL_RAY_TRACING_STAGES)
+ .build(vkd, device);
+ const Move<VkDescriptorPool> descriptorPool = DescriptorPoolBuilder()
+ .addType(VK_DESCRIPTOR_TYPE_STORAGE_IMAGE)
+ .addType(VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR)
+ .build(vkd, device, VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, 1u);
+ const Move<VkDescriptorSet> descriptorSet = makeDescriptorSet(vkd, device, *descriptorPool, *descriptorSetLayout);
+ const Move<VkPipelineLayout> pipelineLayout = makePipelineLayout(vkd, device, descriptorSetLayout.get());
+
+ de::MovePtr<RayTracingPipeline> rayTracingPipeline = de::newMovePtr<RayTracingPipeline>();
+ rayTracingPipeline->addShader(VK_SHADER_STAGE_RAYGEN_BIT_KHR, createShaderModule(vkd, device, m_context.getBinaryCollection().get("rgen"), 0), 0);
+ rayTracingPipeline->addShader(VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR, createShaderModule(vkd, device, m_context.getBinaryCollection().get("chit"), 0), 1);
+ rayTracingPipeline->addShader(VK_SHADER_STAGE_MISS_BIT_KHR, createShaderModule(vkd, device, m_context.getBinaryCollection().get("miss"), 0), 2);
+ Move<VkPipeline> pipeline = rayTracingPipeline->createPipeline(vkd, device, *pipelineLayout);
+
+ const de::MovePtr<BufferWithMemory> rgenSbt = rayTracingPipeline->createShaderBindingTable(vkd, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 0, 1 );
+ const de::MovePtr<BufferWithMemory> hitSbt = rayTracingPipeline->createShaderBindingTable(vkd, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 1, 1 );
+ const de::MovePtr<BufferWithMemory> missSbt = rayTracingPipeline->createShaderBindingTable(vkd, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 2, 1 );
+
+ const VkFormat imageFormat = VK_FORMAT_R32_UINT;
+ const VkImageCreateInfo imageCreateInfo = makeImageCreateInfo(width, height, depth, imageFormat);
+ const VkImageSubresourceRange imageSubresourceRange = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0, 1u);
+ const de::MovePtr<ImageWithMemory> image = de::MovePtr<ImageWithMemory>(new ImageWithMemory(vkd, device, allocator, imageCreateInfo, MemoryRequirement::Any));
+ const Move<VkImageView> imageView = makeImageView(vkd, device, **image, VK_IMAGE_VIEW_TYPE_3D, imageFormat, imageSubresourceRange);
+
+ const VkBufferCreateInfo resultBufferCreateInfo = makeBufferCreateInfo(pixelCount*sizeof(deUint32), VK_BUFFER_USAGE_TRANSFER_DST_BIT);
+ const VkImageSubresourceLayers resultBufferImageSubresourceLayers = makeImageSubresourceLayers(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 0u, 1u);
+ const VkBufferImageCopy resultBufferImageRegion = makeBufferImageCopy(m_params.traceDimensions, resultBufferImageSubresourceLayers);
+ de::MovePtr<BufferWithMemory> resultBuffer = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, allocator, resultBufferCreateInfo, MemoryRequirement::HostVisible));
+ Allocation& resultBufferAllocation = resultBuffer->getAllocation();
+
+ const VkDescriptorImageInfo descriptorImageInfo = makeDescriptorImageInfo(DE_NULL, *imageView, VK_IMAGE_LAYOUT_GENERAL);
+
+ // create indirect command buffer and fill it with parameter values
+ const VkDeviceSize bufferSize = sizeof(VkTraceRaysIndirectCommand2KHR);
+ de::MovePtr<BufferWithMemory> indirectBuffer;
+ de::MovePtr<BufferWithMemory> uniformBuffer;
+
+ const bool indirectGpu = (m_params.traceType == TraceType::INDIRECT_GPU);
+ VkBufferUsageFlags indirectBufferUsageFlags = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT | ( indirectGpu ? VK_BUFFER_USAGE_STORAGE_BUFFER_BIT : VK_BUFFER_USAGE_TRANSFER_DST_BIT );
+ const VkBufferCreateInfo indirectBufferCreateInfo = makeBufferCreateInfo(bufferSize, indirectBufferUsageFlags);
+ vk::MemoryRequirement indirectBufferMemoryRequirement = MemoryRequirement::DeviceAddress | MemoryRequirement::HostVisible;
+ indirectBuffer = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, allocator, indirectBufferCreateInfo, indirectBufferMemoryRequirement));
+
+ if (m_params.traceType == TraceType::INDIRECT_GPU)
+ {
+ const VkBufferCreateInfo uniformBufferCreateInfo = makeBufferCreateInfo(bufferSize, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT);
+ uniformBuffer = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, allocator, uniformBufferCreateInfo, MemoryRequirement::HostVisible));
+ makeIndirectStructAndFlush(*uniformBuffer, true, *rgenSbt, *hitSbt, *missSbt, *missSbt);
+ makeIndirectStructAndFlush(*indirectBuffer, false, *rgenSbt, *hitSbt, *missSbt, *missSbt);
+ }
+ else if (m_params.traceType == TraceType::INDIRECT_CPU)
+ {
+ makeIndirectStructAndFlush(*indirectBuffer, true, *rgenSbt, *hitSbt, *missSbt, *missSbt);
+ }
+ else
+ {
+ TCU_THROW(NotSupportedError, "Invalid test parameters");
+ }
+
+ de::MovePtr<TopLevelAccelerationStructure> topLevelAccelerationStructure;
+ BottomLevelAccelerationStructurePool blasPool;
+ const Move<VkCommandPool> cmdPool = createCommandPool(vkd, device, 0, queueFamilyIndex);
+ const Move<VkCommandBuffer> cmdBuffer = allocateCommandBuffer(vkd, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY);
+
+ beginCommandBuffer(vkd, *cmdBuffer, 0u);
+ {
+ const VkImageMemoryBarrier preImageBarrier = makeImageMemoryBarrier(0u, VK_ACCESS_TRANSFER_WRITE_BIT,
+ VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
+ **image, imageSubresourceRange);
+ cmdPipelineImageMemoryBarrier(vkd, *cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, &preImageBarrier);
+
+ const VkClearValue clearValue = makeClearValueColorU32(kClearColorValue, 0u, 0u, 0u);
+ vkd.cmdClearColorImage(*cmdBuffer, **image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, &clearValue.color, 1, &imageSubresourceRange);
+
+ const VkImageMemoryBarrier postImageBarrier = makeImageMemoryBarrier(VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR | VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,
+ VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_GENERAL,
+ **image, imageSubresourceRange);
+ cmdPipelineImageMemoryBarrier(vkd, *cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, &postImageBarrier);
+
+
+ initBottomAccellStructures(*cmdBuffer, blasPool, 4);
+ topLevelAccelerationStructure = initTopAccelerationStructure(*cmdBuffer, blasPool.structures(), m_context, m_imageExtent);
+
+ if (m_params.traceType == TraceType::INDIRECT_GPU)
+ {
+ const deUint32 fullCopyStyle = m_params.partialCopy ? 0 : 1;
+ const VkDescriptorBufferInfo uniformBufferDescriptorInfo = makeDescriptorBufferInfo(**uniformBuffer, 0ull, bufferSize);
+ const VkDescriptorBufferInfo indirectBufferDescriptorInfo = makeDescriptorBufferInfo(**indirectBuffer, 0ull, bufferSize);
+ DescriptorSetUpdateBuilder()
+ .writeSingle(*computeDescriptorSet, DescriptorSetUpdateBuilder::Location::binding(0u), VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, &uniformBufferDescriptorInfo)
+ .writeSingle(*computeDescriptorSet, DescriptorSetUpdateBuilder::Location::binding(1u), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, &indirectBufferDescriptorInfo)
+ .update(vkd, device);
+
+ vkd.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *computePipeline);
+ vkd.cmdBindDescriptorSets(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *computePipelineLayout, 0u, 1u, &computeDescriptorSet.get(), 0u, DE_NULL);
+ vkd.cmdPushConstants(*cmdBuffer, *computePipelineLayout, VK_SHADER_STAGE_COMPUTE_BIT, 0, deUint32(sizeof(deUint32)), &fullCopyStyle);
+ vkd.cmdDispatch(*cmdBuffer, 1, 1, 1);
+
+ const VkBufferMemoryBarrier fillIndirectBufferMemoryBarrier = makeBufferMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
+ **indirectBuffer, 0ull, bufferSize);
+ cmdPipelineBufferMemoryBarrier(vkd, *cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, &fillIndirectBufferMemoryBarrier);
+ }
+
+ const TopLevelAccelerationStructure* topLevelAccelerationStructurePtr = topLevelAccelerationStructure.get();
+ VkWriteDescriptorSetAccelerationStructureKHR accelerationStructureWriteDescriptorSet =
+ {
+ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR, // VkStructureType sType;
+ DE_NULL, // const void* pNext;
+ 1u, // deUint32 accelerationStructureCount;
+ topLevelAccelerationStructurePtr->getPtr(), // const VkAccelerationStructureKHR* pAccelerationStructures;
+ };
+
+ DescriptorSetUpdateBuilder()
+ .writeSingle(*descriptorSet, DescriptorSetUpdateBuilder::Location::binding(0u), VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, &descriptorImageInfo)
+ .writeSingle(*descriptorSet, DescriptorSetUpdateBuilder::Location::binding(1u), VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, &accelerationStructureWriteDescriptorSet)
+ .update(vkd, device);
+
+ vkd.cmdBindDescriptorSets(*cmdBuffer, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, *pipelineLayout, 0, 1, &descriptorSet.get(), 0, DE_NULL);
+
+ vkd.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, *pipeline);
+
+ cmdTraceRaysIndirect2(vkd, *cmdBuffer, getBufferDeviceAddress(vkd, device, **indirectBuffer, 0));
+
+ const VkMemoryBarrier postTraceMemoryBarrier = makeMemoryBarrier(VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_TRANSFER_READ_BIT);
+ const VkMemoryBarrier postCopyMemoryBarrier = makeMemoryBarrier(VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT);
+ cmdPipelineMemoryBarrier(vkd, *cmdBuffer, VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR, VK_PIPELINE_STAGE_TRANSFER_BIT, &postTraceMemoryBarrier);
+
+ vkd.cmdCopyImageToBuffer(*cmdBuffer, **image, VK_IMAGE_LAYOUT_GENERAL, **resultBuffer, 1u, &resultBufferImageRegion);
+
+ cmdPipelineMemoryBarrier(vkd, *cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, &postCopyMemoryBarrier);
+ }
+ endCommandBuffer(vkd, *cmdBuffer);
+
+ submitCommandsAndWait(vkd, device, queue, cmdBuffer.get());
+
+ invalidateMappedMemoryRange(vkd, device, resultBufferAllocation.getMemory(), resultBufferAllocation.getOffset(), VK_WHOLE_SIZE);
+
+ // run test using arrays of pointers
+ const deUint32* bufferPtr = (deUint32*)resultBufferAllocation.getHostPtr();
+ const bool noWrites = isNullExtent(m_params.traceDimensions);
+
+ const auto allocationCount = blasPool.getAllocationCount();
+ deUint32 failures = 0;
+ deUint32 pos = 0;
+ deUint32 all = 0;
+
+ // verify results
+ for (deUint32 z = 0; z < depth; ++z)
+ for (deUint32 y = 0; y < height; ++y)
+ for (deUint32 x = 0; x < width; ++x)
+ {
+ const deUint32 expectedResult = (noWrites ? kClearColorValue : (((x + y + z) % 2) ? kHitColorValue : kMissColorValue));
+ if (bufferPtr[pos] != expectedResult)
+ failures++;
+ ++pos;
+ ++all;
+ }
+
+ if (failures == 0)
+ return tcu::TestStatus::pass(std::to_string(allocationCount) +" allocations");
+ else
+ {
+ const auto msg = std::to_string(allocationCount) +" allocations, " + std::to_string(failures) + " failures from " + std::to_string(all);
+ return tcu::TestStatus::fail(msg);
+ }
+}
+
std::string makeDimensionsName (const VkTraceRaysIndirectCommandKHR& cmd)
{
std::ostringstream name;
@@ -599,9 +1318,16 @@
return name.str();
}
+std::string makeDimensionsName (const VkExtent3D& extent)
+{
+ std::ostringstream name;
+ name << extent.width << "x" << extent.height << "x" << extent.depth;
+ return name.str();
+}
+
} // anonymous
-tcu::TestCaseGroup* createTraceRaysTests(tcu::TestContext& testCtx)
+tcu::TestCaseGroup* createTraceRaysTests(tcu::TestContext& testCtx)
{
de::MovePtr<tcu::TestCaseGroup> group(new tcu::TestCaseGroup(testCtx, "trace_rays_cmds", "Tests veryfying vkCmdTraceRays* commands"));
@@ -640,6 +1366,8 @@
{
bufferSourceTypes[bufferSourceNdx].traceType,
traceDimensions[traceDimensionsIdx],
+ false,
+ {/* Intentionally empty */},
};
const auto testName = makeDimensionsName(traceDimensions[traceDimensionsIdx]);
bufferSourceGroup->addChild(new RayTracingTraceRaysIndirectTestCase(group->getTestContext(), testName.c_str(), "", testParams));
@@ -651,6 +1379,121 @@
return group.release();
}
+tcu::TestCaseGroup* createTraceRaysMaintenance1Tests(tcu::TestContext& testCtx)
+{
+ de::MovePtr<tcu::TestCaseGroup> group(new tcu::TestCaseGroup(testCtx, "trace_rays_cmds_maintenance_1", "Tests veryfying vkCmdTraceRays* commands"));
+
+ struct BufferSourceTypeData
+ {
+ TraceType traceType;
+ const char* name;
+ } bufferSourceTypes[] =
+ {
+ { TraceType::INDIRECT2_CPU, "indirect2_cpu" },
+ { TraceType::INDIRECT2_GPU, "indirect2_gpu" },
+ };
+
+ const VkTraceRaysIndirectCommand2KHR extendedTraceDimensions[] =
+ {
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 1, 1 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 1 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 1, 1 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 13, 1 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 13, 5 },
+ };
+
+ for (size_t bufferSourceNdx = 0; bufferSourceNdx < DE_LENGTH_OF_ARRAY(bufferSourceTypes); ++bufferSourceNdx)
+ {
+ de::MovePtr<tcu::TestCaseGroup> bufferSourceGroup(new tcu::TestCaseGroup(group->getTestContext(), bufferSourceTypes[bufferSourceNdx].name, ""));
+
+ for (size_t extendedTraceDimensionsIdx = 0; extendedTraceDimensionsIdx < DE_LENGTH_OF_ARRAY(extendedTraceDimensions); ++extendedTraceDimensionsIdx)
+ {
+ TestParams testParams
+ {
+ bufferSourceTypes[bufferSourceNdx].traceType,
+ {/* Intentionally empty */},
+ true,
+ extendedTraceDimensions[extendedTraceDimensionsIdx],
+ };
+ const auto testName = makeDimensionsName(extendedTraceDimensions[extendedTraceDimensionsIdx]);
+ bufferSourceGroup->addChild(new RayTracingTraceRaysIndirectTestCase(group->getTestContext(), testName.c_str(), "", testParams));
+ }
+
+ group->addChild(bufferSourceGroup.release());
+ }
+
+ return group.release();
+}
+
+tcu::TestCaseGroup* createTraceRays2Tests(tcu::TestContext& testCtx)
+{
+ auto group = new tcu::TestCaseGroup(testCtx, "trace_rays_indirect2", "Tests veryfying vkCmdTraceRaysIndirect2KHR command");
+
+ std::pair<TraceType, const char*> const bufferSources[]
+ {
+ { TraceType::INDIRECT_CPU, "indirect_cpu" },
+ { TraceType::INDIRECT_GPU, "indirect_gpu" },
+ };
+
+ std::pair<bool, const char*> const copyStyles[]
+ {
+ { true, "full_copy" },
+ { false, "partial_copy" }
+ };
+
+ std::pair<VkQueueFlagBits, const char*> submitQueues[]
+ {
+ { VK_QUEUE_GRAPHICS_BIT, "submit_graphics" },
+ { VK_QUEUE_COMPUTE_BIT, "submit_compute" }
+ };
+
+ const VkExtent3D traceDimensions[] =
+ {
+ { 11, 17, 1 },
+ { 19, 11, 2 },
+ { 23, 47, 3 },
+ { 47, 19, 4 }
+ };
+
+ for (const auto& bufferSource : bufferSources)
+ {
+ auto bufferSourceGroup = new TestCaseGroup(testCtx, bufferSource.second, "");
+
+ for (const auto& copyStyle : copyStyles)
+ {
+ auto copyStyleGroup = new TestCaseGroup(testCtx, copyStyle.second, "");
+
+ for (const auto& submitQueue : submitQueues)
+ {
+ auto submitQueueGroup = new TestCaseGroup(testCtx, submitQueue.second, "");
+
+ for (const auto& traceDimension : traceDimensions)
+ {
+ TestParams2 testParams
+ {
+ bufferSource.first,
+ traceDimension,
+ copyStyle.first,
+ submitQueue.first
+ };
+ const auto testName = makeDimensionsName(traceDimension);
+ submitQueueGroup->addChild(new TraceRaysIndirect2Case(testCtx, testName.c_str(), testParams));
+ }
+ copyStyleGroup->addChild(submitQueueGroup);
+ }
+ bufferSourceGroup->addChild(copyStyleGroup);
+ }
+ group->addChild(bufferSourceGroup);
+ }
+
+ return group;
+}
+
} // RayTracing
} // vkt
diff --git a/external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingTraceRaysTests.hpp b/external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingTraceRaysTests.hpp
index 689cf48..6b829d1 100644
--- a/external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingTraceRaysTests.hpp
+++ b/external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingTraceRaysTests.hpp
@@ -4,7 +4,7 @@
* Vulkan Conformance Tests
* ------------------------
*
- * Copyright (c) 2020 The Khronos Group Inc.
+ * Copyright (c) 2022 The Khronos Group Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,6 +32,8 @@
{
tcu::TestCaseGroup* createTraceRaysTests(tcu::TestContext& testCtx);
+tcu::TestCaseGroup* createTraceRaysMaintenance1Tests(tcu::TestContext& testCtx);
+tcu::TestCaseGroup* createTraceRays2Tests(tcu::TestContext& testCtx);
} // RayTracing
} // vkt
diff --git a/external/vulkancts/mustpass/main/vk-default/api.txt b/external/vulkancts/mustpass/main/vk-default/api.txt
index 50ca7b9..1da9e13 100644
--- a/external/vulkancts/mustpass/main/vk-default/api.txt
+++ b/external/vulkancts/mustpass/main/vk-default/api.txt
@@ -3872,6 +3872,7 @@
dEQP-VK.api.device_init.create_device_unsupported_features.present_id_features_khr
dEQP-VK.api.device_init.create_device_unsupported_features.shader_subgroup_uniform_control_flow_features_khr
dEQP-VK.api.device_init.create_device_unsupported_features.workgroup_memory_explicit_layout_features_khr
+dEQP-VK.api.device_init.create_device_unsupported_features.ray_tracing_maintenance1_features_khr
dEQP-VK.api.device_init.create_device_unsupported_features.transform_feedback_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.corner_sampled_image_features_nv
dEQP-VK.api.device_init.create_device_unsupported_features.astc_decode_features_ext
@@ -3916,6 +3917,7 @@
dEQP-VK.api.device_init.create_device_unsupported_features.ray_tracing_motion_blur_features_nv
dEQP-VK.api.device_init.create_device_unsupported_features.ycbcr2_plane444_formats_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.fragment_density_map2_features_ext
+dEQP-VK.api.device_init.create_device_unsupported_features.image_compression_control_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.4444_formats_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.rasterization_order_attachment_access_features_arm
dEQP-VK.api.device_init.create_device_unsupported_features.rgba10_x6_formats_features_ext
@@ -3926,6 +3928,7 @@
dEQP-VK.api.device_init.create_device_unsupported_features.subpass_shading_features_huawei
dEQP-VK.api.device_init.create_device_unsupported_features.invocation_mask_features_huawei
dEQP-VK.api.device_init.create_device_unsupported_features.external_memory_rdma_features_nv
+dEQP-VK.api.device_init.create_device_unsupported_features.pipeline_properties_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.extended_dynamic_state2_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.color_write_enable_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.primitives_generated_query_features_ext
@@ -3937,6 +3940,8 @@
dEQP-VK.api.device_init.create_device_unsupported_features.descriptor_set_host_mapping_features_valve
dEQP-VK.api.device_init.create_device_unsupported_features.fragment_density_map_offset_features_qcom
dEQP-VK.api.device_init.create_device_unsupported_features.linear_color_attachment_features_nv
+dEQP-VK.api.device_init.create_device_unsupported_features.image_compression_control_swapchain_features_ext
+dEQP-VK.api.device_init.create_device_unsupported_features.subpass_merge_feedback_features_ext
dEQP-VK.api.device_init.create_device_unsupported_features.acceleration_structure_features_khr
dEQP-VK.api.device_init.create_device_unsupported_features.ray_tracing_pipeline_features_khr
dEQP-VK.api.device_init.create_device_unsupported_features.ray_query_features_khr
diff --git a/external/vulkancts/mustpass/main/vk-default/ray-tracing-pipeline.txt b/external/vulkancts/mustpass/main/vk-default/ray-tracing-pipeline.txt
index a4451d1..2b1954a 100644
--- a/external/vulkancts/mustpass/main/vk-default/ray-tracing-pipeline.txt
+++ b/external/vulkancts/mustpass/main/vk-default/ray-tracing-pipeline.txt
@@ -1028,6 +1028,26 @@
dEQP-VK.ray_tracing_pipeline.trace_rays_cmds.indirect_gpu.11_1_1
dEQP-VK.ray_tracing_pipeline.trace_rays_cmds.indirect_gpu.11_13_1
dEQP-VK.ray_tracing_pipeline.trace_rays_cmds.indirect_gpu.11_13_5
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.0_0_0
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.0_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.1_0_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.1_1_0
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.8_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.8_8_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.8_8_8
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.11_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.11_13_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_cpu.11_13_5
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.0_0_0
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.0_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.1_0_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.1_1_0
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.8_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.8_8_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.8_8_8
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.11_1_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.11_13_1
+dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_gpu.11_13_5
dEQP-VK.ray_tracing_pipeline.shader_binding_table.indexing_hit.sbt_offset_0.no_shaderrecord.0_0
dEQP-VK.ray_tracing_pipeline.shader_binding_table.indexing_hit.sbt_offset_0.no_shaderrecord.0_1
dEQP-VK.ray_tracing_pipeline.shader_binding_table.indexing_hit.sbt_offset_0.no_shaderrecord.0_2
@@ -7738,6 +7758,30 @@
dEQP-VK.ray_tracing_pipeline.acceleration_structures.instance_triangle_culling.gpu_built.index_uint32.notransform_ccw
dEQP-VK.ray_tracing_pipeline.acceleration_structures.instance_triangle_culling.gpu_built.index_uint32.notransform_nocull
dEQP-VK.ray_tracing_pipeline.acceleration_structures.instance_triangle_culling.gpu_built.index_uint32.notransform_ccw_nocull
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.ahit.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.ahit.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.ahit.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.ahit.16_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.chit.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.chit.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.chit.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.chit.16_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.isec.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.isec.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.isec.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.cpu_built.isec.16_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.ahit.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.ahit.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.ahit.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.ahit.16_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.chit.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.chit.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.chit.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.chit.16_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.isec.4_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.isec.4_bits_reverse
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.isec.16_bits
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.ray_cull_mask.gpu_built.isec.16_bits_reverse
dEQP-VK.ray_tracing_pipeline.acceleration_structures.dynamic_indexing.dynamic_indexing
dEQP-VK.ray_tracing_pipeline.acceleration_structures.empty.cpu_built.index_none.inactive_triangles
dEQP-VK.ray_tracing_pipeline.acceleration_structures.empty.cpu_built.index_none.inactive_instances
@@ -7787,6 +7831,20 @@
dEQP-VK.ray_tracing_pipeline.acceleration_structures.header_bottom_address.gpu_built.the_same_instances
dEQP-VK.ray_tracing_pipeline.acceleration_structures.header_bottom_address.gpu_built.different_instances
dEQP-VK.ray_tracing_pipeline.acceleration_structures.header_bottom_address.gpu_built.mix_same_diff_instances
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.cpu.memory.size
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.cpu.memory.pointer_count
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.cpu.buffer.size
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.cpu.buffer.pointer_count
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.gpu.memory.size
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.gpu.memory.pointer_count
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.gpu.buffer.size
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.query_pool_results.gpu.buffer.pointer_count
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.cpu.stage_as_copy_bit
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.cpu.stage_all_transfer
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.cpu.access_sbt_read
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.stage_as_copy_bit
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.stage_all_transfer
+dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.access_sbt_read
dEQP-VK.ray_tracing_pipeline.procedural_geometry.object_behind_bounding_boxes
dEQP-VK.ray_tracing_pipeline.procedural_geometry.triangle_in_between
dEQP-VK.ray_tracing_pipeline.indirect.build_structure
@@ -9507,3 +9565,35 @@
dEQP-VK.ray_tracing_pipeline.pipeline_no_null_shaders_flag.cpu.tri_and_box.stride_5.offset_7.no_libs.any_or_chit_or_isect
dEQP-VK.ray_tracing_pipeline.pipeline_no_null_shaders_flag.cpu.tri_and_box.stride_5.offset_7.no_libs.any_or_chit
dEQP-VK.ray_tracing_pipeline.pipeline_no_null_shaders_flag.cpu.tri_and_box.stride_5.offset_7.no_libs.any_or_chit_or_miss
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_graphics.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_graphics.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_graphics.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_graphics.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_compute.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_compute.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_compute.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.full_copy.submit_compute.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_graphics.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_graphics.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_graphics.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_graphics.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_compute.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_compute.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_compute.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_cpu.partial_copy.submit_compute.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_graphics.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_graphics.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_graphics.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_graphics.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_compute.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_compute.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_compute.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.full_copy.submit_compute.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_graphics.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_graphics.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_graphics.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_graphics.47x19x4
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_compute.11x17x1
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_compute.19x11x2
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_compute.23x47x3
+dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_gpu.partial_copy.submit_compute.47x19x4
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_ray_tracing_maintenance1.json b/external/vulkancts/scripts/src/extensions/VK_KHR_ray_tracing_maintenance1.json
new file mode 100644
index 0000000..737c8a3
--- /dev/null
+++ b/external/vulkancts/scripts/src/extensions/VK_KHR_ray_tracing_maintenance1.json
@@ -0,0 +1,14 @@
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR":
+ [
+ { "features": ["rayTracingMaintenance1"], "requirements": ["VK_KHR_ray_tracing_maintenance1"] }
+ ]
+ }
+}