/* WARNING: This is auto-generated file. Do not modify, since changes will
 * be lost! Modify the generating script instead.
 * This file was generated by /scripts/gen_framework.py
 */
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];
VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR					deviceGlobalPriorityQueryFeaturesKHR[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];
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 isGlobalPriorityQueryFeaturesKHR				= checkExtension(properties, "VK_KHR_global_priority");
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 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");
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(&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(&deviceGlobalPriorityQueryFeaturesKHR[ndx],			0xFF * ndx, sizeof(VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR));
	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(&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 = is4444FormatsFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	device4444FormatsFeaturesEXT[ndx].pNext = &device8BitStorageFeatures[ndx];

	device8BitStorageFeatures[ndx].sType = is8BitStorageFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	device8BitStorageFeatures[ndx].pNext = &device16BitStorageFeatures[ndx];

	device16BitStorageFeatures[ndx].sType = is16BitStorageFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	device16BitStorageFeatures[ndx].pNext = &deviceAccelerationStructureFeaturesKHR[ndx];

	deviceAccelerationStructureFeaturesKHR[ndx].sType = isAccelerationStructureFeaturesKHR ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceAccelerationStructureFeaturesKHR[ndx].pNext = &deviceASTCDecodeFeaturesEXT[ndx];

	deviceASTCDecodeFeaturesEXT[ndx].sType = isASTCDecodeFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceASTCDecodeFeaturesEXT[ndx].pNext = &deviceBlendOperationAdvancedFeaturesEXT[ndx];

	deviceBlendOperationAdvancedFeaturesEXT[ndx].sType = isBlendOperationAdvancedFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceBlendOperationAdvancedFeaturesEXT[ndx].pNext = &deviceBufferDeviceAddressFeaturesEXT[ndx];

	deviceBufferDeviceAddressFeaturesEXT[ndx].sType = isBufferDeviceAddressFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceBufferDeviceAddressFeaturesEXT[ndx].pNext = &deviceBufferDeviceAddressFeatures[ndx];

	deviceBufferDeviceAddressFeatures[ndx].sType = isBufferDeviceAddressFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceBufferDeviceAddressFeatures[ndx].pNext = &deviceConditionalRenderingFeaturesEXT[ndx];

	deviceConditionalRenderingFeaturesEXT[ndx].sType = isConditionalRenderingFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceConditionalRenderingFeaturesEXT[ndx].pNext = &deviceCustomBorderColorFeaturesEXT[ndx];

	deviceCustomBorderColorFeaturesEXT[ndx].sType = isCustomBorderColorFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceCustomBorderColorFeaturesEXT[ndx].pNext = &deviceColorWriteEnableFeaturesEXT[ndx];

	deviceColorWriteEnableFeaturesEXT[ndx].sType = isColorWriteEnableFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceColorWriteEnableFeaturesEXT[ndx].pNext = &deviceDescriptorIndexingFeatures[ndx];

	deviceDescriptorIndexingFeatures[ndx].sType = isDescriptorIndexingFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceDescriptorIndexingFeatures[ndx].pNext = &deviceDepthClipEnableFeaturesEXT[ndx];

	deviceDepthClipEnableFeaturesEXT[ndx].sType = isDepthClipEnableFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceDepthClipEnableFeaturesEXT[ndx].pNext = &deviceDynamicRenderingFeatures[ndx];

	deviceDynamicRenderingFeatures[ndx].sType = isDynamicRenderingFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceDynamicRenderingFeatures[ndx].pNext = &deviceExtendedDynamicStateFeaturesEXT[ndx];

	deviceExtendedDynamicStateFeaturesEXT[ndx].sType = isExtendedDynamicStateFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceExtendedDynamicStateFeaturesEXT[ndx].pNext = &deviceExtendedDynamicState2FeaturesEXT[ndx];

	deviceExtendedDynamicState2FeaturesEXT[ndx].sType = isExtendedDynamicState2FeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceExtendedDynamicState2FeaturesEXT[ndx].pNext = &deviceFragmentDensityMapFeaturesEXT[ndx];

	deviceFragmentDensityMapFeaturesEXT[ndx].sType = isFragmentDensityMapFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceFragmentDensityMapFeaturesEXT[ndx].pNext = &deviceFragmentDensityMap2FeaturesEXT[ndx];

	deviceFragmentDensityMap2FeaturesEXT[ndx].sType = isFragmentDensityMap2FeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceFragmentDensityMap2FeaturesEXT[ndx].pNext = &deviceFragmentShadingRateFeaturesKHR[ndx];

	deviceFragmentShadingRateFeaturesKHR[ndx].sType = isFragmentShadingRateFeaturesKHR ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceFragmentShadingRateFeaturesKHR[ndx].pNext = &deviceGlobalPriorityQueryFeaturesKHR[ndx];

	deviceGlobalPriorityQueryFeaturesKHR[ndx].sType = isGlobalPriorityQueryFeaturesKHR ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceGlobalPriorityQueryFeaturesKHR[ndx].pNext = &deviceInlineUniformBlockFeatures[ndx];

	deviceInlineUniformBlockFeatures[ndx].sType = isInlineUniformBlockFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceInlineUniformBlockFeatures[ndx].pNext = &deviceIndexTypeUint8FeaturesEXT[ndx];

	deviceIndexTypeUint8FeaturesEXT[ndx].sType = isIndexTypeUint8FeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceIndexTypeUint8FeaturesEXT[ndx].pNext = &deviceImagelessFramebufferFeatures[ndx];

	deviceImagelessFramebufferFeatures[ndx].sType = isImagelessFramebufferFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceImagelessFramebufferFeatures[ndx].pNext = &deviceImageRobustnessFeatures[ndx];

	deviceImageRobustnessFeatures[ndx].sType = isImageRobustnessFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceImageRobustnessFeatures[ndx].pNext = &deviceHostQueryResetFeatures[ndx];

	deviceHostQueryResetFeatures[ndx].sType = isHostQueryResetFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceHostQueryResetFeatures[ndx].pNext = &deviceLineRasterizationFeaturesEXT[ndx];

	deviceLineRasterizationFeaturesEXT[ndx].sType = isLineRasterizationFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceLineRasterizationFeaturesEXT[ndx].pNext = &deviceMaintenance4Features[ndx];

	deviceMaintenance4Features[ndx].sType = isMaintenance4Features ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceMaintenance4Features[ndx].pNext = &deviceMultiviewFeatures[ndx];

	deviceMultiviewFeatures[ndx].sType = isMultiviewFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceMultiviewFeatures[ndx].pNext = &deviceMultiDrawFeaturesEXT[ndx];

	deviceMultiDrawFeaturesEXT[ndx].sType = isMultiDrawFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceMultiDrawFeaturesEXT[ndx].pNext = &deviceMemoryPriorityFeaturesEXT[ndx];

	deviceMemoryPriorityFeaturesEXT[ndx].sType = isMemoryPriorityFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceMemoryPriorityFeaturesEXT[ndx].pNext = &deviceDeviceMemoryReportFeaturesEXT[ndx];

	deviceDeviceMemoryReportFeaturesEXT[ndx].sType = isDeviceMemoryReportFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceDeviceMemoryReportFeaturesEXT[ndx].pNext = &devicePerformanceQueryFeaturesKHR[ndx];

	devicePerformanceQueryFeaturesKHR[ndx].sType = isPerformanceQueryFeaturesKHR ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR : VK_STRUCTURE_TYPE_MAX_ENUM;
	devicePerformanceQueryFeaturesKHR[ndx].pNext = &devicePipelineCreationCacheControlFeatures[ndx];

	devicePipelineCreationCacheControlFeatures[ndx].sType = isPipelineCreationCacheControlFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	devicePipelineCreationCacheControlFeatures[ndx].pNext = &devicePipelineExecutablePropertiesFeaturesKHR[ndx];

	devicePipelineExecutablePropertiesFeaturesKHR[ndx].sType = isPipelineExecutablePropertiesFeaturesKHR ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR : VK_STRUCTURE_TYPE_MAX_ENUM;
	devicePipelineExecutablePropertiesFeaturesKHR[ndx].pNext = &devicePresentIdFeaturesKHR[ndx];

	devicePresentIdFeaturesKHR[ndx].sType = isPresentIdFeaturesKHR ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR : VK_STRUCTURE_TYPE_MAX_ENUM;
	devicePresentIdFeaturesKHR[ndx].pNext = &devicePresentWaitFeaturesKHR[ndx];

	devicePresentWaitFeaturesKHR[ndx].sType = isPresentWaitFeaturesKHR ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR : VK_STRUCTURE_TYPE_MAX_ENUM;
	devicePresentWaitFeaturesKHR[ndx].pNext = &deviceProtectedMemoryFeatures[ndx];

	deviceProtectedMemoryFeatures[ndx].sType = isProtectedMemoryFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceProtectedMemoryFeatures[ndx].pNext = &deviceProvokingVertexFeaturesEXT[ndx];

	deviceProvokingVertexFeaturesEXT[ndx].sType = isProvokingVertexFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceProvokingVertexFeaturesEXT[ndx].pNext = &devicePrimitiveTopologyListRestartFeaturesEXT[ndx];

	devicePrimitiveTopologyListRestartFeaturesEXT[ndx].sType = isPrimitiveTopologyListRestartFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	devicePrimitiveTopologyListRestartFeaturesEXT[ndx].pNext = &devicePrivateDataFeatures[ndx];

	devicePrivateDataFeatures[ndx].sType = isPrivateDataFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	devicePrivateDataFeatures[ndx].pNext = &deviceRayTracingPipelineFeaturesKHR[ndx];

	deviceRayTracingPipelineFeaturesKHR[ndx].sType = isRayTracingPipelineFeaturesKHR ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceRayTracingPipelineFeaturesKHR[ndx].pNext = &deviceRayQueryFeaturesKHR[ndx];

	deviceRayQueryFeaturesKHR[ndx].sType = isRayQueryFeaturesKHR ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceRayQueryFeaturesKHR[ndx].pNext = &deviceRobustness2FeaturesEXT[ndx];

	deviceRobustness2FeaturesEXT[ndx].sType = isRobustness2FeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceRobustness2FeaturesEXT[ndx].pNext = &deviceSamplerYcbcrConversionFeatures[ndx];

	deviceSamplerYcbcrConversionFeatures[ndx].sType = isSamplerYcbcrConversionFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceSamplerYcbcrConversionFeatures[ndx].pNext = &deviceScalarBlockLayoutFeatures[ndx];

	deviceScalarBlockLayoutFeatures[ndx].sType = isScalarBlockLayoutFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceScalarBlockLayoutFeatures[ndx].pNext = &deviceSeparateDepthStencilLayoutsFeatures[ndx];

	deviceSeparateDepthStencilLayoutsFeatures[ndx].sType = isSeparateDepthStencilLayoutsFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceSeparateDepthStencilLayoutsFeatures[ndx].pNext = &deviceShaderAtomicInt64Features[ndx];

	deviceShaderAtomicInt64Features[ndx].sType = isShaderAtomicInt64Features ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceShaderAtomicInt64Features[ndx].pNext = &deviceShaderAtomicFloatFeaturesEXT[ndx];

	deviceShaderAtomicFloatFeaturesEXT[ndx].sType = isShaderAtomicFloatFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceShaderAtomicFloatFeaturesEXT[ndx].pNext = &deviceShaderAtomicFloat2FeaturesEXT[ndx];

	deviceShaderAtomicFloat2FeaturesEXT[ndx].sType = isShaderAtomicFloat2FeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceShaderAtomicFloat2FeaturesEXT[ndx].pNext = &deviceShaderFloat16Int8Features[ndx];

	deviceShaderFloat16Int8Features[ndx].sType = isShaderFloat16Int8Features ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceShaderFloat16Int8Features[ndx].pNext = &deviceShaderClockFeaturesKHR[ndx];

	deviceShaderClockFeaturesKHR[ndx].sType = isShaderClockFeaturesKHR ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceShaderClockFeaturesKHR[ndx].pNext = &deviceShaderDemoteToHelperInvocationFeatures[ndx];

	deviceShaderDemoteToHelperInvocationFeatures[ndx].sType = isShaderDemoteToHelperInvocationFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceShaderDemoteToHelperInvocationFeatures[ndx].pNext = &deviceShaderDrawParametersFeatures[ndx];

	deviceShaderDrawParametersFeatures[ndx].sType = isShaderDrawParametersFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceShaderDrawParametersFeatures[ndx].pNext = &deviceShaderIntegerDotProductFeatures[ndx];

	deviceShaderIntegerDotProductFeatures[ndx].sType = isShaderIntegerDotProductFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceShaderIntegerDotProductFeatures[ndx].pNext = &deviceShaderSubgroupExtendedTypesFeatures[ndx];

	deviceShaderSubgroupExtendedTypesFeatures[ndx].sType = isShaderSubgroupExtendedTypesFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceShaderSubgroupExtendedTypesFeatures[ndx].pNext = &deviceShaderTerminateInvocationFeatures[ndx];

	deviceShaderTerminateInvocationFeatures[ndx].sType = isShaderTerminateInvocationFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceShaderTerminateInvocationFeatures[ndx].pNext = &deviceSubgroupSizeControlFeatures[ndx];

	deviceSubgroupSizeControlFeatures[ndx].sType = isSubgroupSizeControlFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceSubgroupSizeControlFeatures[ndx].pNext = &deviceSynchronization2Features[ndx];

	deviceSynchronization2Features[ndx].sType = isSynchronization2Features ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceSynchronization2Features[ndx].pNext = &deviceFragmentShaderInterlockFeaturesEXT[ndx];

	deviceFragmentShaderInterlockFeaturesEXT[ndx].sType = isFragmentShaderInterlockFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceFragmentShaderInterlockFeaturesEXT[ndx].pNext = &deviceTexelBufferAlignmentFeaturesEXT[ndx];

	deviceTexelBufferAlignmentFeaturesEXT[ndx].sType = isTexelBufferAlignmentFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceTexelBufferAlignmentFeaturesEXT[ndx].pNext = &deviceTextureCompressionASTCHDRFeatures[ndx];

	deviceTextureCompressionASTCHDRFeatures[ndx].sType = isTextureCompressionASTCHDRFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceTextureCompressionASTCHDRFeatures[ndx].pNext = &deviceTimelineSemaphoreFeatures[ndx];

	deviceTimelineSemaphoreFeatures[ndx].sType = isTimelineSemaphoreFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceTimelineSemaphoreFeatures[ndx].pNext = &deviceTransformFeedbackFeaturesEXT[ndx];

	deviceTransformFeedbackFeaturesEXT[ndx].sType = isTransformFeedbackFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceTransformFeedbackFeaturesEXT[ndx].pNext = &deviceUniformBufferStandardLayoutFeatures[ndx];

	deviceUniformBufferStandardLayoutFeatures[ndx].sType = isUniformBufferStandardLayoutFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceUniformBufferStandardLayoutFeatures[ndx].pNext = &deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[ndx];

	deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[ndx].sType = isWorkgroupMemoryExplicitLayoutFeaturesKHR ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceWorkgroupMemoryExplicitLayoutFeaturesKHR[ndx].pNext = &deviceVariablePointersFeatures[ndx];

	deviceVariablePointersFeatures[ndx].sType = isVariablePointersFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceVariablePointersFeatures[ndx].pNext = &deviceVertexAttributeDivisorFeaturesEXT[ndx];

	deviceVertexAttributeDivisorFeaturesEXT[ndx].sType = isVertexAttributeDivisorFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceVertexAttributeDivisorFeaturesEXT[ndx].pNext = &deviceVertexInputDynamicStateFeaturesEXT[ndx];

	deviceVertexInputDynamicStateFeaturesEXT[ndx].sType = isVertexInputDynamicStateFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceVertexInputDynamicStateFeaturesEXT[ndx].pNext = &deviceVulkanMemoryModelFeaturesKHR[ndx];

	deviceVulkanMemoryModelFeaturesKHR[ndx].sType = isVulkanMemoryModelFeaturesKHR ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceVulkanMemoryModelFeaturesKHR[ndx].pNext = &deviceYcbcrImageArraysFeaturesEXT[ndx];

	deviceYcbcrImageArraysFeaturesEXT[ndx].sType = isYcbcrImageArraysFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceYcbcrImageArraysFeaturesEXT[ndx].pNext = &deviceYcbcr2Plane444FormatsFeaturesEXT[ndx];

	deviceYcbcr2Plane444FormatsFeaturesEXT[ndx].sType = isYcbcr2Plane444FormatsFeaturesEXT ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceYcbcr2Plane444FormatsFeaturesEXT[ndx].pNext = &deviceZeroInitializeWorkgroupMemoryFeatures[ndx];

	deviceZeroInitializeWorkgroupMemoryFeatures[ndx].sType = isZeroInitializeWorkgroupMemoryFeatures ? VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES : VK_STRUCTURE_TYPE_MAX_ENUM;
	deviceZeroInitializeWorkgroupMemoryFeatures[ndx].pNext = DE_NULL;

	deMemset(&extFeatures.features, 0xcd, sizeof(extFeatures.features));
	extFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
	extFeatures.pNext = &device4444FormatsFeaturesEXT[ndx];
	vki.getPhysicalDeviceFeatures2(physicalDevice, &extFeatures);
}

if (is4444FormatsFeaturesEXT)
	log << TestLog::Message << device4444FormatsFeaturesEXT[0] << TestLog::EndMessage;
if (is8BitStorageFeatures)
	log << TestLog::Message << device8BitStorageFeatures[0] << TestLog::EndMessage;
if (is16BitStorageFeatures)
	log << TestLog::Message << device16BitStorageFeatures[0] << TestLog::EndMessage;
if (isAccelerationStructureFeaturesKHR)
	log << TestLog::Message << deviceAccelerationStructureFeaturesKHR[0] << TestLog::EndMessage;
if (isASTCDecodeFeaturesEXT)
	log << TestLog::Message << deviceASTCDecodeFeaturesEXT[0] << TestLog::EndMessage;
if (isBlendOperationAdvancedFeaturesEXT)
	log << TestLog::Message << deviceBlendOperationAdvancedFeaturesEXT[0] << TestLog::EndMessage;
if (isBufferDeviceAddressFeaturesEXT)
	log << TestLog::Message << deviceBufferDeviceAddressFeaturesEXT[0] << TestLog::EndMessage;
if (isBufferDeviceAddressFeatures)
	log << TestLog::Message << deviceBufferDeviceAddressFeatures[0] << TestLog::EndMessage;
if (isConditionalRenderingFeaturesEXT)
	log << TestLog::Message << deviceConditionalRenderingFeaturesEXT[0] << TestLog::EndMessage;
if (isCustomBorderColorFeaturesEXT)
	log << TestLog::Message << deviceCustomBorderColorFeaturesEXT[0] << TestLog::EndMessage;
if (isColorWriteEnableFeaturesEXT)
	log << TestLog::Message << deviceColorWriteEnableFeaturesEXT[0] << TestLog::EndMessage;
if (isDescriptorIndexingFeatures)
	log << TestLog::Message << deviceDescriptorIndexingFeatures[0] << TestLog::EndMessage;
if (isDepthClipEnableFeaturesEXT)
	log << TestLog::Message << deviceDepthClipEnableFeaturesEXT[0] << TestLog::EndMessage;
if (isDynamicRenderingFeatures)
	log << TestLog::Message << deviceDynamicRenderingFeatures[0] << TestLog::EndMessage;
if (isExtendedDynamicStateFeaturesEXT)
	log << TestLog::Message << deviceExtendedDynamicStateFeaturesEXT[0] << TestLog::EndMessage;
if (isExtendedDynamicState2FeaturesEXT)
	log << TestLog::Message << deviceExtendedDynamicState2FeaturesEXT[0] << TestLog::EndMessage;
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 (isGlobalPriorityQueryFeaturesKHR)
	log << TestLog::Message << deviceGlobalPriorityQueryFeaturesKHR[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 (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 (is4444FormatsFeaturesEXT &&
	(device4444FormatsFeaturesEXT[0].formatA4R4G4B4 != device4444FormatsFeaturesEXT[1].formatA4R4G4B4 ||
	 device4444FormatsFeaturesEXT[0].formatA4B4G4R4 != device4444FormatsFeaturesEXT[1].formatA4B4G4R4))
{
		TCU_FAIL("Mismatch between VkPhysicalDevice4444FormatsFeaturesEXT");
}
if (is8BitStorageFeatures &&
	(device8BitStorageFeatures[0].storageBuffer8BitAccess != device8BitStorageFeatures[1].storageBuffer8BitAccess ||
	 device8BitStorageFeatures[0].uniformAndStorageBuffer8BitAccess != device8BitStorageFeatures[1].uniformAndStorageBuffer8BitAccess ||
	 device8BitStorageFeatures[0].storagePushConstant8 != device8BitStorageFeatures[1].storagePushConstant8))
{
		TCU_FAIL("Mismatch between VkPhysicalDevice8BitStorageFeatures");
}
if (is16BitStorageFeatures &&
	(device16BitStorageFeatures[0].storageBuffer16BitAccess != device16BitStorageFeatures[1].storageBuffer16BitAccess ||
	 device16BitStorageFeatures[0].uniformAndStorageBuffer16BitAccess != device16BitStorageFeatures[1].uniformAndStorageBuffer16BitAccess ||
	 device16BitStorageFeatures[0].storagePushConstant16 != device16BitStorageFeatures[1].storagePushConstant16 ||
	 device16BitStorageFeatures[0].storageInputOutput16 != device16BitStorageFeatures[1].storageInputOutput16))
{
		TCU_FAIL("Mismatch between VkPhysicalDevice16BitStorageFeatures");
}
if (isAccelerationStructureFeaturesKHR &&
	(deviceAccelerationStructureFeaturesKHR[0].accelerationStructure != deviceAccelerationStructureFeaturesKHR[1].accelerationStructure ||
	 deviceAccelerationStructureFeaturesKHR[0].accelerationStructureCaptureReplay != deviceAccelerationStructureFeaturesKHR[1].accelerationStructureCaptureReplay ||
	 deviceAccelerationStructureFeaturesKHR[0].accelerationStructureIndirectBuild != deviceAccelerationStructureFeaturesKHR[1].accelerationStructureIndirectBuild ||
	 deviceAccelerationStructureFeaturesKHR[0].accelerationStructureHostCommands != deviceAccelerationStructureFeaturesKHR[1].accelerationStructureHostCommands ||
	 deviceAccelerationStructureFeaturesKHR[0].descriptorBindingAccelerationStructureUpdateAfterBind != deviceAccelerationStructureFeaturesKHR[1].descriptorBindingAccelerationStructureUpdateAfterBind))
{
		TCU_FAIL("Mismatch between VkPhysicalDeviceAccelerationStructureFeaturesKHR");
}
if (isASTCDecodeFeaturesEXT &&
	(deviceASTCDecodeFeaturesEXT[0].decodeModeSharedExponent != deviceASTCDecodeFeaturesEXT[1].decodeModeSharedExponent))
{
		TCU_FAIL("Mismatch between VkPhysicalDeviceASTCDecodeFeaturesEXT");
}
if (isBlendOperationAdvancedFeaturesEXT &&
	(deviceBlendOperationAdvancedFeaturesEXT[0].advancedBlendCoherentOperations != deviceBlendOperationAdvancedFeaturesEXT[1].advancedBlendCoherentOperations))
{
		TCU_FAIL("Mismatch between VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT");
}
if (isBufferDeviceAddressFeaturesEXT &&
	(deviceBufferDeviceAddressFeaturesEXT[0].bufferDeviceAddress != deviceBufferDeviceAddressFeaturesEXT[1].bufferDeviceAddress ||
	 deviceBufferDeviceAddressFeaturesEXT[0].bufferDeviceAddressCaptureReplay != deviceBufferDeviceAddressFeaturesEXT[1].bufferDeviceAddressCaptureReplay ||
	 deviceBufferDeviceAddressFeaturesEXT[0].bufferDeviceAddressMultiDevice != deviceBufferDeviceAddressFeaturesEXT[1].bufferDeviceAddressMultiDevice))
{
		TCU_FAIL("Mismatch between VkPhysicalDeviceBufferDeviceAddressFeaturesEXT");
}
if (isBufferDeviceAddressFeatures &&
	(deviceBufferDeviceAddressFeatures[0].bufferDeviceAddress != deviceBufferDeviceAddressFeatures[1].bufferDeviceAddress ||
	 deviceBufferDeviceAddressFeatures[0].bufferDeviceAddressCaptureReplay != deviceBufferDeviceAddressFeatures[1].bufferDeviceAddressCaptureReplay ||
	 deviceBufferDeviceAddressFeatures[0].bufferDeviceAddressMultiDevice != deviceBufferDeviceAddressFeatures[1].bufferDeviceAddressMultiDevice))
{
		TCU_FAIL("Mismatch between VkPhysicalDeviceBufferDeviceAddressFeatures");
}
if (isConditionalRenderingFeaturesEXT &&
	(deviceConditionalRenderingFeaturesEXT[0].conditionalRendering != deviceConditionalRenderingFeaturesEXT[1].conditionalRendering ||
	 deviceConditionalRenderingFeaturesEXT[0].inheritedConditionalRendering != deviceConditionalRenderingFeaturesEXT[1].inheritedConditionalRendering))
{
		TCU_FAIL("Mismatch between VkPhysicalDeviceConditionalRenderingFeaturesEXT");
}
if (isCustomBorderColorFeaturesEXT &&
	(deviceCustomBorderColorFeaturesEXT[0].customBorderColors != deviceCustomBorderColorFeaturesEXT[1].customBorderColors ||
	 deviceCustomBorderColorFeaturesEXT[0].customBorderColorWithoutFormat != deviceCustomBorderColorFeaturesEXT[1].customBorderColorWithoutFormat))
{
		TCU_FAIL("Mismatch between VkPhysicalDeviceCustomBorderColorFeaturesEXT");
}
if (isColorWriteEnableFeaturesEXT &&
	(deviceColorWriteEnableFeaturesEXT[0].colorWriteEnable != deviceColorWriteEnableFeaturesEXT[1].colorWriteEnable))
{
		TCU_FAIL("Mismatch between VkPhysicalDeviceColorWriteEnableFeaturesEXT");
}
if (isDescriptorIndexingFeatures &&
	(deviceDescriptorIndexingFeatures[0].shaderInputAttachmentArrayDynamicIndexing != deviceDescriptorIndexingFeatures[1].shaderInputAttachmentArrayDynamicIndexing ||
	 deviceDescriptorIndexingFeatures[0].shaderUniformTexelBufferArrayDynamicIndexing != deviceDescriptorIndexingFeatures[1].shaderUniformTexelBufferArrayDynamicIndexing ||
	 deviceDescriptorIndexingFeatures[0].shaderStorageTexelBufferArrayDynamicIndexing != deviceDescriptorIndexingFeatures[1].shaderStorageTexelBufferArrayDynamicIndexing ||
	 deviceDescriptorIndexingFeatures[0].shaderUniformBufferArrayNonUniformIndexing != deviceDescriptorIndexingFeatures[1].shaderUniformBufferArrayNonUniformIndexing ||
	 deviceDescriptorIndexingFeatures[0].shaderSampledImageArrayNonUniformIndexing != deviceDescriptorIndexingFeatures[1].shaderSampledImageArrayNonUniformIndexing ||
	 deviceDescriptorIndexingFeatures[0].shaderStorageBufferArrayNonUniformIndexing != deviceDescriptorIndexingFeatures[1].shaderStorageBufferArrayNonUniformIndexing ||
	 deviceDescriptorIndexingFeatures[0].shaderStorageImageArrayNonUniformIndexing != deviceDescriptorIndexingFeatures[1].shaderStorageImageArrayNonUniformIndexing ||
	 deviceDescriptorIndexingFeatures[0].shaderInputAttachmentArrayNonUniformIndexing != deviceDescriptorIndexingFeatures[1].shaderInputAttachmentArrayNonUniformIndexing ||
	 deviceDescriptorIndexingFeatures[0].shaderUniformTexelBufferArrayNonUniformIndexing != deviceDescriptorIndexingFeatures[1].shaderUniformTexelBufferArrayNonUniformIndexing ||
	 deviceDescriptorIndexingFeatures[0].shaderStorageTexelBufferArrayNonUniformIndexing != deviceDescriptorIndexingFeatures[1].shaderStorageTexelBufferArrayNonUniformIndexing ||
	 deviceDescriptorIndexingFeatures[0].descriptorBindingUniformBufferUpdateAfterBind != deviceDescriptorIndexingFeatures[1].descriptorBindingUniformBufferUpdateAfterBind ||
	 deviceDescriptorIndexingFeatures[0].descriptorBindingSampledImageUpdateAfterBind != deviceDescriptorIndexingFeatures[1].descriptorBindingSampledImageUpdateAfterBind ||
	 deviceDescriptorIndexingFeatures[0].descriptorBindingStorageImageUpdateAfterBind != deviceDescriptorIndexingFeatures[1].descriptorBindingStorageImageUpdateAfterBind ||
	 deviceDescriptorIndexingFeatures[0].descriptorBindingStorageBufferUpdateAfterBind != deviceDescriptorIndexingFeatures[1].descriptorBindingStorageBufferUpdateAfterBind ||
	 deviceDescriptorIndexingFeatures[0].descriptorBindingUniformTexelBufferUpdateAfterBind != deviceDescriptorIndexingFeatures[1].descriptorBindingUniformTexelBufferUpdateAfterBind ||
	 deviceDescriptorIndexingFeatures[0].descriptorBindingStorageTexelBufferUpdateAfterBind != deviceDescriptorIndexingFeatures[1].descriptorBindingStorageTexelBufferUpdateAfterBind ||
	 deviceDescriptorIndexingFeatures[0].descriptorBindingUpdateUnusedWhilePending != deviceDescriptorIndexingFeatures[1].descriptorBindingUpdateUnusedWhilePending ||
	 deviceDescriptorIndexingFeatures[0].descriptorBindingPartiallyBound != deviceDescriptorIndexingFeatures[1].descriptorBindingPartiallyBound ||
	 deviceDescriptorIndexingFeatures[0].descriptorBindingVariableDescriptorCount != deviceDescriptorIndexingFeatures[1].descriptorBindingVariableDescriptorCount ||
	 deviceDescriptorIndexingFeatures[0].runtimeDescriptorArray != deviceDescriptorIndexingFeatures[1].runtimeDescriptorArray))
{
		TCU_FAIL("Mismatch between VkPhysicalDeviceDescriptorIndexingFeatures");
}
if (isDepthClipEnableFeaturesEXT &&
	(deviceDepthClipEnableFeaturesEXT[0].depthClipEnable != deviceDepthClipEnableFeaturesEXT[1].depthClipEnable))
{
		TCU_FAIL("Mismatch between VkPhysicalDeviceDepthClipEnableFeaturesEXT");
}
if (isDynamicRenderingFeatures &&
	(deviceDynamicRenderingFeatures[0].dynamicRendering != deviceDynamicRenderingFeatures[1].dynamicRendering))
{
		TCU_FAIL("Mismatch between VkPhysicalDeviceDynamicRenderingFeatures");
}
if (isExtendedDynamicStateFeaturesEXT &&
	(deviceExtendedDynamicStateFeaturesEXT[0].extendedDynamicState != deviceExtendedDynamicStateFeaturesEXT[1].extendedDynamicState))
{
		TCU_FAIL("Mismatch between VkPhysicalDeviceExtendedDynamicStateFeaturesEXT");
}
if (isExtendedDynamicState2FeaturesEXT &&
	(deviceExtendedDynamicState2FeaturesEXT[0].extendedDynamicState2 != deviceExtendedDynamicState2FeaturesEXT[1].extendedDynamicState2 ||
	 deviceExtendedDynamicState2FeaturesEXT[0].extendedDynamicState2LogicOp != deviceExtendedDynamicState2FeaturesEXT[1].extendedDynamicState2LogicOp ||
	 deviceExtendedDynamicState2FeaturesEXT[0].extendedDynamicState2PatchControlPoints != deviceExtendedDynamicState2FeaturesEXT[1].extendedDynamicState2PatchControlPoints))
{
		TCU_FAIL("Mismatch between VkPhysicalDeviceExtendedDynamicState2FeaturesEXT");
}
if (isFragmentDensityMapFeaturesEXT &&
	(deviceFragmentDensityMapFeaturesEXT[0].fragmentDensityMap != deviceFragmentDensityMapFeaturesEXT[1].fragmentDensityMap ||
	 deviceFragmentDensityMapFeaturesEXT[0].fragmentDensityMapDynamic != deviceFragmentDensityMapFeaturesEXT[1].fragmentDensityMapDynamic ||
	 deviceFragmentDensityMapFeaturesEXT[0].fragmentDensityMapNonSubsampledImages != deviceFragmentDensityMapFeaturesEXT[1].fragmentDensityMapNonSubsampledImages))
{
		TCU_FAIL("Mismatch between VkPhysicalDeviceFragmentDensityMapFeaturesEXT");
}
if (isFragmentDensityMap2FeaturesEXT &&
	(deviceFragmentDensityMap2FeaturesEXT[0].fragmentDensityMapDeferred != deviceFragmentDensityMap2FeaturesEXT[1].fragmentDensityMapDeferred))
{
		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 (isGlobalPriorityQueryFeaturesKHR &&
	(deviceGlobalPriorityQueryFeaturesKHR[0].globalPriorityQuery != deviceGlobalPriorityQueryFeaturesKHR[1].globalPriorityQuery))
{
		TCU_FAIL("Mismatch between VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR");
}
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 (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");
}
