// This is manually created file used by gen_framework.py.
// It contains list of mandatory features required to
// generate code for cts. Currently every line contains:
// * name of structure containing physical device featurs
// * name of attribute that is mandatory
// * structure type enum
// * required extensions that enable specified feature

VkPhysicalDeviceFeatures								robustBufferAccess									REQUIREMENTS ()
VkPhysicalDeviceFeatures								shaderSampledImageArrayDynamicIndexing				REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDeviceFeatures								shaderStorageBufferArrayDynamicIndexing				REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDevice8BitStorageFeaturesKHR					storageBuffer8BitAccess								REQUIREMENTS ( VK_KHR_8bit_storage )
VkPhysicalDeviceMultiviewFeatures						multiview											REQUIREMENTS ( "ApiVersion(1, 1, 0)" )
VkPhysicalDeviceMultiviewFeatures						multiview											REQUIREMENTS ( VK_KHR_multiview )
VkPhysicalDeviceVariablePointersFeatures				variablePointersStorageBuffer						REQUIREMENTS ( VK_KHR_variable_pointers )
VkPhysicalDeviceDescriptorIndexingFeaturesEXT			shaderUniformTexelBufferArrayDynamicIndexing		REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDeviceDescriptorIndexingFeaturesEXT			shaderStorageTexelBufferArrayDynamicIndexing		REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDeviceDescriptorIndexingFeaturesEXT			shaderSampledImageArrayNonUniformIndexing			REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDeviceDescriptorIndexingFeaturesEXT			shaderStorageBufferArrayNonUniformIndexing			REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDeviceDescriptorIndexingFeaturesEXT			shaderUniformTexelBufferArrayNonUniformIndexing		REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDeviceDescriptorIndexingFeaturesEXT			descriptorBindingSampledImageUpdateAfterBind		REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDeviceDescriptorIndexingFeaturesEXT			descriptorBindingStorageImageUpdateAfterBind		REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDeviceDescriptorIndexingFeaturesEXT			descriptorBindingStorageBufferUpdateAfterBind		REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDeviceDescriptorIndexingFeaturesEXT			descriptorBindingUniformTexelBufferUpdateAfterBind	REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDeviceDescriptorIndexingFeaturesEXT			descriptorBindingStorageTexelBufferUpdateAfterBind	REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDeviceDescriptorIndexingFeaturesEXT			descriptorBindingUpdateUnusedWhilePending			REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDeviceDescriptorIndexingFeaturesEXT			descriptorBindingPartiallyBound						REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDeviceDescriptorIndexingFeaturesEXT			runtimeDescriptorArray								REQUIREMENTS ( VK_EXT_descriptor_indexing )
VkPhysicalDeviceInlineUniformBlockFeaturesEXT			inlineUniformBlock									REQUIREMENTS ( VK_EXT_inline_uniform_block )
VkPhysicalDeviceInlineUniformBlockFeaturesEXT			descriptorBindingInlineUniformBlockUpdateAfterBind	REQUIREMENTS ( VK_EXT_inline_uniform_block VK_EXT_descriptor_indexing )
VkPhysicalDeviceScalarBlockLayoutFeaturesEXT			scalarBlockLayout									REQUIREMENTS ( VK_EXT_scalar_block_layout )
VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR	uniformBufferStandardLayout							REQUIREMENTS ( VK_KHR_uniform_buffer_standard_layout )
VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR	pipelineExecutableInfo								REQUIREMENTS ( VK_KHR_pipeline_executable_properties )
VkPhysicalDeviceTimelineSemaphoreFeaturesKHR 			timelineSemaphore									REQUIREMENTS ( VK_KHR_timeline_semaphore )
