Merge vk-gl-cts/vulkan-cts-1.2.7 into vk-gl-cts/vulkan-cts-1.3.0
authorMatthew Netsch <quic_mnetsch@quicinc.com>
Fri, 17 Sep 2021 19:33:24 +0000 (15:33 -0400)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Fri, 17 Sep 2021 20:27:27 +0000 (16:27 -0400)
Change-Id: I76cb05654f5fb575ce141f8c81d54e2192d53451

1  2 
external/vulkancts/framework/vulkan/vkDeviceExtensions.inl
external/vulkancts/framework/vulkan/vkDeviceFeatures2.inl
external/vulkancts/framework/vulkan/vkVulkan_c.inl
external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsm16bitStorageTests.cpp
external/vulkancts/scripts/gen_framework.py
external/vulkancts/scripts/src/extensions_data.txt
external/vulkancts/scripts/src/vulkan_core.h

@@@ -79,23 -79,6 +79,24 @@@ static const char* s_allowedDeviceKhrEx
        "VK_KHR_shader_subgroup_uniform_control_flow",
        "VK_KHR_present_id",
        "VK_KHR_present_wait",
 +      "VK_KHR_format_feature_flags2",
 +      "VK_KHR_maintenance4",
 +      "VK_KHR_dynamic_rendering",
 +      "VK_EXT_extended_dynamic_state",
 +      "VK_EXT_extended_dynamic_state2",
 +      "VK_EXT_4444_formats",
 +      "VK_KHR_shader_integer_dot_product",
 +      "VK_EXT_image_robustness",
 +      "VK_EXT_inline_uniform_block",
 +      "VK_EXT_pipeline_creation_cache_control",
 +      "VK_EXT_pipeline_creation_feedback",
 +      "VK_EXT_private_data",
 +      "VK_EXT_shader_demote_to_helper_invocation",
 +      "VK_EXT_subgroup_size_control",
 +      "VK_EXT_texel_buffer_alignment",
 +      "VK_EXT_texture_compression_astc_hdr",
 +      "VK_EXT_tooling_info",
 +      "VK_EXT_ycbcr_2plane_444_formats",
+       "VK_KHR_shader_integer_dot_product",
  };
  
  /* WARNING: This is auto-generated file. Do not modify, since changes will
   * be lost! Modify the generating script instead.
   */
 -VkPhysicalDeviceConditionalRenderingFeaturesEXT               deviceConditionalRenderingFeaturesEXT[count];
 -VkPhysicalDeviceScalarBlockLayoutFeatures                     deviceScalarBlockLayoutFeatures[count];
 -VkPhysicalDevicePerformanceQueryFeaturesKHR                   devicePerformanceQueryFeaturesKHR[count];
 -VkPhysicalDevice16BitStorageFeatures                          device16BitStorageFeatures[count];
 -VkPhysicalDeviceMultiviewFeatures                                     deviceMultiviewFeatures[count];
 -VkPhysicalDeviceProtectedMemoryFeatures                               deviceProtectedMemoryFeatures[count];
 -VkPhysicalDeviceSamplerYcbcrConversionFeatures                deviceSamplerYcbcrConversionFeatures[count];
 -VkPhysicalDeviceVariablePointersFeatures                      deviceVariablePointersFeatures[count];
 -VkPhysicalDevice8BitStorageFeatures                                   device8BitStorageFeatures[count];
 -VkPhysicalDeviceShaderAtomicInt64Features                     deviceShaderAtomicInt64Features[count];
 -VkPhysicalDeviceShaderFloat16Int8Features                     deviceShaderFloat16Int8Features[count];
 -VkPhysicalDeviceBufferDeviceAddressFeaturesEXT                deviceBufferDeviceAddressFeaturesEXT[count];
 -VkPhysicalDeviceBufferDeviceAddressFeatures                   deviceBufferDeviceAddressFeatures[count];
 -VkPhysicalDeviceDescriptorIndexingFeatures                    deviceDescriptorIndexingFeatures[count];
 -VkPhysicalDeviceTimelineSemaphoreFeatures                     deviceTimelineSemaphoreFeatures[count];
 -VkPhysicalDeviceFragmentDensityMapFeaturesEXT         deviceFragmentDensityMapFeaturesEXT[count];
 -VkPhysicalDeviceFragmentDensityMap2FeaturesEXT                deviceFragmentDensityMap2FeaturesEXT[count];
 -VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR    deviceShaderIntegerDotProductFeaturesKHR[count];
 -
 -const bool isConditionalRenderingFeaturesEXT  = checkExtension(properties, "VK_EXT_conditional_rendering");
 -const bool isScalarBlockLayoutFeatures                        = checkExtension(properties, "VK_EXT_scalar_block_layout")                      || context.contextSupports(vk::ApiVersion(1, 2, 0));
 -const bool isPerformanceQueryFeaturesKHR              = checkExtension(properties, "VK_KHR_performance_query");
 -const bool is16BitStorageFeatures                             = checkExtension(properties, "VK_KHR_16bit_storage")                            || context.contextSupports(vk::ApiVersion(1, 1, 0));
 -const bool isMultiviewFeatures                                        = checkExtension(properties, "VK_KHR_multiview")                                        || context.contextSupports(vk::ApiVersion(1, 1, 0));
 -const bool isProtectedMemoryFeatures                  =                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 1, 0));
 -const bool isSamplerYcbcrConversionFeatures           = checkExtension(properties, "VK_KHR_sampler_ycbcr_conversion")         || context.contextSupports(vk::ApiVersion(1, 1, 0));
 -const bool isVariablePointersFeatures                 = checkExtension(properties, "VK_KHR_variable_pointers")                        || context.contextSupports(vk::ApiVersion(1, 1, 0));
 -const bool is8BitStorageFeatures                              = checkExtension(properties, "VK_KHR_8bit_storage")                                     || context.contextSupports(vk::ApiVersion(1, 2, 0));
 -const bool isShaderAtomicInt64Features                        = checkExtension(properties, "VK_KHR_shader_atomic_int64")                      || context.contextSupports(vk::ApiVersion(1, 2, 0));
 -const bool isShaderFloat16Int8Features                        = checkExtension(properties, "VK_KHR_shader_float16_int8")                      || context.contextSupports(vk::ApiVersion(1, 2, 0));
 -const bool isBufferDeviceAddressFeaturesEXT           = checkExtension(properties, "VK_EXT_buffer_device_address");
 -const bool isBufferDeviceAddressFeatures              = checkExtension(properties, "VK_KHR_buffer_device_address")            || context.contextSupports(vk::ApiVersion(1, 2, 0));
 -const bool isDescriptorIndexingFeatures                       = checkExtension(properties, "VK_EXT_descriptor_indexing")                      || context.contextSupports(vk::ApiVersion(1, 2, 0));
 -const bool isTimelineSemaphoreFeatures                        = checkExtension(properties, "VK_KHR_timeline_semaphore")                       || context.contextSupports(vk::ApiVersion(1, 2, 0));
 -const bool isFragmentDensityMapFeaturesEXT            = checkExtension(properties, "VK_EXT_fragment_density_map");
 -const bool isFragmentDensityMap2FeaturesEXT           = checkExtension(properties, "VK_EXT_fragment_density_map2");
 -const bool isShaderIntegerDotProductFeaturesKHR       = checkExtension(properties, "VK_KHR_shader_integer_dot_product");
 +VkPhysicalDevice4444FormatsFeaturesEXT                                                        device4444FormatsFeaturesEXT[count];
 +VkPhysicalDevice8BitStorageFeatures                                                           device8BitStorageFeatures[count];
 +VkPhysicalDevice16BitStorageFeatures                                                  device16BitStorageFeatures[count];
 +VkPhysicalDeviceAccelerationStructureFeaturesKHR                              deviceAccelerationStructureFeaturesKHR[count];
 +VkPhysicalDeviceASTCDecodeFeaturesEXT                                                 deviceASTCDecodeFeaturesEXT[count];
 +VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT                             deviceBlendOperationAdvancedFeaturesEXT[count];
 +VkPhysicalDeviceBufferDeviceAddressFeaturesEXT                                        deviceBufferDeviceAddressFeaturesEXT[count];
 +VkPhysicalDeviceBufferDeviceAddressFeatures                                           deviceBufferDeviceAddressFeatures[count];
 +VkPhysicalDeviceConditionalRenderingFeaturesEXT                                       deviceConditionalRenderingFeaturesEXT[count];
 +VkPhysicalDeviceCustomBorderColorFeaturesEXT                                  deviceCustomBorderColorFeaturesEXT[count];
 +VkPhysicalDeviceColorWriteEnableFeaturesEXT                                           deviceColorWriteEnableFeaturesEXT[count];
 +VkPhysicalDeviceDescriptorIndexingFeatures                                            deviceDescriptorIndexingFeatures[count];
 +VkPhysicalDeviceDepthClipEnableFeaturesEXT                                            deviceDepthClipEnableFeaturesEXT[count];
 +VkPhysicalDeviceDynamicRenderingFeatures                                              deviceDynamicRenderingFeatures[count];
 +VkPhysicalDeviceExtendedDynamicStateFeaturesEXT                                       deviceExtendedDynamicStateFeaturesEXT[count];
 +VkPhysicalDeviceExtendedDynamicState2FeaturesEXT                              deviceExtendedDynamicState2FeaturesEXT[count];
 +VkPhysicalDeviceFragmentDensityMapFeaturesEXT                                 deviceFragmentDensityMapFeaturesEXT[count];
 +VkPhysicalDeviceFragmentDensityMap2FeaturesEXT                                        deviceFragmentDensityMap2FeaturesEXT[count];
 +VkPhysicalDeviceFragmentShadingRateFeaturesKHR                                        deviceFragmentShadingRateFeaturesKHR[count];
 +VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT                                        deviceGlobalPriorityQueryFeaturesEXT[count];
 +VkPhysicalDeviceInlineUniformBlockFeatures                                            deviceInlineUniformBlockFeatures[count];
 +VkPhysicalDeviceIndexTypeUint8FeaturesEXT                                             deviceIndexTypeUint8FeaturesEXT[count];
 +VkPhysicalDeviceImagelessFramebufferFeatures                                  deviceImagelessFramebufferFeatures[count];
 +VkPhysicalDeviceImageRobustnessFeatures                                                       deviceImageRobustnessFeatures[count];
 +VkPhysicalDeviceHostQueryResetFeatures                                                        deviceHostQueryResetFeatures[count];
 +VkPhysicalDeviceLineRasterizationFeaturesEXT                                  deviceLineRasterizationFeaturesEXT[count];
 +VkPhysicalDeviceMaintenance4Features                                                  deviceMaintenance4Features[count];
 +VkPhysicalDeviceMultiviewFeatures                                                             deviceMultiviewFeatures[count];
 +VkPhysicalDeviceMultiDrawFeaturesEXT                                                  deviceMultiDrawFeaturesEXT[count];
 +VkPhysicalDeviceMemoryPriorityFeaturesEXT                                             deviceMemoryPriorityFeaturesEXT[count];
 +VkPhysicalDeviceDeviceMemoryReportFeaturesEXT                                 deviceDeviceMemoryReportFeaturesEXT[count];
 +VkPhysicalDevicePerformanceQueryFeaturesKHR                                           devicePerformanceQueryFeaturesKHR[count];
 +VkPhysicalDevicePipelineCreationCacheControlFeatures                  devicePipelineCreationCacheControlFeatures[count];
 +VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR                       devicePipelineExecutablePropertiesFeaturesKHR[count];
 +VkPhysicalDevicePresentIdFeaturesKHR                                                  devicePresentIdFeaturesKHR[count];
 +VkPhysicalDevicePresentWaitFeaturesKHR                                                        devicePresentWaitFeaturesKHR[count];
 +VkPhysicalDeviceProtectedMemoryFeatures                                                       deviceProtectedMemoryFeatures[count];
 +VkPhysicalDeviceProvokingVertexFeaturesEXT                                            deviceProvokingVertexFeaturesEXT[count];
 +VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT                       devicePrimitiveTopologyListRestartFeaturesEXT[count];
 +VkPhysicalDevicePrivateDataFeatures                                                           devicePrivateDataFeatures[count];
 +VkPhysicalDeviceRayTracingPipelineFeaturesKHR                                 deviceRayTracingPipelineFeaturesKHR[count];
 +VkPhysicalDeviceRayQueryFeaturesKHR                                                           deviceRayQueryFeaturesKHR[count];
 +VkPhysicalDeviceRobustness2FeaturesEXT                                                        deviceRobustness2FeaturesEXT[count];
 +VkPhysicalDeviceSamplerYcbcrConversionFeatures                                        deviceSamplerYcbcrConversionFeatures[count];
 +VkPhysicalDeviceScalarBlockLayoutFeatures                                             deviceScalarBlockLayoutFeatures[count];
 +VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures                           deviceSeparateDepthStencilLayoutsFeatures[count];
 +VkPhysicalDeviceShaderAtomicInt64Features                                             deviceShaderAtomicInt64Features[count];
 +VkPhysicalDeviceShaderAtomicFloatFeaturesEXT                                  deviceShaderAtomicFloatFeaturesEXT[count];
 +VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT                                 deviceShaderAtomicFloat2FeaturesEXT[count];
 +VkPhysicalDeviceShaderFloat16Int8Features                                             deviceShaderFloat16Int8Features[count];
 +VkPhysicalDeviceShaderClockFeaturesKHR                                                        deviceShaderClockFeaturesKHR[count];
 +VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures                        deviceShaderDemoteToHelperInvocationFeatures[count];
 +VkPhysicalDeviceShaderDrawParametersFeatures                                  deviceShaderDrawParametersFeatures[count];
 +VkPhysicalDeviceShaderIntegerDotProductFeatures                                       deviceShaderIntegerDotProductFeatures[count];
++VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR                            deviceShaderIntegerDotProductFeaturesKHR[count];
 +VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures                           deviceShaderSubgroupExtendedTypesFeatures[count];
 +VkPhysicalDeviceShaderTerminateInvocationFeatures                             deviceShaderTerminateInvocationFeatures[count];
 +VkPhysicalDeviceSubgroupSizeControlFeatures                                           deviceSubgroupSizeControlFeatures[count];
 +VkPhysicalDeviceSynchronization2Features                                              deviceSynchronization2Features[count];
 +VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT                            deviceFragmentShaderInterlockFeaturesEXT[count];
 +VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT                                       deviceTexelBufferAlignmentFeaturesEXT[count];
 +VkPhysicalDeviceTextureCompressionASTCHDRFeatures                             deviceTextureCompressionASTCHDRFeatures[count];
 +VkPhysicalDeviceTimelineSemaphoreFeatures                                             deviceTimelineSemaphoreFeatures[count];
 +VkPhysicalDeviceTransformFeedbackFeaturesEXT                                  deviceTransformFeedbackFeaturesEXT[count];
 +VkPhysicalDeviceUniformBufferStandardLayoutFeatures                           deviceUniformBufferStandardLayoutFeatures[count];
 +VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR              deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[count];
 +VkPhysicalDeviceVariablePointersFeatures                                              deviceVariablePointersFeatures[count];
 +VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT                             deviceVertexAttributeDivisorFeaturesEXT[count];
 +VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT                            deviceVertexInputDynamicStateFeaturesEXT[count];
 +VkPhysicalDeviceVulkanMemoryModelFeaturesKHR                                  deviceVulkanMemoryModelFeaturesKHR[count];
 +VkPhysicalDeviceYcbcrImageArraysFeaturesEXT                                           deviceYcbcrImageArraysFeaturesEXT[count];
 +VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT                              deviceYcbcr2Plane444FormatsFeaturesEXT[count];
 +VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures                 deviceZeroInitializeWorkgroupMemoryFeatures[count];
 +
 +const bool is4444FormatsFeaturesEXT                                           = checkExtension(properties, "VK_EXT_4444_formats")                                                     || context.contextSupports(vk::ApiVersion(1, 3, 0));
 +const bool is8BitStorageFeatures                                              = checkExtension(properties, "VK_KHR_8bit_storage")                                                     || context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool is16BitStorageFeatures                                             = checkExtension(properties, "VK_KHR_16bit_storage")                                            || context.contextSupports(vk::ApiVersion(1, 1, 0));
 +const bool isAccelerationStructureFeaturesKHR                 = checkExtension(properties, "VK_KHR_acceleration_structure");
 +const bool isASTCDecodeFeaturesEXT                                            = checkExtension(properties, "VK_EXT_astc_decode_mode");
 +const bool isBlendOperationAdvancedFeaturesEXT                        = checkExtension(properties, "VK_EXT_blend_operation_advanced");
 +const bool isBufferDeviceAddressFeaturesEXT                           = checkExtension(properties, "VK_EXT_buffer_device_address");
 +const bool isBufferDeviceAddressFeatures                              = checkExtension(properties, "VK_KHR_buffer_device_address")                            || context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isConditionalRenderingFeaturesEXT                  = checkExtension(properties, "VK_EXT_conditional_rendering");
 +const bool isCustomBorderColorFeaturesEXT                             = checkExtension(properties, "VK_EXT_custom_border_color");
 +const bool isColorWriteEnableFeaturesEXT                              = checkExtension(properties, "VK_EXT_color_write_enable");
 +const bool isDescriptorIndexingFeatures                                       = checkExtension(properties, "VK_EXT_descriptor_indexing")                                      || context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isDepthClipEnableFeaturesEXT                                       = checkExtension(properties, "VK_EXT_depth_clip_enable");
 +const bool isDynamicRenderingFeatures                                 = checkExtension(properties, "VK_KHR_dynamic_rendering")                                        || context.contextSupports(vk::ApiVersion(1, 3, 0));
 +const bool isExtendedDynamicStateFeaturesEXT                  = checkExtension(properties, "VK_EXT_extended_dynamic_state")                           || context.contextSupports(vk::ApiVersion(1, 3, 0));
 +const bool isExtendedDynamicState2FeaturesEXT                 = checkExtension(properties, "VK_EXT_extended_dynamic_state2");
 +const bool isFragmentDensityMapFeaturesEXT                            = checkExtension(properties, "VK_EXT_fragment_density_map");
 +const bool isFragmentDensityMap2FeaturesEXT                           = checkExtension(properties, "VK_EXT_fragment_density_map2");
 +const bool isFragmentShadingRateFeaturesKHR                           = checkExtension(properties, "VK_KHR_fragment_shading_rate");
 +const bool isGlobalPriorityQueryFeaturesEXT                           = checkExtension(properties, "VK_EXT_global_priority_query");
 +const bool isInlineUniformBlockFeatures                                       = checkExtension(properties, "VK_EXT_inline_uniform_block")                                     || context.contextSupports(vk::ApiVersion(1, 3, 0));
 +const bool isIndexTypeUint8FeaturesEXT                                        = checkExtension(properties, "VK_EXT_index_type_uint8");
 +const bool isImagelessFramebufferFeatures                             = checkExtension(properties, "VK_KHR_imageless_framebuffer")                            || context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isImageRobustnessFeatures                                  = checkExtension(properties, "VK_EXT_image_robustness")                                         || context.contextSupports(vk::ApiVersion(1, 3, 0));
 +const bool isHostQueryResetFeatures                                           = checkExtension(properties, "VK_EXT_host_query_reset")                                         || context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isLineRasterizationFeaturesEXT                             = checkExtension(properties, "VK_EXT_line_rasterization");
 +const bool isMaintenance4Features                                             = checkExtension(properties, "VK_KHR_maintenance4")                                                     || context.contextSupports(vk::ApiVersion(1, 3, 0));
 +const bool isMultiviewFeatures                                                        = checkExtension(properties, "VK_KHR_multiview")                                                        || context.contextSupports(vk::ApiVersion(1, 1, 0));
 +const bool isMultiDrawFeaturesEXT                                             = checkExtension(properties, "VK_EXT_multi_draw");
 +const bool isMemoryPriorityFeaturesEXT                                        = checkExtension(properties, "VK_EXT_memory_priority");
 +const bool isDeviceMemoryReportFeaturesEXT                            = checkExtension(properties, "VK_EXT_device_memory_report");
 +const bool isPerformanceQueryFeaturesKHR                              = checkExtension(properties, "VK_KHR_performance_query");
 +const bool isPipelineCreationCacheControlFeatures             = checkExtension(properties, "VK_EXT_pipeline_creation_cache_control")          || context.contextSupports(vk::ApiVersion(1, 3, 0));
 +const bool isPipelineExecutablePropertiesFeaturesKHR  = checkExtension(properties, "VK_KHR_pipeline_executable_properties");
 +const bool isPresentIdFeaturesKHR                                             = checkExtension(properties, "VK_KHR_present_id");
 +const bool isPresentWaitFeaturesKHR                                           = checkExtension(properties, "VK_KHR_present_wait");
 +const bool isProtectedMemoryFeatures                                  =                                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 1, 0));
 +const bool isProvokingVertexFeaturesEXT                                       = checkExtension(properties, "VK_EXT_provoking_vertex");
 +const bool isPrimitiveTopologyListRestartFeaturesEXT  = checkExtension(properties, "VK_EXT_primitive_topology_list_restart");
 +const bool isPrivateDataFeatures                                              = checkExtension(properties, "VK_EXT_private_data")                                                     || context.contextSupports(vk::ApiVersion(1, 3, 0));
 +const bool isRayTracingPipelineFeaturesKHR                            = checkExtension(properties, "VK_KHR_ray_tracing_pipeline");
 +const bool isRayQueryFeaturesKHR                                              = checkExtension(properties, "VK_KHR_ray_query");
 +const bool isRobustness2FeaturesEXT                                           = checkExtension(properties, "VK_EXT_robustness2");
 +const bool isSamplerYcbcrConversionFeatures                           = checkExtension(properties, "VK_KHR_sampler_ycbcr_conversion")                         || context.contextSupports(vk::ApiVersion(1, 1, 0));
 +const bool isScalarBlockLayoutFeatures                                        = checkExtension(properties, "VK_EXT_scalar_block_layout")                                      || context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isSeparateDepthStencilLayoutsFeatures              = checkExtension(properties, "VK_KHR_separate_depth_stencil_layouts")           || context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isShaderAtomicInt64Features                                        = checkExtension(properties, "VK_KHR_shader_atomic_int64")                                      || context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isShaderAtomicFloatFeaturesEXT                             = checkExtension(properties, "VK_EXT_shader_atomic_float");
 +const bool isShaderAtomicFloat2FeaturesEXT                            = checkExtension(properties, "VK_EXT_shader_atomic_float2");
 +const bool isShaderFloat16Int8Features                                        = checkExtension(properties, "VK_KHR_shader_float16_int8")                                      || context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isShaderClockFeaturesKHR                                           = checkExtension(properties, "VK_KHR_shader_clock");
 +const bool isShaderDemoteToHelperInvocationFeatures           = checkExtension(properties, "VK_EXT_shader_demote_to_helper_invocation")       || context.contextSupports(vk::ApiVersion(1, 3, 0));
 +const bool isShaderDrawParametersFeatures                             =                                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 1, 0));
 +const bool isShaderIntegerDotProductFeatures                  = checkExtension(properties, "VK_KHR_shader_integer_dot_product")                       || context.contextSupports(vk::ApiVersion(1, 3, 0));
++const bool isShaderIntegerDotProductFeaturesKHR                       =                                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 3, 0));
 +const bool isShaderSubgroupExtendedTypesFeatures              = checkExtension(properties, "VK_KHR_shader_subgroup_extended_types")           || context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isShaderTerminateInvocationFeatures                        = checkExtension(properties, "VK_KHR_shader_terminate_invocation")                      || context.contextSupports(vk::ApiVersion(1, 3, 0));
 +const bool isSubgroupSizeControlFeatures                              = checkExtension(properties, "VK_EXT_subgroup_size_control")                            || context.contextSupports(vk::ApiVersion(1, 3, 0));
 +const bool isSynchronization2Features                                 = checkExtension(properties, "VK_KHR_synchronization2")                                         || context.contextSupports(vk::ApiVersion(1, 3, 0));
 +const bool isFragmentShaderInterlockFeaturesEXT                       = checkExtension(properties, "VK_EXT_fragment_shader_interlock");
 +const bool isTexelBufferAlignmentFeaturesEXT                  = checkExtension(properties, "VK_EXT_texel_buffer_alignment")                           || context.contextSupports(vk::ApiVersion(1, 3, 0));
 +const bool isTextureCompressionASTCHDRFeatures                        = checkExtension(properties, "VK_EXT_texture_compression_astc_hdr")                     || context.contextSupports(vk::ApiVersion(1, 3, 0));
 +const bool isTimelineSemaphoreFeatures                                        = checkExtension(properties, "VK_KHR_timeline_semaphore")                                       || context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isTransformFeedbackFeaturesEXT                             = checkExtension(properties, "VK_EXT_transform_feedback");
 +const bool isUniformBufferStandardLayoutFeatures              = checkExtension(properties, "VK_KHR_uniform_buffer_standard_layout")           || context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isWorkgroupMemoryExplicitLayoutFeaturesKHR = checkExtension(properties, "VK_KHR_workgroup_memory_explicit_layout");
 +const bool isVariablePointersFeatures                                 = checkExtension(properties, "VK_KHR_variable_pointers")                                        || context.contextSupports(vk::ApiVersion(1, 1, 0));
 +const bool isVertexAttributeDivisorFeaturesEXT                        = checkExtension(properties, "VK_EXT_vertex_attribute_divisor");
 +const bool isVertexInputDynamicStateFeaturesEXT                       = checkExtension(properties, "VK_EXT_vertex_input_dynamic_state");
 +const bool isVulkanMemoryModelFeaturesKHR                             =                                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isYcbcrImageArraysFeaturesEXT                              = checkExtension(properties, "VK_EXT_ycbcr_image_arrays");
 +const bool isYcbcr2Plane444FormatsFeaturesEXT                 = checkExtension(properties, "VK_EXT_ycbcr_2plane_444_formats")                         || context.contextSupports(vk::ApiVersion(1, 3, 0));
 +const bool isZeroInitializeWorkgroupMemoryFeatures            = checkExtension(properties, "VK_KHR_zero_initialize_workgroup_memory")         || context.contextSupports(vk::ApiVersion(1, 3, 0));
  
  for (int ndx = 0; ndx < count; ++ndx)
  {
 -      deMemset(&deviceConditionalRenderingFeaturesEXT[ndx],   0xFF * ndx, sizeof(VkPhysicalDeviceConditionalRenderingFeaturesEXT));
 -      deMemset(&deviceScalarBlockLayoutFeatures[ndx],                 0xFF * ndx, sizeof(VkPhysicalDeviceScalarBlockLayoutFeatures));
 -      deMemset(&devicePerformanceQueryFeaturesKHR[ndx],               0xFF * ndx, sizeof(VkPhysicalDevicePerformanceQueryFeaturesKHR));
 -      deMemset(&device16BitStorageFeatures[ndx],                              0xFF * ndx, sizeof(VkPhysicalDevice16BitStorageFeatures));
 -      deMemset(&deviceMultiviewFeatures[ndx],                                 0xFF * ndx, sizeof(VkPhysicalDeviceMultiviewFeatures));
 -      deMemset(&deviceProtectedMemoryFeatures[ndx],                   0xFF * ndx, sizeof(VkPhysicalDeviceProtectedMemoryFeatures));
 -      deMemset(&deviceSamplerYcbcrConversionFeatures[ndx],    0xFF * ndx, sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures));
 -      deMemset(&deviceVariablePointersFeatures[ndx],                  0xFF * ndx, sizeof(VkPhysicalDeviceVariablePointersFeatures));
 -      deMemset(&device8BitStorageFeatures[ndx],                               0xFF * ndx, sizeof(VkPhysicalDevice8BitStorageFeatures));
 -      deMemset(&deviceShaderAtomicInt64Features[ndx],                 0xFF * ndx, sizeof(VkPhysicalDeviceShaderAtomicInt64Features));
 -      deMemset(&deviceShaderFloat16Int8Features[ndx],                 0xFF * ndx, sizeof(VkPhysicalDeviceShaderFloat16Int8Features));
 -      deMemset(&deviceBufferDeviceAddressFeaturesEXT[ndx],    0xFF * ndx, sizeof(VkPhysicalDeviceBufferDeviceAddressFeaturesEXT));
 -      deMemset(&deviceBufferDeviceAddressFeatures[ndx],               0xFF * ndx, sizeof(VkPhysicalDeviceBufferDeviceAddressFeatures));
 -      deMemset(&deviceDescriptorIndexingFeatures[ndx],                0xFF * ndx, sizeof(VkPhysicalDeviceDescriptorIndexingFeatures));
 -      deMemset(&deviceTimelineSemaphoreFeatures[ndx],                 0xFF * ndx, sizeof(VkPhysicalDeviceTimelineSemaphoreFeatures));
 -      deMemset(&deviceFragmentDensityMapFeaturesEXT[ndx],             0xFF * ndx, sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT));
 -      deMemset(&deviceFragmentDensityMap2FeaturesEXT[ndx],    0xFF * ndx, sizeof(VkPhysicalDeviceFragmentDensityMap2FeaturesEXT));
 -      deMemset(&deviceShaderIntegerDotProductFeaturesKHR[ndx],0xFF * ndx, sizeof(VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR));
 +      deMemset(&device4444FormatsFeaturesEXT[ndx],                                    0xFF * ndx, sizeof(VkPhysicalDevice4444FormatsFeaturesEXT));
 +      deMemset(&device8BitStorageFeatures[ndx],                                               0xFF * ndx, sizeof(VkPhysicalDevice8BitStorageFeatures));
 +      deMemset(&device16BitStorageFeatures[ndx],                                              0xFF * ndx, sizeof(VkPhysicalDevice16BitStorageFeatures));
 +      deMemset(&deviceAccelerationStructureFeaturesKHR[ndx],                  0xFF * ndx, sizeof(VkPhysicalDeviceAccelerationStructureFeaturesKHR));
 +      deMemset(&deviceASTCDecodeFeaturesEXT[ndx],                                             0xFF * ndx, sizeof(VkPhysicalDeviceASTCDecodeFeaturesEXT));
 +      deMemset(&deviceBlendOperationAdvancedFeaturesEXT[ndx],                 0xFF * ndx, sizeof(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT));
 +      deMemset(&deviceBufferDeviceAddressFeaturesEXT[ndx],                    0xFF * ndx, sizeof(VkPhysicalDeviceBufferDeviceAddressFeaturesEXT));
 +      deMemset(&deviceBufferDeviceAddressFeatures[ndx],                               0xFF * ndx, sizeof(VkPhysicalDeviceBufferDeviceAddressFeatures));
 +      deMemset(&deviceConditionalRenderingFeaturesEXT[ndx],                   0xFF * ndx, sizeof(VkPhysicalDeviceConditionalRenderingFeaturesEXT));
 +      deMemset(&deviceCustomBorderColorFeaturesEXT[ndx],                              0xFF * ndx, sizeof(VkPhysicalDeviceCustomBorderColorFeaturesEXT));
 +      deMemset(&deviceColorWriteEnableFeaturesEXT[ndx],                               0xFF * ndx, sizeof(VkPhysicalDeviceColorWriteEnableFeaturesEXT));
 +      deMemset(&deviceDescriptorIndexingFeatures[ndx],                                0xFF * ndx, sizeof(VkPhysicalDeviceDescriptorIndexingFeatures));
 +      deMemset(&deviceDepthClipEnableFeaturesEXT[ndx],                                0xFF * ndx, sizeof(VkPhysicalDeviceDepthClipEnableFeaturesEXT));
 +      deMemset(&deviceDynamicRenderingFeatures[ndx],                                  0xFF * ndx, sizeof(VkPhysicalDeviceDynamicRenderingFeatures));
 +      deMemset(&deviceExtendedDynamicStateFeaturesEXT[ndx],                   0xFF * ndx, sizeof(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT));
 +      deMemset(&deviceExtendedDynamicState2FeaturesEXT[ndx],                  0xFF * ndx, sizeof(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT));
 +      deMemset(&deviceFragmentDensityMapFeaturesEXT[ndx],                             0xFF * ndx, sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT));
 +      deMemset(&deviceFragmentDensityMap2FeaturesEXT[ndx],                    0xFF * ndx, sizeof(VkPhysicalDeviceFragmentDensityMap2FeaturesEXT));
 +      deMemset(&deviceFragmentShadingRateFeaturesKHR[ndx],                    0xFF * ndx, sizeof(VkPhysicalDeviceFragmentShadingRateFeaturesKHR));
 +      deMemset(&deviceGlobalPriorityQueryFeaturesEXT[ndx],                    0xFF * ndx, sizeof(VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT));
 +      deMemset(&deviceInlineUniformBlockFeatures[ndx],                                0xFF * ndx, sizeof(VkPhysicalDeviceInlineUniformBlockFeatures));
 +      deMemset(&deviceIndexTypeUint8FeaturesEXT[ndx],                                 0xFF * ndx, sizeof(VkPhysicalDeviceIndexTypeUint8FeaturesEXT));
 +      deMemset(&deviceImagelessFramebufferFeatures[ndx],                              0xFF * ndx, sizeof(VkPhysicalDeviceImagelessFramebufferFeatures));
 +      deMemset(&deviceImageRobustnessFeatures[ndx],                                   0xFF * ndx, sizeof(VkPhysicalDeviceImageRobustnessFeatures));
 +      deMemset(&deviceHostQueryResetFeatures[ndx],                                    0xFF * ndx, sizeof(VkPhysicalDeviceHostQueryResetFeatures));
 +      deMemset(&deviceLineRasterizationFeaturesEXT[ndx],                              0xFF * ndx, sizeof(VkPhysicalDeviceLineRasterizationFeaturesEXT));
 +      deMemset(&deviceMaintenance4Features[ndx],                                              0xFF * ndx, sizeof(VkPhysicalDeviceMaintenance4Features));
 +      deMemset(&deviceMultiviewFeatures[ndx],                                                 0xFF * ndx, sizeof(VkPhysicalDeviceMultiviewFeatures));
 +      deMemset(&deviceMultiDrawFeaturesEXT[ndx],                                              0xFF * ndx, sizeof(VkPhysicalDeviceMultiDrawFeaturesEXT));
 +      deMemset(&deviceMemoryPriorityFeaturesEXT[ndx],                                 0xFF * ndx, sizeof(VkPhysicalDeviceMemoryPriorityFeaturesEXT));
 +      deMemset(&deviceDeviceMemoryReportFeaturesEXT[ndx],                             0xFF * ndx, sizeof(VkPhysicalDeviceDeviceMemoryReportFeaturesEXT));
 +      deMemset(&devicePerformanceQueryFeaturesKHR[ndx],                               0xFF * ndx, sizeof(VkPhysicalDevicePerformanceQueryFeaturesKHR));
 +      deMemset(&devicePipelineCreationCacheControlFeatures[ndx],              0xFF * ndx, sizeof(VkPhysicalDevicePipelineCreationCacheControlFeatures));
 +      deMemset(&devicePipelineExecutablePropertiesFeaturesKHR[ndx],   0xFF * ndx, sizeof(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR));
 +      deMemset(&devicePresentIdFeaturesKHR[ndx],                                              0xFF * ndx, sizeof(VkPhysicalDevicePresentIdFeaturesKHR));
 +      deMemset(&devicePresentWaitFeaturesKHR[ndx],                                    0xFF * ndx, sizeof(VkPhysicalDevicePresentWaitFeaturesKHR));
 +      deMemset(&deviceProtectedMemoryFeatures[ndx],                                   0xFF * ndx, sizeof(VkPhysicalDeviceProtectedMemoryFeatures));
 +      deMemset(&deviceProvokingVertexFeaturesEXT[ndx],                                0xFF * ndx, sizeof(VkPhysicalDeviceProvokingVertexFeaturesEXT));
 +      deMemset(&devicePrimitiveTopologyListRestartFeaturesEXT[ndx],   0xFF * ndx, sizeof(VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT));
 +      deMemset(&devicePrivateDataFeatures[ndx],                                               0xFF * ndx, sizeof(VkPhysicalDevicePrivateDataFeatures));
 +      deMemset(&deviceRayTracingPipelineFeaturesKHR[ndx],                             0xFF * ndx, sizeof(VkPhysicalDeviceRayTracingPipelineFeaturesKHR));
 +      deMemset(&deviceRayQueryFeaturesKHR[ndx],                                               0xFF * ndx, sizeof(VkPhysicalDeviceRayQueryFeaturesKHR));
 +      deMemset(&deviceRobustness2FeaturesEXT[ndx],                                    0xFF * ndx, sizeof(VkPhysicalDeviceRobustness2FeaturesEXT));
 +      deMemset(&deviceSamplerYcbcrConversionFeatures[ndx],                    0xFF * ndx, sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures));
 +      deMemset(&deviceScalarBlockLayoutFeatures[ndx],                                 0xFF * ndx, sizeof(VkPhysicalDeviceScalarBlockLayoutFeatures));
 +      deMemset(&deviceSeparateDepthStencilLayoutsFeatures[ndx],               0xFF * ndx, sizeof(VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures));
 +      deMemset(&deviceShaderAtomicInt64Features[ndx],                                 0xFF * ndx, sizeof(VkPhysicalDeviceShaderAtomicInt64Features));
 +      deMemset(&deviceShaderAtomicFloatFeaturesEXT[ndx],                              0xFF * ndx, sizeof(VkPhysicalDeviceShaderAtomicFloatFeaturesEXT));
 +      deMemset(&deviceShaderAtomicFloat2FeaturesEXT[ndx],                             0xFF * ndx, sizeof(VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT));
 +      deMemset(&deviceShaderFloat16Int8Features[ndx],                                 0xFF * ndx, sizeof(VkPhysicalDeviceShaderFloat16Int8Features));
 +      deMemset(&deviceShaderClockFeaturesKHR[ndx],                                    0xFF * ndx, sizeof(VkPhysicalDeviceShaderClockFeaturesKHR));
 +      deMemset(&deviceShaderDemoteToHelperInvocationFeatures[ndx],    0xFF * ndx, sizeof(VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures));
 +      deMemset(&deviceShaderDrawParametersFeatures[ndx],                              0xFF * ndx, sizeof(VkPhysicalDeviceShaderDrawParametersFeatures));
 +      deMemset(&deviceShaderIntegerDotProductFeatures[ndx],                   0xFF * ndx, sizeof(VkPhysicalDeviceShaderIntegerDotProductFeatures));
++      deMemset(&deviceShaderIntegerDotProductFeaturesKHR[ndx],                0xFF * ndx, sizeof(VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR));
 +      deMemset(&deviceShaderSubgroupExtendedTypesFeatures[ndx],               0xFF * ndx, sizeof(VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures));
 +      deMemset(&deviceShaderTerminateInvocationFeatures[ndx],                 0xFF * ndx, sizeof(VkPhysicalDeviceShaderTerminateInvocationFeatures));
 +      deMemset(&deviceSubgroupSizeControlFeatures[ndx],                               0xFF * ndx, sizeof(VkPhysicalDeviceSubgroupSizeControlFeatures));
 +      deMemset(&deviceSynchronization2Features[ndx],                                  0xFF * ndx, sizeof(VkPhysicalDeviceSynchronization2Features));
 +      deMemset(&deviceFragmentShaderInterlockFeaturesEXT[ndx],                0xFF * ndx, sizeof(VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT));
 +      deMemset(&deviceTexelBufferAlignmentFeaturesEXT[ndx],                   0xFF * ndx, sizeof(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT));
 +      deMemset(&deviceTextureCompressionASTCHDRFeatures[ndx],                 0xFF * ndx, sizeof(VkPhysicalDeviceTextureCompressionASTCHDRFeatures));
 +      deMemset(&deviceTimelineSemaphoreFeatures[ndx],                                 0xFF * ndx, sizeof(VkPhysicalDeviceTimelineSemaphoreFeatures));
 +      deMemset(&deviceTransformFeedbackFeaturesEXT[ndx],                              0xFF * ndx, sizeof(VkPhysicalDeviceTransformFeedbackFeaturesEXT));
 +      deMemset(&deviceUniformBufferStandardLayoutFeatures[ndx],               0xFF * ndx, sizeof(VkPhysicalDeviceUniformBufferStandardLayoutFeatures));
 +      deMemset(&deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[ndx],  0xFF * ndx, sizeof(VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR));
 +      deMemset(&deviceVariablePointersFeatures[ndx],                                  0xFF * ndx, sizeof(VkPhysicalDeviceVariablePointersFeatures));
 +      deMemset(&deviceVertexAttributeDivisorFeaturesEXT[ndx],                 0xFF * ndx, sizeof(VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT));
 +      deMemset(&deviceVertexInputDynamicStateFeaturesEXT[ndx],                0xFF * ndx, sizeof(VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT));
 +      deMemset(&deviceVulkanMemoryModelFeaturesKHR[ndx],                              0xFF * ndx, sizeof(VkPhysicalDeviceVulkanMemoryModelFeaturesKHR));
 +      deMemset(&deviceYcbcrImageArraysFeaturesEXT[ndx],                               0xFF * ndx, sizeof(VkPhysicalDeviceYcbcrImageArraysFeaturesEXT));
 +      deMemset(&deviceYcbcr2Plane444FormatsFeaturesEXT[ndx],                  0xFF * ndx, sizeof(VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT));
 +      deMemset(&deviceZeroInitializeWorkgroupMemoryFeatures[ndx],             0xFF * ndx, sizeof(VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures));
 +
 +      device4444FormatsFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT;
 +      device4444FormatsFeaturesEXT[ndx].pNext = &device8BitStorageFeatures[ndx];
 +
 +      device8BitStorageFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES;
 +      device8BitStorageFeatures[ndx].pNext = &device16BitStorageFeatures[ndx];
 +
 +      device16BitStorageFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;
 +      device16BitStorageFeatures[ndx].pNext = &deviceAccelerationStructureFeaturesKHR[ndx];
 +
 +      deviceAccelerationStructureFeaturesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR;
 +      deviceAccelerationStructureFeaturesKHR[ndx].pNext = &deviceASTCDecodeFeaturesEXT[ndx];
 +
 +      deviceASTCDecodeFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT;
 +      deviceASTCDecodeFeaturesEXT[ndx].pNext = &deviceBlendOperationAdvancedFeaturesEXT[ndx];
 +
 +      deviceBlendOperationAdvancedFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT;
 +      deviceBlendOperationAdvancedFeaturesEXT[ndx].pNext = &deviceBufferDeviceAddressFeaturesEXT[ndx];
 +
 +      deviceBufferDeviceAddressFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT;
 +      deviceBufferDeviceAddressFeaturesEXT[ndx].pNext = &deviceBufferDeviceAddressFeatures[ndx];
 +
 +      deviceBufferDeviceAddressFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES;
 +      deviceBufferDeviceAddressFeatures[ndx].pNext = &deviceConditionalRenderingFeaturesEXT[ndx];
  
        deviceConditionalRenderingFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
 -      deviceConditionalRenderingFeaturesEXT[ndx].pNext = &deviceScalarBlockLayoutFeatures[ndx];
 +      deviceConditionalRenderingFeaturesEXT[ndx].pNext = &deviceCustomBorderColorFeaturesEXT[ndx];
  
 -      deviceScalarBlockLayoutFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES;
 -      deviceScalarBlockLayoutFeatures[ndx].pNext = &devicePerformanceQueryFeaturesKHR[ndx];
 +      deviceCustomBorderColorFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT;
 +      deviceCustomBorderColorFeaturesEXT[ndx].pNext = &deviceColorWriteEnableFeaturesEXT[ndx];
  
 -      devicePerformanceQueryFeaturesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;
 -      devicePerformanceQueryFeaturesKHR[ndx].pNext = &device16BitStorageFeatures[ndx];
 +      deviceColorWriteEnableFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT;
 +      deviceColorWriteEnableFeaturesEXT[ndx].pNext = &deviceDescriptorIndexingFeatures[ndx];
  
 -      device16BitStorageFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;
 -      device16BitStorageFeatures[ndx].pNext = &deviceMultiviewFeatures[ndx];
 +      deviceDescriptorIndexingFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
 +      deviceDescriptorIndexingFeatures[ndx].pNext = &deviceDepthClipEnableFeaturesEXT[ndx];
 +
 +      deviceDepthClipEnableFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT;
 +      deviceDepthClipEnableFeaturesEXT[ndx].pNext = &deviceDynamicRenderingFeatures[ndx];
 +
 +      deviceDynamicRenderingFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES;
 +      deviceDynamicRenderingFeatures[ndx].pNext = &deviceExtendedDynamicStateFeaturesEXT[ndx];
 +
 +      deviceExtendedDynamicStateFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT;
 +      deviceExtendedDynamicStateFeaturesEXT[ndx].pNext = &deviceExtendedDynamicState2FeaturesEXT[ndx];
 +
 +      deviceExtendedDynamicState2FeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT;
 +      deviceExtendedDynamicState2FeaturesEXT[ndx].pNext = &deviceFragmentDensityMapFeaturesEXT[ndx];
 +
 +      deviceFragmentDensityMapFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT;
 +      deviceFragmentDensityMapFeaturesEXT[ndx].pNext = &deviceFragmentDensityMap2FeaturesEXT[ndx];
 +
 +      deviceFragmentDensityMap2FeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT;
 +      deviceFragmentDensityMap2FeaturesEXT[ndx].pNext = &deviceFragmentShadingRateFeaturesKHR[ndx];
 +
 +      deviceFragmentShadingRateFeaturesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR;
 +      deviceFragmentShadingRateFeaturesKHR[ndx].pNext = &deviceGlobalPriorityQueryFeaturesEXT[ndx];
 +
 +      deviceGlobalPriorityQueryFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT;
 +      deviceGlobalPriorityQueryFeaturesEXT[ndx].pNext = &deviceInlineUniformBlockFeatures[ndx];
 +
 +      deviceInlineUniformBlockFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES;
 +      deviceInlineUniformBlockFeatures[ndx].pNext = &deviceIndexTypeUint8FeaturesEXT[ndx];
 +
 +      deviceIndexTypeUint8FeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT;
 +      deviceIndexTypeUint8FeaturesEXT[ndx].pNext = &deviceImagelessFramebufferFeatures[ndx];
 +
 +      deviceImagelessFramebufferFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES;
 +      deviceImagelessFramebufferFeatures[ndx].pNext = &deviceImageRobustnessFeatures[ndx];
 +
 +      deviceImageRobustnessFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES;
 +      deviceImageRobustnessFeatures[ndx].pNext = &deviceHostQueryResetFeatures[ndx];
 +
 +      deviceHostQueryResetFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES;
 +      deviceHostQueryResetFeatures[ndx].pNext = &deviceLineRasterizationFeaturesEXT[ndx];
 +
 +      deviceLineRasterizationFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT;
 +      deviceLineRasterizationFeaturesEXT[ndx].pNext = &deviceMaintenance4Features[ndx];
 +
 +      deviceMaintenance4Features[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES;
 +      deviceMaintenance4Features[ndx].pNext = &deviceMultiviewFeatures[ndx];
  
        deviceMultiviewFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES;
 -      deviceMultiviewFeatures[ndx].pNext = &deviceProtectedMemoryFeatures[ndx];
 +      deviceMultiviewFeatures[ndx].pNext = &deviceMultiDrawFeaturesEXT[ndx];
 +
 +      deviceMultiDrawFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT;
 +      deviceMultiDrawFeaturesEXT[ndx].pNext = &deviceMemoryPriorityFeaturesEXT[ndx];
 +
 +      deviceMemoryPriorityFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT;
 +      deviceMemoryPriorityFeaturesEXT[ndx].pNext = &deviceDeviceMemoryReportFeaturesEXT[ndx];
 +
 +      deviceDeviceMemoryReportFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT;
 +      deviceDeviceMemoryReportFeaturesEXT[ndx].pNext = &devicePerformanceQueryFeaturesKHR[ndx];
 +
 +      devicePerformanceQueryFeaturesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;
 +      devicePerformanceQueryFeaturesKHR[ndx].pNext = &devicePipelineCreationCacheControlFeatures[ndx];
 +
 +      devicePipelineCreationCacheControlFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES;
 +      devicePipelineCreationCacheControlFeatures[ndx].pNext = &devicePipelineExecutablePropertiesFeaturesKHR[ndx];
 +
 +      devicePipelineExecutablePropertiesFeaturesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR;
 +      devicePipelineExecutablePropertiesFeaturesKHR[ndx].pNext = &devicePresentIdFeaturesKHR[ndx];
 +
 +      devicePresentIdFeaturesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR;
 +      devicePresentIdFeaturesKHR[ndx].pNext = &devicePresentWaitFeaturesKHR[ndx];
 +
 +      devicePresentWaitFeaturesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR;
 +      devicePresentWaitFeaturesKHR[ndx].pNext = &deviceProtectedMemoryFeatures[ndx];
  
        deviceProtectedMemoryFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES;
 -      deviceProtectedMemoryFeatures[ndx].pNext = &deviceSamplerYcbcrConversionFeatures[ndx];
 +      deviceProtectedMemoryFeatures[ndx].pNext = &deviceProvokingVertexFeaturesEXT[ndx];
 +
 +      deviceProvokingVertexFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT;
 +      deviceProvokingVertexFeaturesEXT[ndx].pNext = &devicePrimitiveTopologyListRestartFeaturesEXT[ndx];
 +
 +      devicePrimitiveTopologyListRestartFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT;
 +      devicePrimitiveTopologyListRestartFeaturesEXT[ndx].pNext = &devicePrivateDataFeatures[ndx];
 +
 +      devicePrivateDataFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES;
 +      devicePrivateDataFeatures[ndx].pNext = &deviceRayTracingPipelineFeaturesKHR[ndx];
 +
 +      deviceRayTracingPipelineFeaturesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR;
 +      deviceRayTracingPipelineFeaturesKHR[ndx].pNext = &deviceRayQueryFeaturesKHR[ndx];
 +
 +      deviceRayQueryFeaturesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR;
 +      deviceRayQueryFeaturesKHR[ndx].pNext = &deviceRobustness2FeaturesEXT[ndx];
 +
 +      deviceRobustness2FeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT;
 +      deviceRobustness2FeaturesEXT[ndx].pNext = &deviceSamplerYcbcrConversionFeatures[ndx];
  
        deviceSamplerYcbcrConversionFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;
 -      deviceSamplerYcbcrConversionFeatures[ndx].pNext = &deviceVariablePointersFeatures[ndx];
 +      deviceSamplerYcbcrConversionFeatures[ndx].pNext = &deviceScalarBlockLayoutFeatures[ndx];
  
 -      deviceVariablePointersFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;
 -      deviceVariablePointersFeatures[ndx].pNext = &device8BitStorageFeatures[ndx];
 +      deviceScalarBlockLayoutFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES;
 +      deviceScalarBlockLayoutFeatures[ndx].pNext = &deviceSeparateDepthStencilLayoutsFeatures[ndx];
  
 -      device8BitStorageFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES;
 -      device8BitStorageFeatures[ndx].pNext = &deviceShaderAtomicInt64Features[ndx];
 +      deviceSeparateDepthStencilLayoutsFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES;
 +      deviceSeparateDepthStencilLayoutsFeatures[ndx].pNext = &deviceShaderAtomicInt64Features[ndx];
  
        deviceShaderAtomicInt64Features[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;
 -      deviceShaderAtomicInt64Features[ndx].pNext = &deviceShaderFloat16Int8Features[ndx];
 +      deviceShaderAtomicInt64Features[ndx].pNext = &deviceShaderAtomicFloatFeaturesEXT[ndx];
 +
 +      deviceShaderAtomicFloatFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT;
 +      deviceShaderAtomicFloatFeaturesEXT[ndx].pNext = &deviceShaderAtomicFloat2FeaturesEXT[ndx];
 +
 +      deviceShaderAtomicFloat2FeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT;
 +      deviceShaderAtomicFloat2FeaturesEXT[ndx].pNext = &deviceShaderFloat16Int8Features[ndx];
  
        deviceShaderFloat16Int8Features[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;
 -      deviceShaderFloat16Int8Features[ndx].pNext = &deviceBufferDeviceAddressFeaturesEXT[ndx];
 +      deviceShaderFloat16Int8Features[ndx].pNext = &deviceShaderClockFeaturesKHR[ndx];
  
 -      deviceBufferDeviceAddressFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT;
 -      deviceBufferDeviceAddressFeaturesEXT[ndx].pNext = &deviceBufferDeviceAddressFeatures[ndx];
 +      deviceShaderClockFeaturesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR;
 +      deviceShaderClockFeaturesKHR[ndx].pNext = &deviceShaderDemoteToHelperInvocationFeatures[ndx];
  
 -      deviceBufferDeviceAddressFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES;
 -      deviceBufferDeviceAddressFeatures[ndx].pNext = &deviceDescriptorIndexingFeatures[ndx];
 +      deviceShaderDemoteToHelperInvocationFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES;
 +      deviceShaderDemoteToHelperInvocationFeatures[ndx].pNext = &deviceShaderDrawParametersFeatures[ndx];
  
 -      deviceDescriptorIndexingFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
 -      deviceDescriptorIndexingFeatures[ndx].pNext = &deviceTimelineSemaphoreFeatures[ndx];
 +      deviceShaderDrawParametersFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
 +      deviceShaderDrawParametersFeatures[ndx].pNext = &deviceShaderIntegerDotProductFeatures[ndx];
 +
 +      deviceShaderIntegerDotProductFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES;
-       deviceShaderIntegerDotProductFeatures[ndx].pNext = &deviceShaderSubgroupExtendedTypesFeatures[ndx];
++      deviceShaderIntegerDotProductFeatures[ndx].pNext = &deviceShaderIntegerDotProductFeaturesKHR[ndx];
++
++      deviceShaderIntegerDotProductFeaturesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR;
++      deviceShaderIntegerDotProductFeaturesKHR[ndx].pNext = &deviceShaderSubgroupExtendedTypesFeatures[ndx];
 +
 +      deviceShaderSubgroupExtendedTypesFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES;
 +      deviceShaderSubgroupExtendedTypesFeatures[ndx].pNext = &deviceShaderTerminateInvocationFeatures[ndx];
 +
 +      deviceShaderTerminateInvocationFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES;
 +      deviceShaderTerminateInvocationFeatures[ndx].pNext = &deviceSubgroupSizeControlFeatures[ndx];
 +
 +      deviceSubgroupSizeControlFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES;
 +      deviceSubgroupSizeControlFeatures[ndx].pNext = &deviceSynchronization2Features[ndx];
 +
 +      deviceSynchronization2Features[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES;
 +      deviceSynchronization2Features[ndx].pNext = &deviceFragmentShaderInterlockFeaturesEXT[ndx];
 +
 +      deviceFragmentShaderInterlockFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT;
 +      deviceFragmentShaderInterlockFeaturesEXT[ndx].pNext = &deviceTexelBufferAlignmentFeaturesEXT[ndx];
 +
 +      deviceTexelBufferAlignmentFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT;
 +      deviceTexelBufferAlignmentFeaturesEXT[ndx].pNext = &deviceTextureCompressionASTCHDRFeatures[ndx];
 +
 +      deviceTextureCompressionASTCHDRFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES;
 +      deviceTextureCompressionASTCHDRFeatures[ndx].pNext = &deviceTimelineSemaphoreFeatures[ndx];
  
        deviceTimelineSemaphoreFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES;
 -      deviceTimelineSemaphoreFeatures[ndx].pNext = &deviceFragmentDensityMapFeaturesEXT[ndx];
 +      deviceTimelineSemaphoreFeatures[ndx].pNext = &deviceTransformFeedbackFeaturesEXT[ndx];
  
 -      deviceFragmentDensityMapFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT;
 -      deviceFragmentDensityMapFeaturesEXT[ndx].pNext = &deviceFragmentDensityMap2FeaturesEXT[ndx];
 +      deviceTransformFeedbackFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT;
 +      deviceTransformFeedbackFeaturesEXT[ndx].pNext = &deviceUniformBufferStandardLayoutFeatures[ndx];
  
 -      deviceFragmentDensityMap2FeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT;
 -      deviceFragmentDensityMap2FeaturesEXT[ndx].pNext = &deviceShaderIntegerDotProductFeaturesKHR[ndx];
 +      deviceUniformBufferStandardLayoutFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES;
 +      deviceUniformBufferStandardLayoutFeatures[ndx].pNext = &deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[ndx];
  
 -      deviceShaderIntegerDotProductFeaturesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR;
 -      deviceShaderIntegerDotProductFeaturesKHR[ndx].pNext = DE_NULL;
 +      deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR;
 +      deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[ndx].pNext = &deviceVariablePointersFeatures[ndx];
 +
 +      deviceVariablePointersFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;
 +      deviceVariablePointersFeatures[ndx].pNext = &deviceVertexAttributeDivisorFeaturesEXT[ndx];
 +
 +      deviceVertexAttributeDivisorFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT;
 +      deviceVertexAttributeDivisorFeaturesEXT[ndx].pNext = &deviceVertexInputDynamicStateFeaturesEXT[ndx];
 +
 +      deviceVertexInputDynamicStateFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT;
 +      deviceVertexInputDynamicStateFeaturesEXT[ndx].pNext = &deviceVulkanMemoryModelFeaturesKHR[ndx];
 +
 +      deviceVulkanMemoryModelFeaturesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR;
 +      deviceVulkanMemoryModelFeaturesKHR[ndx].pNext = &deviceYcbcrImageArraysFeaturesEXT[ndx];
 +
 +      deviceYcbcrImageArraysFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT;
 +      deviceYcbcrImageArraysFeaturesEXT[ndx].pNext = &deviceYcbcr2Plane444FormatsFeaturesEXT[ndx];
 +
 +      deviceYcbcr2Plane444FormatsFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT;
 +      deviceYcbcr2Plane444FormatsFeaturesEXT[ndx].pNext = &deviceZeroInitializeWorkgroupMemoryFeatures[ndx];
 +
 +      deviceZeroInitializeWorkgroupMemoryFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES;
 +      deviceZeroInitializeWorkgroupMemoryFeatures[ndx].pNext = DE_NULL;
  
        deMemset(&extFeatures.features, 0xcd, sizeof(extFeatures.features));
        extFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
@@@ -480,127 -154,25 +486,129 @@@ if (isFragmentDensityMapFeaturesEXT
        log << TestLog::Message << deviceFragmentDensityMapFeaturesEXT[0] << TestLog::EndMessage;
  if (isFragmentDensityMap2FeaturesEXT)
        log << TestLog::Message << deviceFragmentDensityMap2FeaturesEXT[0] << TestLog::EndMessage;
 +if (isFragmentShadingRateFeaturesKHR)
 +      log << TestLog::Message << deviceFragmentShadingRateFeaturesKHR[0] << TestLog::EndMessage;
 +if (isGlobalPriorityQueryFeaturesEXT)
 +      log << TestLog::Message << deviceGlobalPriorityQueryFeaturesEXT[0] << TestLog::EndMessage;
 +if (isInlineUniformBlockFeatures)
 +      log << TestLog::Message << deviceInlineUniformBlockFeatures[0] << TestLog::EndMessage;
 +if (isIndexTypeUint8FeaturesEXT)
 +      log << TestLog::Message << deviceIndexTypeUint8FeaturesEXT[0] << TestLog::EndMessage;
 +if (isImagelessFramebufferFeatures)
 +      log << TestLog::Message << deviceImagelessFramebufferFeatures[0] << TestLog::EndMessage;
 +if (isImageRobustnessFeatures)
 +      log << TestLog::Message << deviceImageRobustnessFeatures[0] << TestLog::EndMessage;
 +if (isHostQueryResetFeatures)
 +      log << TestLog::Message << deviceHostQueryResetFeatures[0] << TestLog::EndMessage;
 +if (isLineRasterizationFeaturesEXT)
 +      log << TestLog::Message << deviceLineRasterizationFeaturesEXT[0] << TestLog::EndMessage;
 +if (isMaintenance4Features)
 +      log << TestLog::Message << deviceMaintenance4Features[0] << TestLog::EndMessage;
 +if (isMultiviewFeatures)
 +      log << TestLog::Message << deviceMultiviewFeatures[0] << TestLog::EndMessage;
 +if (isMultiDrawFeaturesEXT)
 +      log << TestLog::Message << deviceMultiDrawFeaturesEXT[0] << TestLog::EndMessage;
 +if (isMemoryPriorityFeaturesEXT)
 +      log << TestLog::Message << deviceMemoryPriorityFeaturesEXT[0] << TestLog::EndMessage;
 +if (isDeviceMemoryReportFeaturesEXT)
 +      log << TestLog::Message << deviceDeviceMemoryReportFeaturesEXT[0] << TestLog::EndMessage;
 +if (isPerformanceQueryFeaturesKHR)
 +      log << TestLog::Message << devicePerformanceQueryFeaturesKHR[0] << TestLog::EndMessage;
 +if (isPipelineCreationCacheControlFeatures)
 +      log << TestLog::Message << devicePipelineCreationCacheControlFeatures[0] << TestLog::EndMessage;
 +if (isPipelineExecutablePropertiesFeaturesKHR)
 +      log << TestLog::Message << devicePipelineExecutablePropertiesFeaturesKHR[0] << TestLog::EndMessage;
 +if (isPresentIdFeaturesKHR)
 +      log << TestLog::Message << devicePresentIdFeaturesKHR[0] << TestLog::EndMessage;
 +if (isPresentWaitFeaturesKHR)
 +      log << TestLog::Message << devicePresentWaitFeaturesKHR[0] << TestLog::EndMessage;
 +if (isProtectedMemoryFeatures)
 +      log << TestLog::Message << deviceProtectedMemoryFeatures[0] << TestLog::EndMessage;
 +if (isProvokingVertexFeaturesEXT)
 +      log << TestLog::Message << deviceProvokingVertexFeaturesEXT[0] << TestLog::EndMessage;
 +if (isPrimitiveTopologyListRestartFeaturesEXT)
 +      log << TestLog::Message << devicePrimitiveTopologyListRestartFeaturesEXT[0] << TestLog::EndMessage;
 +if (isPrivateDataFeatures)
 +      log << TestLog::Message << devicePrivateDataFeatures[0] << TestLog::EndMessage;
 +if (isRayTracingPipelineFeaturesKHR)
 +      log << TestLog::Message << deviceRayTracingPipelineFeaturesKHR[0] << TestLog::EndMessage;
 +if (isRayQueryFeaturesKHR)
 +      log << TestLog::Message << deviceRayQueryFeaturesKHR[0] << TestLog::EndMessage;
 +if (isRobustness2FeaturesEXT)
 +      log << TestLog::Message << deviceRobustness2FeaturesEXT[0] << TestLog::EndMessage;
 +if (isSamplerYcbcrConversionFeatures)
 +      log << TestLog::Message << deviceSamplerYcbcrConversionFeatures[0] << TestLog::EndMessage;
 +if (isScalarBlockLayoutFeatures)
 +      log << TestLog::Message << deviceScalarBlockLayoutFeatures[0] << TestLog::EndMessage;
 +if (isSeparateDepthStencilLayoutsFeatures)
 +      log << TestLog::Message << deviceSeparateDepthStencilLayoutsFeatures[0] << TestLog::EndMessage;
 +if (isShaderAtomicInt64Features)
 +      log << TestLog::Message << deviceShaderAtomicInt64Features[0] << TestLog::EndMessage;
 +if (isShaderAtomicFloatFeaturesEXT)
 +      log << TestLog::Message << deviceShaderAtomicFloatFeaturesEXT[0] << TestLog::EndMessage;
 +if (isShaderAtomicFloat2FeaturesEXT)
 +      log << TestLog::Message << deviceShaderAtomicFloat2FeaturesEXT[0] << TestLog::EndMessage;
 +if (isShaderFloat16Int8Features)
 +      log << TestLog::Message << deviceShaderFloat16Int8Features[0] << TestLog::EndMessage;
 +if (isShaderClockFeaturesKHR)
 +      log << TestLog::Message << deviceShaderClockFeaturesKHR[0] << TestLog::EndMessage;
 +if (isShaderDemoteToHelperInvocationFeatures)
 +      log << TestLog::Message << deviceShaderDemoteToHelperInvocationFeatures[0] << TestLog::EndMessage;
 +if (isShaderDrawParametersFeatures)
 +      log << TestLog::Message << deviceShaderDrawParametersFeatures[0] << TestLog::EndMessage;
 +if (isShaderIntegerDotProductFeatures)
 +      log << TestLog::Message << deviceShaderIntegerDotProductFeatures[0] << TestLog::EndMessage;
+ if (isShaderIntegerDotProductFeaturesKHR)
+       log << TestLog::Message << deviceShaderIntegerDotProductFeaturesKHR[0] << TestLog::EndMessage;
 +if (isShaderSubgroupExtendedTypesFeatures)
 +      log << TestLog::Message << deviceShaderSubgroupExtendedTypesFeatures[0] << TestLog::EndMessage;
 +if (isShaderTerminateInvocationFeatures)
 +      log << TestLog::Message << deviceShaderTerminateInvocationFeatures[0] << TestLog::EndMessage;
 +if (isSubgroupSizeControlFeatures)
 +      log << TestLog::Message << deviceSubgroupSizeControlFeatures[0] << TestLog::EndMessage;
 +if (isSynchronization2Features)
 +      log << TestLog::Message << deviceSynchronization2Features[0] << TestLog::EndMessage;
 +if (isFragmentShaderInterlockFeaturesEXT)
 +      log << TestLog::Message << deviceFragmentShaderInterlockFeaturesEXT[0] << TestLog::EndMessage;
 +if (isTexelBufferAlignmentFeaturesEXT)
 +      log << TestLog::Message << deviceTexelBufferAlignmentFeaturesEXT[0] << TestLog::EndMessage;
 +if (isTextureCompressionASTCHDRFeatures)
 +      log << TestLog::Message << deviceTextureCompressionASTCHDRFeatures[0] << TestLog::EndMessage;
 +if (isTimelineSemaphoreFeatures)
 +      log << TestLog::Message << deviceTimelineSemaphoreFeatures[0] << TestLog::EndMessage;
 +if (isTransformFeedbackFeaturesEXT)
 +      log << TestLog::Message << deviceTransformFeedbackFeaturesEXT[0] << TestLog::EndMessage;
 +if (isUniformBufferStandardLayoutFeatures)
 +      log << TestLog::Message << deviceUniformBufferStandardLayoutFeatures[0] << TestLog::EndMessage;
 +if (isWorkgroupMemoryExplicitLayoutFeaturesKHR)
 +      log << TestLog::Message << deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[0] << TestLog::EndMessage;
 +if (isVariablePointersFeatures)
 +      log << TestLog::Message << deviceVariablePointersFeatures[0] << TestLog::EndMessage;
 +if (isVertexAttributeDivisorFeaturesEXT)
 +      log << TestLog::Message << deviceVertexAttributeDivisorFeaturesEXT[0] << TestLog::EndMessage;
 +if (isVertexInputDynamicStateFeaturesEXT)
 +      log << TestLog::Message << deviceVertexInputDynamicStateFeaturesEXT[0] << TestLog::EndMessage;
 +if (isVulkanMemoryModelFeaturesKHR)
 +      log << TestLog::Message << deviceVulkanMemoryModelFeaturesKHR[0] << TestLog::EndMessage;
 +if (isYcbcrImageArraysFeaturesEXT)
 +      log << TestLog::Message << deviceYcbcrImageArraysFeaturesEXT[0] << TestLog::EndMessage;
 +if (isYcbcr2Plane444FormatsFeaturesEXT)
 +      log << TestLog::Message << deviceYcbcr2Plane444FormatsFeaturesEXT[0] << TestLog::EndMessage;
 +if (isZeroInitializeWorkgroupMemoryFeatures)
 +      log << TestLog::Message << deviceZeroInitializeWorkgroupMemoryFeatures[0] << TestLog::EndMessage;
  
 -if (isConditionalRenderingFeaturesEXT &&
 -      (deviceConditionalRenderingFeaturesEXT[0].conditionalRendering != deviceConditionalRenderingFeaturesEXT[1].conditionalRendering ||
 -       deviceConditionalRenderingFeaturesEXT[0].inheritedConditionalRendering != deviceConditionalRenderingFeaturesEXT[1].inheritedConditionalRendering))
 +if (is4444FormatsFeaturesEXT &&
 +      (device4444FormatsFeaturesEXT[0].formatA4R4G4B4 != device4444FormatsFeaturesEXT[1].formatA4R4G4B4 ||
 +       device4444FormatsFeaturesEXT[0].formatA4B4G4R4 != device4444FormatsFeaturesEXT[1].formatA4B4G4R4))
  {
 -              TCU_FAIL("Mismatch between VkPhysicalDeviceConditionalRenderingFeaturesEXT");
 +              TCU_FAIL("Mismatch between VkPhysicalDevice4444FormatsFeaturesEXT");
  }
 -if (isScalarBlockLayoutFeatures &&
 -      (deviceScalarBlockLayoutFeatures[0].scalarBlockLayout != deviceScalarBlockLayoutFeatures[1].scalarBlockLayout))
 -{
 -              TCU_FAIL("Mismatch between VkPhysicalDeviceScalarBlockLayoutFeatures");
 -}
 -if (isPerformanceQueryFeaturesKHR &&
 -      (devicePerformanceQueryFeaturesKHR[0].performanceCounterQueryPools != devicePerformanceQueryFeaturesKHR[1].performanceCounterQueryPools ||
 -       devicePerformanceQueryFeaturesKHR[0].performanceCounterMultipleQueryPools != devicePerformanceQueryFeaturesKHR[1].performanceCounterMultipleQueryPools))
 +if (is8BitStorageFeatures &&
 +      (device8BitStorageFeatures[0].storageBuffer8BitAccess != device8BitStorageFeatures[1].storageBuffer8BitAccess ||
 +       device8BitStorageFeatures[0].uniformAndStorageBuffer8BitAccess != device8BitStorageFeatures[1].uniformAndStorageBuffer8BitAccess ||
 +       device8BitStorageFeatures[0].storagePushConstant8 != device8BitStorageFeatures[1].storagePushConstant8))
  {
 -              TCU_FAIL("Mismatch between VkPhysicalDevicePerformanceQueryFeaturesKHR");
 +              TCU_FAIL("Mismatch between VkPhysicalDevice8BitStorageFeatures");
  }
  if (is16BitStorageFeatures &&
        (device16BitStorageFeatures[0].storageBuffer16BitAccess != device16BitStorageFeatures[1].storageBuffer16BitAccess ||
@@@ -718,328 -279,8 +726,333 @@@ if (isFragmentDensityMap2FeaturesEXT &
  {
                TCU_FAIL("Mismatch between VkPhysicalDeviceFragmentDensityMap2FeaturesEXT");
  }
 +if (isFragmentShadingRateFeaturesKHR &&
 +      (deviceFragmentShadingRateFeaturesKHR[0].pipelineFragmentShadingRate != deviceFragmentShadingRateFeaturesKHR[1].pipelineFragmentShadingRate ||
 +       deviceFragmentShadingRateFeaturesKHR[0].primitiveFragmentShadingRate != deviceFragmentShadingRateFeaturesKHR[1].primitiveFragmentShadingRate ||
 +       deviceFragmentShadingRateFeaturesKHR[0].attachmentFragmentShadingRate != deviceFragmentShadingRateFeaturesKHR[1].attachmentFragmentShadingRate))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceFragmentShadingRateFeaturesKHR");
 +}
 +if (isGlobalPriorityQueryFeaturesEXT &&
 +      (deviceGlobalPriorityQueryFeaturesEXT[0].globalPriorityQuery != deviceGlobalPriorityQueryFeaturesEXT[1].globalPriorityQuery))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT");
 +}
 +if (isInlineUniformBlockFeatures &&
 +      (deviceInlineUniformBlockFeatures[0].inlineUniformBlock != deviceInlineUniformBlockFeatures[1].inlineUniformBlock ||
 +       deviceInlineUniformBlockFeatures[0].descriptorBindingInlineUniformBlockUpdateAfterBind != deviceInlineUniformBlockFeatures[1].descriptorBindingInlineUniformBlockUpdateAfterBind))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceInlineUniformBlockFeatures");
 +}
 +if (isIndexTypeUint8FeaturesEXT &&
 +      (deviceIndexTypeUint8FeaturesEXT[0].indexTypeUint8 != deviceIndexTypeUint8FeaturesEXT[1].indexTypeUint8))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceIndexTypeUint8FeaturesEXT");
 +}
 +if (isImagelessFramebufferFeatures &&
 +      (deviceImagelessFramebufferFeatures[0].imagelessFramebuffer != deviceImagelessFramebufferFeatures[1].imagelessFramebuffer))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceImagelessFramebufferFeatures");
 +}
 +if (isImageRobustnessFeatures &&
 +      (deviceImageRobustnessFeatures[0].robustImageAccess != deviceImageRobustnessFeatures[1].robustImageAccess))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceImageRobustnessFeatures");
 +}
 +if (isHostQueryResetFeatures &&
 +      (deviceHostQueryResetFeatures[0].hostQueryReset != deviceHostQueryResetFeatures[1].hostQueryReset))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceHostQueryResetFeatures");
 +}
 +if (isLineRasterizationFeaturesEXT &&
 +      (deviceLineRasterizationFeaturesEXT[0].rectangularLines != deviceLineRasterizationFeaturesEXT[1].rectangularLines ||
 +       deviceLineRasterizationFeaturesEXT[0].bresenhamLines != deviceLineRasterizationFeaturesEXT[1].bresenhamLines ||
 +       deviceLineRasterizationFeaturesEXT[0].smoothLines != deviceLineRasterizationFeaturesEXT[1].smoothLines ||
 +       deviceLineRasterizationFeaturesEXT[0].stippledRectangularLines != deviceLineRasterizationFeaturesEXT[1].stippledRectangularLines ||
 +       deviceLineRasterizationFeaturesEXT[0].stippledBresenhamLines != deviceLineRasterizationFeaturesEXT[1].stippledBresenhamLines ||
 +       deviceLineRasterizationFeaturesEXT[0].stippledSmoothLines != deviceLineRasterizationFeaturesEXT[1].stippledSmoothLines))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceLineRasterizationFeaturesEXT");
 +}
 +if (isMaintenance4Features &&
 +      (deviceMaintenance4Features[0].maintenance4 != deviceMaintenance4Features[1].maintenance4))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceMaintenance4Features");
 +}
 +if (isMultiviewFeatures &&
 +      (deviceMultiviewFeatures[0].multiview != deviceMultiviewFeatures[1].multiview ||
 +       deviceMultiviewFeatures[0].multiviewGeometryShader != deviceMultiviewFeatures[1].multiviewGeometryShader ||
 +       deviceMultiviewFeatures[0].multiviewTessellationShader != deviceMultiviewFeatures[1].multiviewTessellationShader))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceMultiviewFeatures");
 +}
 +if (isMultiDrawFeaturesEXT &&
 +      (deviceMultiDrawFeaturesEXT[0].multiDraw != deviceMultiDrawFeaturesEXT[1].multiDraw))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceMultiDrawFeaturesEXT");
 +}
 +if (isMemoryPriorityFeaturesEXT &&
 +      (deviceMemoryPriorityFeaturesEXT[0].memoryPriority != deviceMemoryPriorityFeaturesEXT[1].memoryPriority))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceMemoryPriorityFeaturesEXT");
 +}
 +if (isDeviceMemoryReportFeaturesEXT &&
 +      (deviceDeviceMemoryReportFeaturesEXT[0].deviceMemoryReport != deviceDeviceMemoryReportFeaturesEXT[1].deviceMemoryReport))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceDeviceMemoryReportFeaturesEXT");
 +}
 +if (isPerformanceQueryFeaturesKHR &&
 +      (devicePerformanceQueryFeaturesKHR[0].performanceCounterQueryPools != devicePerformanceQueryFeaturesKHR[1].performanceCounterQueryPools ||
 +       devicePerformanceQueryFeaturesKHR[0].performanceCounterMultipleQueryPools != devicePerformanceQueryFeaturesKHR[1].performanceCounterMultipleQueryPools))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDevicePerformanceQueryFeaturesKHR");
 +}
 +if (isPipelineCreationCacheControlFeatures &&
 +      (devicePipelineCreationCacheControlFeatures[0].pipelineCreationCacheControl != devicePipelineCreationCacheControlFeatures[1].pipelineCreationCacheControl))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDevicePipelineCreationCacheControlFeatures");
 +}
 +if (isPipelineExecutablePropertiesFeaturesKHR &&
 +      (devicePipelineExecutablePropertiesFeaturesKHR[0].pipelineExecutableInfo != devicePipelineExecutablePropertiesFeaturesKHR[1].pipelineExecutableInfo))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR");
 +}
 +if (isPresentIdFeaturesKHR &&
 +      (devicePresentIdFeaturesKHR[0].presentId != devicePresentIdFeaturesKHR[1].presentId))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDevicePresentIdFeaturesKHR");
 +}
 +if (isPresentWaitFeaturesKHR &&
 +      (devicePresentWaitFeaturesKHR[0].presentWait != devicePresentWaitFeaturesKHR[1].presentWait))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDevicePresentWaitFeaturesKHR");
 +}
 +if (isProtectedMemoryFeatures &&
 +      (deviceProtectedMemoryFeatures[0].protectedMemory != deviceProtectedMemoryFeatures[1].protectedMemory))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceProtectedMemoryFeatures");
 +}
 +if (isProvokingVertexFeaturesEXT &&
 +      (deviceProvokingVertexFeaturesEXT[0].provokingVertexLast != deviceProvokingVertexFeaturesEXT[1].provokingVertexLast ||
 +       deviceProvokingVertexFeaturesEXT[0].transformFeedbackPreservesProvokingVertex != deviceProvokingVertexFeaturesEXT[1].transformFeedbackPreservesProvokingVertex))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceProvokingVertexFeaturesEXT");
 +}
 +if (isPrimitiveTopologyListRestartFeaturesEXT &&
 +      (devicePrimitiveTopologyListRestartFeaturesEXT[0].primitiveTopologyListRestart != devicePrimitiveTopologyListRestartFeaturesEXT[1].primitiveTopologyListRestart ||
 +       devicePrimitiveTopologyListRestartFeaturesEXT[0].primitiveTopologyPatchListRestart != devicePrimitiveTopologyListRestartFeaturesEXT[1].primitiveTopologyPatchListRestart))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT");
 +}
 +if (isPrivateDataFeatures &&
 +      (devicePrivateDataFeatures[0].privateData != devicePrivateDataFeatures[1].privateData))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDevicePrivateDataFeatures");
 +}
 +if (isRayTracingPipelineFeaturesKHR &&
 +      (deviceRayTracingPipelineFeaturesKHR[0].rayTracingPipeline != deviceRayTracingPipelineFeaturesKHR[1].rayTracingPipeline ||
 +       deviceRayTracingPipelineFeaturesKHR[0].rayTracingPipelineShaderGroupHandleCaptureReplay != deviceRayTracingPipelineFeaturesKHR[1].rayTracingPipelineShaderGroupHandleCaptureReplay ||
 +       deviceRayTracingPipelineFeaturesKHR[0].rayTracingPipelineShaderGroupHandleCaptureReplayMixed != deviceRayTracingPipelineFeaturesKHR[1].rayTracingPipelineShaderGroupHandleCaptureReplayMixed ||
 +       deviceRayTracingPipelineFeaturesKHR[0].rayTracingPipelineTraceRaysIndirect != deviceRayTracingPipelineFeaturesKHR[1].rayTracingPipelineTraceRaysIndirect ||
 +       deviceRayTracingPipelineFeaturesKHR[0].rayTraversalPrimitiveCulling != deviceRayTracingPipelineFeaturesKHR[1].rayTraversalPrimitiveCulling))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceRayTracingPipelineFeaturesKHR");
 +}
 +if (isRayQueryFeaturesKHR &&
 +      (deviceRayQueryFeaturesKHR[0].rayQuery != deviceRayQueryFeaturesKHR[1].rayQuery))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceRayQueryFeaturesKHR");
 +}
 +if (isRobustness2FeaturesEXT &&
 +      (deviceRobustness2FeaturesEXT[0].robustBufferAccess2 != deviceRobustness2FeaturesEXT[1].robustBufferAccess2 ||
 +       deviceRobustness2FeaturesEXT[0].robustImageAccess2 != deviceRobustness2FeaturesEXT[1].robustImageAccess2 ||
 +       deviceRobustness2FeaturesEXT[0].nullDescriptor != deviceRobustness2FeaturesEXT[1].nullDescriptor))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceRobustness2FeaturesEXT");
 +}
 +if (isSamplerYcbcrConversionFeatures &&
 +      (deviceSamplerYcbcrConversionFeatures[0].samplerYcbcrConversion != deviceSamplerYcbcrConversionFeatures[1].samplerYcbcrConversion))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceSamplerYcbcrConversionFeatures");
 +}
 +if (isScalarBlockLayoutFeatures &&
 +      (deviceScalarBlockLayoutFeatures[0].scalarBlockLayout != deviceScalarBlockLayoutFeatures[1].scalarBlockLayout))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceScalarBlockLayoutFeatures");
 +}
 +if (isSeparateDepthStencilLayoutsFeatures &&
 +      (deviceSeparateDepthStencilLayoutsFeatures[0].separateDepthStencilLayouts != deviceSeparateDepthStencilLayoutsFeatures[1].separateDepthStencilLayouts))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures");
 +}
 +if (isShaderAtomicInt64Features &&
 +      (deviceShaderAtomicInt64Features[0].shaderBufferInt64Atomics != deviceShaderAtomicInt64Features[1].shaderBufferInt64Atomics ||
 +       deviceShaderAtomicInt64Features[0].shaderSharedInt64Atomics != deviceShaderAtomicInt64Features[1].shaderSharedInt64Atomics))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceShaderAtomicInt64Features");
 +}
 +if (isShaderAtomicFloatFeaturesEXT &&
 +      (deviceShaderAtomicFloatFeaturesEXT[0].shaderBufferFloat32Atomics != deviceShaderAtomicFloatFeaturesEXT[1].shaderBufferFloat32Atomics ||
 +       deviceShaderAtomicFloatFeaturesEXT[0].shaderBufferFloat32AtomicAdd != deviceShaderAtomicFloatFeaturesEXT[1].shaderBufferFloat32AtomicAdd ||
 +       deviceShaderAtomicFloatFeaturesEXT[0].shaderBufferFloat64Atomics != deviceShaderAtomicFloatFeaturesEXT[1].shaderBufferFloat64Atomics ||
 +       deviceShaderAtomicFloatFeaturesEXT[0].shaderBufferFloat64AtomicAdd != deviceShaderAtomicFloatFeaturesEXT[1].shaderBufferFloat64AtomicAdd ||
 +       deviceShaderAtomicFloatFeaturesEXT[0].shaderSharedFloat32Atomics != deviceShaderAtomicFloatFeaturesEXT[1].shaderSharedFloat32Atomics ||
 +       deviceShaderAtomicFloatFeaturesEXT[0].shaderSharedFloat32AtomicAdd != deviceShaderAtomicFloatFeaturesEXT[1].shaderSharedFloat32AtomicAdd ||
 +       deviceShaderAtomicFloatFeaturesEXT[0].shaderSharedFloat64Atomics != deviceShaderAtomicFloatFeaturesEXT[1].shaderSharedFloat64Atomics ||
 +       deviceShaderAtomicFloatFeaturesEXT[0].shaderSharedFloat64AtomicAdd != deviceShaderAtomicFloatFeaturesEXT[1].shaderSharedFloat64AtomicAdd ||
 +       deviceShaderAtomicFloatFeaturesEXT[0].shaderImageFloat32Atomics != deviceShaderAtomicFloatFeaturesEXT[1].shaderImageFloat32Atomics ||
 +       deviceShaderAtomicFloatFeaturesEXT[0].shaderImageFloat32AtomicAdd != deviceShaderAtomicFloatFeaturesEXT[1].shaderImageFloat32AtomicAdd ||
 +       deviceShaderAtomicFloatFeaturesEXT[0].sparseImageFloat32Atomics != deviceShaderAtomicFloatFeaturesEXT[1].sparseImageFloat32Atomics ||
 +       deviceShaderAtomicFloatFeaturesEXT[0].sparseImageFloat32AtomicAdd != deviceShaderAtomicFloatFeaturesEXT[1].sparseImageFloat32AtomicAdd))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceShaderAtomicFloatFeaturesEXT");
 +}
 +if (isShaderAtomicFloat2FeaturesEXT &&
 +      (deviceShaderAtomicFloat2FeaturesEXT[0].shaderBufferFloat16Atomics != deviceShaderAtomicFloat2FeaturesEXT[1].shaderBufferFloat16Atomics ||
 +       deviceShaderAtomicFloat2FeaturesEXT[0].shaderBufferFloat16AtomicAdd != deviceShaderAtomicFloat2FeaturesEXT[1].shaderBufferFloat16AtomicAdd ||
 +       deviceShaderAtomicFloat2FeaturesEXT[0].shaderBufferFloat16AtomicMinMax != deviceShaderAtomicFloat2FeaturesEXT[1].shaderBufferFloat16AtomicMinMax ||
 +       deviceShaderAtomicFloat2FeaturesEXT[0].shaderBufferFloat32AtomicMinMax != deviceShaderAtomicFloat2FeaturesEXT[1].shaderBufferFloat32AtomicMinMax ||
 +       deviceShaderAtomicFloat2FeaturesEXT[0].shaderBufferFloat64AtomicMinMax != deviceShaderAtomicFloat2FeaturesEXT[1].shaderBufferFloat64AtomicMinMax ||
 +       deviceShaderAtomicFloat2FeaturesEXT[0].shaderSharedFloat16Atomics != deviceShaderAtomicFloat2FeaturesEXT[1].shaderSharedFloat16Atomics ||
 +       deviceShaderAtomicFloat2FeaturesEXT[0].shaderSharedFloat16AtomicAdd != deviceShaderAtomicFloat2FeaturesEXT[1].shaderSharedFloat16AtomicAdd ||
 +       deviceShaderAtomicFloat2FeaturesEXT[0].shaderSharedFloat16AtomicMinMax != deviceShaderAtomicFloat2FeaturesEXT[1].shaderSharedFloat16AtomicMinMax ||
 +       deviceShaderAtomicFloat2FeaturesEXT[0].shaderSharedFloat32AtomicMinMax != deviceShaderAtomicFloat2FeaturesEXT[1].shaderSharedFloat32AtomicMinMax ||
 +       deviceShaderAtomicFloat2FeaturesEXT[0].shaderSharedFloat64AtomicMinMax != deviceShaderAtomicFloat2FeaturesEXT[1].shaderSharedFloat64AtomicMinMax ||
 +       deviceShaderAtomicFloat2FeaturesEXT[0].shaderImageFloat32AtomicMinMax != deviceShaderAtomicFloat2FeaturesEXT[1].shaderImageFloat32AtomicMinMax ||
 +       deviceShaderAtomicFloat2FeaturesEXT[0].sparseImageFloat32AtomicMinMax != deviceShaderAtomicFloat2FeaturesEXT[1].sparseImageFloat32AtomicMinMax))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT");
 +}
 +if (isShaderFloat16Int8Features &&
 +      (deviceShaderFloat16Int8Features[0].shaderFloat16 != deviceShaderFloat16Int8Features[1].shaderFloat16 ||
 +       deviceShaderFloat16Int8Features[0].shaderInt8 != deviceShaderFloat16Int8Features[1].shaderInt8))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceShaderFloat16Int8Features");
 +}
 +if (isShaderClockFeaturesKHR &&
 +      (deviceShaderClockFeaturesKHR[0].shaderSubgroupClock != deviceShaderClockFeaturesKHR[1].shaderSubgroupClock ||
 +       deviceShaderClockFeaturesKHR[0].shaderDeviceClock != deviceShaderClockFeaturesKHR[1].shaderDeviceClock))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceShaderClockFeaturesKHR");
 +}
 +if (isShaderDemoteToHelperInvocationFeatures &&
 +      (deviceShaderDemoteToHelperInvocationFeatures[0].shaderDemoteToHelperInvocation != deviceShaderDemoteToHelperInvocationFeatures[1].shaderDemoteToHelperInvocation))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures");
 +}
 +if (isShaderDrawParametersFeatures &&
 +      (deviceShaderDrawParametersFeatures[0].shaderDrawParameters != deviceShaderDrawParametersFeatures[1].shaderDrawParameters))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceShaderDrawParametersFeatures");
 +}
 +if (isShaderIntegerDotProductFeatures &&
 +      (deviceShaderIntegerDotProductFeatures[0].shaderIntegerDotProduct != deviceShaderIntegerDotProductFeatures[1].shaderIntegerDotProduct))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceShaderIntegerDotProductFeatures");
 +}
+ if (isShaderIntegerDotProductFeaturesKHR &&
+       (deviceShaderIntegerDotProductFeaturesKHR[0].shaderIntegerDotProduct != deviceShaderIntegerDotProductFeaturesKHR[1].shaderIntegerDotProduct))
+ {
+               TCU_FAIL("Mismatch between VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR");
+ }
 +if (isShaderSubgroupExtendedTypesFeatures &&
 +      (deviceShaderSubgroupExtendedTypesFeatures[0].shaderSubgroupExtendedTypes != deviceShaderSubgroupExtendedTypesFeatures[1].shaderSubgroupExtendedTypes))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures");
 +}
 +if (isShaderTerminateInvocationFeatures &&
 +      (deviceShaderTerminateInvocationFeatures[0].shaderTerminateInvocation != deviceShaderTerminateInvocationFeatures[1].shaderTerminateInvocation))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceShaderTerminateInvocationFeatures");
 +}
 +if (isSubgroupSizeControlFeatures &&
 +      (deviceSubgroupSizeControlFeatures[0].subgroupSizeControl != deviceSubgroupSizeControlFeatures[1].subgroupSizeControl ||
 +       deviceSubgroupSizeControlFeatures[0].computeFullSubgroups != deviceSubgroupSizeControlFeatures[1].computeFullSubgroups))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceSubgroupSizeControlFeatures");
 +}
 +if (isSynchronization2Features &&
 +      (deviceSynchronization2Features[0].synchronization2 != deviceSynchronization2Features[1].synchronization2))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceSynchronization2Features");
 +}
 +if (isFragmentShaderInterlockFeaturesEXT &&
 +      (deviceFragmentShaderInterlockFeaturesEXT[0].fragmentShaderSampleInterlock != deviceFragmentShaderInterlockFeaturesEXT[1].fragmentShaderSampleInterlock ||
 +       deviceFragmentShaderInterlockFeaturesEXT[0].fragmentShaderPixelInterlock != deviceFragmentShaderInterlockFeaturesEXT[1].fragmentShaderPixelInterlock ||
 +       deviceFragmentShaderInterlockFeaturesEXT[0].fragmentShaderShadingRateInterlock != deviceFragmentShaderInterlockFeaturesEXT[1].fragmentShaderShadingRateInterlock))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT");
 +}
 +if (isTexelBufferAlignmentFeaturesEXT &&
 +      (deviceTexelBufferAlignmentFeaturesEXT[0].texelBufferAlignment != deviceTexelBufferAlignmentFeaturesEXT[1].texelBufferAlignment))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT");
 +}
 +if (isTextureCompressionASTCHDRFeatures &&
 +      (deviceTextureCompressionASTCHDRFeatures[0].textureCompressionASTC_HDR != deviceTextureCompressionASTCHDRFeatures[1].textureCompressionASTC_HDR))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceTextureCompressionASTCHDRFeatures");
 +}
 +if (isTimelineSemaphoreFeatures &&
 +      (deviceTimelineSemaphoreFeatures[0].timelineSemaphore != deviceTimelineSemaphoreFeatures[1].timelineSemaphore))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceTimelineSemaphoreFeatures");
 +}
 +if (isTransformFeedbackFeaturesEXT &&
 +      (deviceTransformFeedbackFeaturesEXT[0].transformFeedback != deviceTransformFeedbackFeaturesEXT[1].transformFeedback ||
 +       deviceTransformFeedbackFeaturesEXT[0].geometryStreams != deviceTransformFeedbackFeaturesEXT[1].geometryStreams))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceTransformFeedbackFeaturesEXT");
 +}
 +if (isUniformBufferStandardLayoutFeatures &&
 +      (deviceUniformBufferStandardLayoutFeatures[0].uniformBufferStandardLayout != deviceUniformBufferStandardLayoutFeatures[1].uniformBufferStandardLayout))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceUniformBufferStandardLayoutFeatures");
 +}
 +if (isWorkgroupMemoryExplicitLayoutFeaturesKHR &&
 +      (deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[0].workgroupMemoryExplicitLayout != deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[1].workgroupMemoryExplicitLayout ||
 +       deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[0].workgroupMemoryExplicitLayoutScalarBlockLayout != deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[1].workgroupMemoryExplicitLayoutScalarBlockLayout ||
 +       deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[0].workgroupMemoryExplicitLayout8BitAccess != deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[1].workgroupMemoryExplicitLayout8BitAccess ||
 +       deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[0].workgroupMemoryExplicitLayout16BitAccess != deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[1].workgroupMemoryExplicitLayout16BitAccess))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR");
 +}
 +if (isVariablePointersFeatures &&
 +      (deviceVariablePointersFeatures[0].variablePointersStorageBuffer != deviceVariablePointersFeatures[1].variablePointersStorageBuffer ||
 +       deviceVariablePointersFeatures[0].variablePointers != deviceVariablePointersFeatures[1].variablePointers))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceVariablePointersFeatures");
 +}
 +if (isVertexAttributeDivisorFeaturesEXT &&
 +      (deviceVertexAttributeDivisorFeaturesEXT[0].vertexAttributeInstanceRateDivisor != deviceVertexAttributeDivisorFeaturesEXT[1].vertexAttributeInstanceRateDivisor ||
 +       deviceVertexAttributeDivisorFeaturesEXT[0].vertexAttributeInstanceRateZeroDivisor != deviceVertexAttributeDivisorFeaturesEXT[1].vertexAttributeInstanceRateZeroDivisor))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT");
 +}
 +if (isVertexInputDynamicStateFeaturesEXT &&
 +      (deviceVertexInputDynamicStateFeaturesEXT[0].vertexInputDynamicState != deviceVertexInputDynamicStateFeaturesEXT[1].vertexInputDynamicState))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT");
 +}
 +if (isVulkanMemoryModelFeaturesKHR &&
 +      (deviceVulkanMemoryModelFeaturesKHR[0].vulkanMemoryModel != deviceVulkanMemoryModelFeaturesKHR[1].vulkanMemoryModel ||
 +       deviceVulkanMemoryModelFeaturesKHR[0].vulkanMemoryModelDeviceScope != deviceVulkanMemoryModelFeaturesKHR[1].vulkanMemoryModelDeviceScope ||
 +       deviceVulkanMemoryModelFeaturesKHR[0].vulkanMemoryModelAvailabilityVisibilityChains != deviceVulkanMemoryModelFeaturesKHR[1].vulkanMemoryModelAvailabilityVisibilityChains))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceVulkanMemoryModelFeaturesKHR");
 +}
 +if (isYcbcrImageArraysFeaturesEXT &&
 +      (deviceYcbcrImageArraysFeaturesEXT[0].ycbcrImageArrays != deviceYcbcrImageArraysFeaturesEXT[1].ycbcrImageArrays))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceYcbcrImageArraysFeaturesEXT");
 +}
 +if (isYcbcr2Plane444FormatsFeaturesEXT &&
 +      (deviceYcbcr2Plane444FormatsFeaturesEXT[0].ycbcr2plane444Formats != deviceYcbcr2Plane444FormatsFeaturesEXT[1].ycbcr2plane444Formats))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT");
 +}
 +if (isZeroInitializeWorkgroupMemoryFeatures &&
 +      (deviceZeroInitializeWorkgroupMemoryFeatures[0].shaderZeroInitializeWorkgroupMemory != deviceZeroInitializeWorkgroupMemoryFeatures[1].shaderZeroInitializeWorkgroupMemory))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures");
 +}
@@@ -9985,12 -8773,49 +9985,10 @@@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPip
  #define VK_KHR_shader_integer_dot_product 1
  #define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION 1
  #define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME "VK_KHR_shader_integer_dot_product"
 -typedef struct VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR {
 -    VkStructureType    sType;
 -    void*              pNext;
 -    VkBool32           shaderIntegerDotProduct;
 -} VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR;
 -
 -typedef struct VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR {
 -    VkStructureType    sType;
 -    void*              pNext;
 -    VkBool32           integerDotProduct8BitUnsignedAccelerated;
 -    VkBool32           integerDotProduct8BitSignedAccelerated;
 -    VkBool32           integerDotProduct8BitMixedSignednessAccelerated;
 -    VkBool32           integerDotProduct4x8BitPackedUnsignedAccelerated;
 -    VkBool32           integerDotProduct4x8BitPackedSignedAccelerated;
 -    VkBool32           integerDotProduct4x8BitPackedMixedSignednessAccelerated;
 -    VkBool32           integerDotProduct16BitUnsignedAccelerated;
 -    VkBool32           integerDotProduct16BitSignedAccelerated;
 -    VkBool32           integerDotProduct16BitMixedSignednessAccelerated;
 -    VkBool32           integerDotProduct32BitUnsignedAccelerated;
 -    VkBool32           integerDotProduct32BitSignedAccelerated;
 -    VkBool32           integerDotProduct32BitMixedSignednessAccelerated;
 -    VkBool32           integerDotProduct64BitUnsignedAccelerated;
 -    VkBool32           integerDotProduct64BitSignedAccelerated;
 -    VkBool32           integerDotProduct64BitMixedSignednessAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating8BitUnsignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating8BitSignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating16BitUnsignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating16BitSignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating32BitUnsignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating32BitSignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating64BitUnsignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating64BitSignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated;
 -} VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR;
 -
 +typedef VkPhysicalDeviceShaderIntegerDotProductFeatures VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR;
  
 +typedef VkPhysicalDeviceShaderIntegerDotProductProperties VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR;
  
  #define VK_KHR_pipeline_library 1
  #define VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION 1
  #define VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME "VK_KHR_pipeline_library"
@@@ -4314,15 -4165,6 +4314,17 @@@ tcu::TestStatus deviceProperties2 (Cont
                log << TestLog::Message << samplerFilterMinmaxProperties[0] << TestLog::EndMessage;
        if (khr_integer_dot_product)
                log << TestLog::Message << integerDotProductProperties[0] << TestLog::EndMessage;
 +      if (khr_inline_uniform_block)
 +              log << TestLog::Message << inlineUniformBlockProperties[0] << TestLog::EndMessage;
 +      if (khr_maintenance4)
 +              log << TestLog::Message << maintenance4Properties[0] << TestLog::EndMessage;
 +      if (khr_subgroup_size_control)
 +              log << TestLog::Message << subgroupSizeControlProperties[0] << TestLog::EndMessage;
 +      if (khr_texel_buffer_alignment)
 +              log << TestLog::Message << texelBufferAlignmentProperties[0] << TestLog::EndMessage;
 +
++      if (khr_integer_dot_product)
++              log << TestLog::Message << integerDotProductProperties[0] << TestLog::EndMessage;
  
        if ( khr_external_fence_capabilities || khr_external_memory_capabilities || khr_external_semaphore_capabilities )
        {
        {
                TCU_FAIL("Mismatch between VkPhysicalDeviceSamplerFilterMinmaxProperties");
        }
 +      if (khr_integer_dot_product &&
 +              (integerDotProductProperties[0].integerDotProduct8BitUnsignedAccelerated                                                                                != integerDotProductProperties[1].integerDotProduct8BitUnsignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProduct8BitSignedAccelerated                                                                                  != integerDotProductProperties[1].integerDotProduct8BitSignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProduct8BitMixedSignednessAccelerated                                                                 != integerDotProductProperties[1].integerDotProduct8BitMixedSignednessAccelerated ||
 +               integerDotProductProperties[0].integerDotProduct4x8BitPackedUnsignedAccelerated                                                                != integerDotProductProperties[1].integerDotProduct4x8BitPackedUnsignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProduct4x8BitPackedSignedAccelerated                                                                  != integerDotProductProperties[1].integerDotProduct4x8BitPackedSignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProduct4x8BitPackedMixedSignednessAccelerated                                                 != integerDotProductProperties[1].integerDotProduct4x8BitPackedMixedSignednessAccelerated ||
 +               integerDotProductProperties[0].integerDotProduct16BitUnsignedAccelerated                                                                               != integerDotProductProperties[1].integerDotProduct16BitUnsignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProduct16BitSignedAccelerated                                                                                 != integerDotProductProperties[1].integerDotProduct16BitSignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProduct16BitMixedSignednessAccelerated                                                                != integerDotProductProperties[1].integerDotProduct16BitMixedSignednessAccelerated ||
 +               integerDotProductProperties[0].integerDotProduct32BitUnsignedAccelerated                                                                               != integerDotProductProperties[1].integerDotProduct32BitUnsignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProduct32BitSignedAccelerated                                                                                 != integerDotProductProperties[1].integerDotProduct32BitSignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProduct32BitMixedSignednessAccelerated                                                                != integerDotProductProperties[1].integerDotProduct32BitMixedSignednessAccelerated ||
 +               integerDotProductProperties[0].integerDotProduct64BitUnsignedAccelerated                                                                               != integerDotProductProperties[1].integerDotProduct64BitUnsignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProduct64BitSignedAccelerated                                                                                 != integerDotProductProperties[1].integerDotProduct64BitSignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProduct64BitMixedSignednessAccelerated                                                                != integerDotProductProperties[1].integerDotProduct64BitMixedSignednessAccelerated ||
 +               integerDotProductProperties[0].integerDotProductAccumulatingSaturating8BitUnsignedAccelerated                                  != integerDotProductProperties[1].integerDotProductAccumulatingSaturating8BitUnsignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProductAccumulatingSaturating8BitSignedAccelerated                                    != integerDotProductProperties[1].integerDotProductAccumulatingSaturating8BitSignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated                   != integerDotProductProperties[1].integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ||
 +               integerDotProductProperties[0].integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated                  != integerDotProductProperties[1].integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated                    != integerDotProductProperties[1].integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated   != integerDotProductProperties[1].integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ||
 +               integerDotProductProperties[0].integerDotProductAccumulatingSaturating16BitUnsignedAccelerated                                 != integerDotProductProperties[1].integerDotProductAccumulatingSaturating16BitUnsignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProductAccumulatingSaturating16BitSignedAccelerated                                   != integerDotProductProperties[1].integerDotProductAccumulatingSaturating16BitSignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated                  != integerDotProductProperties[1].integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ||
 +               integerDotProductProperties[0].integerDotProductAccumulatingSaturating32BitUnsignedAccelerated                                 != integerDotProductProperties[1].integerDotProductAccumulatingSaturating32BitUnsignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProductAccumulatingSaturating32BitSignedAccelerated                                   != integerDotProductProperties[1].integerDotProductAccumulatingSaturating32BitSignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated                  != integerDotProductProperties[1].integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ||
 +               integerDotProductProperties[0].integerDotProductAccumulatingSaturating64BitUnsignedAccelerated                                 != integerDotProductProperties[1].integerDotProductAccumulatingSaturating64BitUnsignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProductAccumulatingSaturating64BitSignedAccelerated                                   != integerDotProductProperties[1].integerDotProductAccumulatingSaturating64BitSignedAccelerated ||
 +               integerDotProductProperties[0].integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated                  != integerDotProductProperties[1].integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated))
 +      {
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR");
 +      }
 +      if (khr_inline_uniform_block &&
 +              (inlineUniformBlockProperties[0].maxInlineUniformBlockSize                                                                      != inlineUniformBlockProperties[1].maxInlineUniformBlockSize ||
 +               inlineUniformBlockProperties[0].maxPerStageDescriptorInlineUniformBlocks                                       != inlineUniformBlockProperties[1].maxPerStageDescriptorInlineUniformBlocks ||
 +               inlineUniformBlockProperties[0].maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks        != inlineUniformBlockProperties[1].maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks ||
 +               inlineUniformBlockProperties[0].maxDescriptorSetInlineUniformBlocks                                            != inlineUniformBlockProperties[1].maxDescriptorSetInlineUniformBlocks ||
 +               inlineUniformBlockProperties[0].maxDescriptorSetUpdateAfterBindInlineUniformBlocks                     != inlineUniformBlockProperties[1].maxDescriptorSetUpdateAfterBindInlineUniformBlocks))
 +      {
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceInlineUniformBlockProperties");
 +      }
 +      if (khr_maintenance4 &&
 +              (maintenance4Properties[0].maxBufferSize        != maintenance4Properties[1].maxBufferSize))
 +      {
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceMaintenance4Properties");
 +      }
 +      if (khr_subgroup_size_control &&
 +              (subgroupSizeControlProperties[0].minSubgroupSize                               != subgroupSizeControlProperties[1].minSubgroupSize ||
 +               subgroupSizeControlProperties[0].maxSubgroupSize                               != subgroupSizeControlProperties[1].maxSubgroupSize ||
 +               subgroupSizeControlProperties[0].maxComputeWorkgroupSubgroups  != subgroupSizeControlProperties[1].maxComputeWorkgroupSubgroups ||
 +               subgroupSizeControlProperties[0].requiredSubgroupSizeStages            != subgroupSizeControlProperties[1].requiredSubgroupSizeStages))
 +      {
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceSubgroupSizeControlProperties");
 +      }
 +      if (khr_texel_buffer_alignment &&
 +              (texelBufferAlignmentProperties[0].storageTexelBufferOffsetAlignmentBytes               != texelBufferAlignmentProperties[1].storageTexelBufferOffsetAlignmentBytes ||
 +               texelBufferAlignmentProperties[0].storageTexelBufferOffsetSingleTexelAlignment != texelBufferAlignmentProperties[1].storageTexelBufferOffsetSingleTexelAlignment ||
 +               texelBufferAlignmentProperties[0].uniformTexelBufferOffsetAlignmentBytes               != texelBufferAlignmentProperties[1].uniformTexelBufferOffsetAlignmentBytes ||
 +               texelBufferAlignmentProperties[0].uniformTexelBufferOffsetSingleTexelAlignment != texelBufferAlignmentProperties[1].uniformTexelBufferOffsetSingleTexelAlignment))
 +      {
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceTexelBufferAlignmentProperties");
 +      }
  
+       if (khr_integer_dot_product &&
+               (integerDotProductProperties[0].integerDotProduct8BitUnsignedAccelerated                                                                                != integerDotProductProperties[1].integerDotProduct8BitUnsignedAccelerated ||
+                integerDotProductProperties[0].integerDotProduct8BitSignedAccelerated                                                                                  != integerDotProductProperties[1].integerDotProduct8BitSignedAccelerated ||
+                integerDotProductProperties[0].integerDotProduct8BitMixedSignednessAccelerated                                                                 != integerDotProductProperties[1].integerDotProduct8BitMixedSignednessAccelerated ||
+                integerDotProductProperties[0].integerDotProduct4x8BitPackedUnsignedAccelerated                                                                != integerDotProductProperties[1].integerDotProduct4x8BitPackedUnsignedAccelerated ||
+                integerDotProductProperties[0].integerDotProduct4x8BitPackedSignedAccelerated                                                                  != integerDotProductProperties[1].integerDotProduct4x8BitPackedSignedAccelerated ||
+                integerDotProductProperties[0].integerDotProduct4x8BitPackedMixedSignednessAccelerated                                                 != integerDotProductProperties[1].integerDotProduct4x8BitPackedMixedSignednessAccelerated ||
+                integerDotProductProperties[0].integerDotProduct16BitUnsignedAccelerated                                                                               != integerDotProductProperties[1].integerDotProduct16BitUnsignedAccelerated ||
+                integerDotProductProperties[0].integerDotProduct16BitSignedAccelerated                                                                                 != integerDotProductProperties[1].integerDotProduct16BitSignedAccelerated ||
+                integerDotProductProperties[0].integerDotProduct16BitMixedSignednessAccelerated                                                                != integerDotProductProperties[1].integerDotProduct16BitMixedSignednessAccelerated ||
+                integerDotProductProperties[0].integerDotProduct32BitUnsignedAccelerated                                                                               != integerDotProductProperties[1].integerDotProduct32BitUnsignedAccelerated ||
+                integerDotProductProperties[0].integerDotProduct32BitSignedAccelerated                                                                                 != integerDotProductProperties[1].integerDotProduct32BitSignedAccelerated ||
+                integerDotProductProperties[0].integerDotProduct32BitMixedSignednessAccelerated                                                                != integerDotProductProperties[1].integerDotProduct32BitMixedSignednessAccelerated ||
+                integerDotProductProperties[0].integerDotProduct64BitUnsignedAccelerated                                                                               != integerDotProductProperties[1].integerDotProduct64BitUnsignedAccelerated ||
+                integerDotProductProperties[0].integerDotProduct64BitSignedAccelerated                                                                                 != integerDotProductProperties[1].integerDotProduct64BitSignedAccelerated ||
+                integerDotProductProperties[0].integerDotProduct64BitMixedSignednessAccelerated                                                                != integerDotProductProperties[1].integerDotProduct64BitMixedSignednessAccelerated ||
+                integerDotProductProperties[0].integerDotProductAccumulatingSaturating8BitUnsignedAccelerated                                  != integerDotProductProperties[1].integerDotProductAccumulatingSaturating8BitUnsignedAccelerated ||
+                integerDotProductProperties[0].integerDotProductAccumulatingSaturating8BitSignedAccelerated                                    != integerDotProductProperties[1].integerDotProductAccumulatingSaturating8BitSignedAccelerated ||
+                integerDotProductProperties[0].integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated                   != integerDotProductProperties[1].integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ||
+                integerDotProductProperties[0].integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated                  != integerDotProductProperties[1].integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ||
+                integerDotProductProperties[0].integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated                    != integerDotProductProperties[1].integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ||
+                integerDotProductProperties[0].integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated   != integerDotProductProperties[1].integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ||
+                integerDotProductProperties[0].integerDotProductAccumulatingSaturating16BitUnsignedAccelerated                                 != integerDotProductProperties[1].integerDotProductAccumulatingSaturating16BitUnsignedAccelerated ||
+                integerDotProductProperties[0].integerDotProductAccumulatingSaturating16BitSignedAccelerated                                   != integerDotProductProperties[1].integerDotProductAccumulatingSaturating16BitSignedAccelerated ||
+                integerDotProductProperties[0].integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated                  != integerDotProductProperties[1].integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ||
+                integerDotProductProperties[0].integerDotProductAccumulatingSaturating32BitUnsignedAccelerated                                 != integerDotProductProperties[1].integerDotProductAccumulatingSaturating32BitUnsignedAccelerated ||
+                integerDotProductProperties[0].integerDotProductAccumulatingSaturating32BitSignedAccelerated                                   != integerDotProductProperties[1].integerDotProductAccumulatingSaturating32BitSignedAccelerated ||
+                integerDotProductProperties[0].integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated                  != integerDotProductProperties[1].integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ||
+                integerDotProductProperties[0].integerDotProductAccumulatingSaturating64BitUnsignedAccelerated                                 != integerDotProductProperties[1].integerDotProductAccumulatingSaturating64BitUnsignedAccelerated ||
+                integerDotProductProperties[0].integerDotProductAccumulatingSaturating64BitSignedAccelerated                                   != integerDotProductProperties[1].integerDotProductAccumulatingSaturating64BitSignedAccelerated ||
+                integerDotProductProperties[0].integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated                  != integerDotProductProperties[1].integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated))
+       {
+               TCU_FAIL("Mismatch between VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR");
+       }
        if (isExtensionSupported(properties, RequiredExtension("VK_KHR_push_descriptor")))
        {
                VkPhysicalDevicePushDescriptorPropertiesKHR             pushDescriptorProperties[count];
@@@ -1732,80 -1727,25 +1732,81 @@@ def writeDeviceFeatures2(api, filename)
        # this is not posible to determine from vulkan_core.h, if new feature structures
        # are added they should be manualy added to this list
        testedStructures = [
 -              'VkPhysicalDeviceConditionalRenderingFeaturesEXT',
 -              'VkPhysicalDeviceScalarBlockLayoutFeatures',
 -              'VkPhysicalDevicePerformanceQueryFeaturesKHR',
 -              'VkPhysicalDevice16BitStorageFeatures',
 -              'VkPhysicalDeviceMultiviewFeatures',
 -              'VkPhysicalDeviceProtectedMemoryFeatures',
 -              'VkPhysicalDeviceSamplerYcbcrConversionFeatures',
 -              'VkPhysicalDeviceVariablePointersFeatures',
 +              'VkPhysicalDevice4444FormatsFeaturesEXT',
                'VkPhysicalDevice8BitStorageFeatures',
 -              'VkPhysicalDeviceShaderAtomicInt64Features',
 -              'VkPhysicalDeviceShaderFloat16Int8Features',
 +              'VkPhysicalDevice16BitStorageFeatures',
 +              'VkPhysicalDeviceAccelerationStructureFeaturesKHR',
 +              'VkPhysicalDeviceASTCDecodeFeaturesEXT',
 +              'VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT',
                'VkPhysicalDeviceBufferDeviceAddressFeaturesEXT',
                'VkPhysicalDeviceBufferDeviceAddressFeatures',
 +              'VkPhysicalDeviceConditionalRenderingFeaturesEXT',
 +              'VkPhysicalDeviceCustomBorderColorFeaturesEXT',
 +              'VkPhysicalDeviceColorWriteEnableFeaturesEXT',
                'VkPhysicalDeviceDescriptorIndexingFeatures',
 -              'VkPhysicalDeviceTimelineSemaphoreFeatures',
 +              'VkPhysicalDeviceDepthClipEnableFeaturesEXT',
 +              'VkPhysicalDeviceDynamicRenderingFeatures',
 +              'VkPhysicalDeviceExtendedDynamicStateFeaturesEXT',
 +              'VkPhysicalDeviceExtendedDynamicState2FeaturesEXT',
                'VkPhysicalDeviceFragmentDensityMapFeaturesEXT',
                'VkPhysicalDeviceFragmentDensityMap2FeaturesEXT',
 +              'VkPhysicalDeviceFragmentShadingRateFeaturesKHR',
 +              'VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT',
 +              'VkPhysicalDeviceInlineUniformBlockFeatures',
 +              'VkPhysicalDeviceIndexTypeUint8FeaturesEXT',
 +              'VkPhysicalDeviceImagelessFramebufferFeatures',
 +              'VkPhysicalDeviceImageRobustnessFeatures',
 +              'VkPhysicalDeviceHostQueryResetFeatures',
 +              'VkPhysicalDeviceLineRasterizationFeaturesEXT',
 +              'VkPhysicalDeviceMaintenance4Features',
 +              'VkPhysicalDeviceMultiviewFeatures',
 +              'VkPhysicalDeviceMultiDrawFeaturesEXT',
 +              'VkPhysicalDeviceMemoryPriorityFeaturesEXT',
 +              'VkPhysicalDeviceDeviceMemoryReportFeaturesEXT',
 +              'VkPhysicalDevicePerformanceQueryFeaturesKHR',
 +              'VkPhysicalDevicePipelineCreationCacheControlFeatures',
 +              'VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR',
 +              'VkPhysicalDevicePresentIdFeaturesKHR',
 +              'VkPhysicalDevicePresentWaitFeaturesKHR',
 +              'VkPhysicalDeviceProtectedMemoryFeatures',
 +              'VkPhysicalDeviceProvokingVertexFeaturesEXT',
 +              'VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT',
 +              'VkPhysicalDevicePrivateDataFeatures',
 +              'VkPhysicalDeviceRayTracingPipelineFeaturesKHR',
 +              'VkPhysicalDeviceRayQueryFeaturesKHR',
 +              'VkPhysicalDeviceRobustness2FeaturesEXT',
 +              'VkPhysicalDeviceSamplerYcbcrConversionFeatures',
 +              'VkPhysicalDeviceScalarBlockLayoutFeatures',
 +              'VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures',
 +              'VkPhysicalDeviceShaderAtomicInt64Features',
 +              'VkPhysicalDeviceShaderAtomicFloatFeaturesEXT',
 +              'VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT',
 +              'VkPhysicalDeviceShaderFloat16Int8Features',
 +              'VkPhysicalDeviceShaderClockFeaturesKHR',
 +              'VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures',
 +              'VkPhysicalDeviceShaderDrawParametersFeatures',
 +              'VkPhysicalDeviceShaderIntegerDotProductFeatures',
+               'VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR',
 +              'VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures',
 +              'VkPhysicalDeviceShaderTerminateInvocationFeatures',
 +              'VkPhysicalDeviceSubgroupSizeControlFeatures',
 +              'VkPhysicalDeviceSynchronization2Features',
 +              'VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT',
 +              'VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT',
 +              'VkPhysicalDeviceTextureCompressionASTCHDRFeatures',
 +              'VkPhysicalDeviceTimelineSemaphoreFeatures',
 +              'VkPhysicalDeviceTransformFeedbackFeaturesEXT',
 +              'VkPhysicalDeviceUniformBufferStandardLayoutFeatures',
 +              'VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR',
 +              'VkPhysicalDeviceVariablePointersFeatures',
 +              'VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT',
 +              'VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT',
 +              'VkPhysicalDeviceVulkanMemoryModelFeaturesKHR',
 +              'VkPhysicalDeviceYcbcrImageArraysFeaturesEXT',
 +              'VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT',
 +              'VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures',
        ]
 +
        # helper class used to encapsulate all data needed during generation
        class StructureDetail:
                def __init__ (self, name):
@@@ -98,21 -98,4 +98,22 @@@ VK_EXT_multi_draw                                                   DEVIC
  VK_KHR_shader_subgroup_uniform_control_flow   DEVICE
  VK_KHR_present_id                                                     DEVICE
  VK_KHR_present_wait                                                   DEVICE
 +VK_KHR_format_feature_flags2                          DEVICE 1_3_0
 +VK_KHR_maintenance4                                                   DEVICE 1_3_0
 +VK_KHR_dynamic_rendering                                      DEVICE 1_3_0
 +VK_EXT_extended_dynamic_state                         DEVICE 1_3_0
 +VK_EXT_extended_dynamic_state2                                DEVICE
 +VK_EXT_4444_formats                                                   DEVICE 1_3_0
 +VK_KHR_shader_integer_dot_product                     DEVICE 1_3_0
 +VK_EXT_image_robustness                                               DEVICE 1_3_0
 +VK_EXT_inline_uniform_block                                   DEVICE 1_3_0
 +VK_EXT_pipeline_creation_cache_control                DEVICE 1_3_0
 +VK_EXT_pipeline_creation_feedback                     DEVICE 1_3_0
 +VK_EXT_private_data                                                   DEVICE 1_3_0
 +VK_EXT_shader_demote_to_helper_invocation     DEVICE 1_3_0
 +VK_EXT_subgroup_size_control                          DEVICE 1_3_0
 +VK_EXT_texel_buffer_alignment                         DEVICE 1_3_0
 +VK_EXT_texture_compression_astc_hdr                   DEVICE 1_3_0
 +VK_EXT_tooling_info                                                   DEVICE 1_3_0
 +VK_EXT_ycbcr_2plane_444_formats                               DEVICE 1_3_0
+ VK_KHR_shader_integer_dot_product                     DEVICE
@@@ -9081,12 -7869,49 +9081,10 @@@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPip
  #define VK_KHR_shader_integer_dot_product 1
  #define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION 1
  #define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME "VK_KHR_shader_integer_dot_product"
 -typedef struct VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR {
 -    VkStructureType    sType;
 -    void*              pNext;
 -    VkBool32           shaderIntegerDotProduct;
 -} VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR;
 -
 -typedef struct VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR {
 -    VkStructureType    sType;
 -    void*              pNext;
 -    VkBool32           integerDotProduct8BitUnsignedAccelerated;
 -    VkBool32           integerDotProduct8BitSignedAccelerated;
 -    VkBool32           integerDotProduct8BitMixedSignednessAccelerated;
 -    VkBool32           integerDotProduct4x8BitPackedUnsignedAccelerated;
 -    VkBool32           integerDotProduct4x8BitPackedSignedAccelerated;
 -    VkBool32           integerDotProduct4x8BitPackedMixedSignednessAccelerated;
 -    VkBool32           integerDotProduct16BitUnsignedAccelerated;
 -    VkBool32           integerDotProduct16BitSignedAccelerated;
 -    VkBool32           integerDotProduct16BitMixedSignednessAccelerated;
 -    VkBool32           integerDotProduct32BitUnsignedAccelerated;
 -    VkBool32           integerDotProduct32BitSignedAccelerated;
 -    VkBool32           integerDotProduct32BitMixedSignednessAccelerated;
 -    VkBool32           integerDotProduct64BitUnsignedAccelerated;
 -    VkBool32           integerDotProduct64BitSignedAccelerated;
 -    VkBool32           integerDotProduct64BitMixedSignednessAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating8BitUnsignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating8BitSignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating16BitUnsignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating16BitSignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating32BitUnsignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating32BitSignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating64BitUnsignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating64BitSignedAccelerated;
 -    VkBool32           integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated;
 -} VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR;
 -
 +typedef VkPhysicalDeviceShaderIntegerDotProductFeatures VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR;
  
 +typedef VkPhysicalDeviceShaderIntegerDotProductProperties VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR;
  
  #define VK_KHR_pipeline_library 1
  #define VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION 1
  #define VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME "VK_KHR_pipeline_library"