19 #if defined( _MSC_VER )
20 # pragma warning( disable : 4503 )
21 #elif defined( __GNUC__ )
27 #include "../utils/utils.hpp"
31 static char const * AppName =
"PhysicalDeviceFeatures";
32 static char const * EngineName =
"Vulkan.hpp";
39 #if !defined( NDEBUG )
49 for (
size_t i = 0; i < physicalDevices.size(); i++ )
52 std::vector<vk::ExtensionProperties> extensionProperties = physicalDevices[i].enumerateDeviceExtensionProperties();
54 std::cout <<
"PhysicalDevice " << i <<
" :\n";
55 auto features2 = physicalDevices[i]
109 std::cout <<
"\t\talphaToOne : " << !!features.alphaToOne <<
"\n";
110 std::cout <<
"\t\tdepthBiasClamp : " << !!features.depthBiasClamp <<
"\n";
111 std::cout <<
"\t\tdepthBounds : " << !!features.depthBounds <<
"\n";
112 std::cout <<
"\t\tdepthClamp : " << !!features.depthClamp <<
"\n";
113 std::cout <<
"\t\tdrawIndirectFirstInstance : " << !!features.drawIndirectFirstInstance <<
"\n";
114 std::cout <<
"\t\tdualSrcBlend : " << !!features.dualSrcBlend <<
"\n";
115 std::cout <<
"\t\tfillModeNonSolid : " << !!features.fillModeNonSolid <<
"\n";
116 std::cout <<
"\t\tfragmentStoresAndAtomics : " << !!features.fragmentStoresAndAtomics <<
"\n";
117 std::cout <<
"\t\tfullDrawIndexUint32 : " << !!features.fullDrawIndexUint32 <<
"\n";
118 std::cout <<
"\t\tgeometryShader : " << !!features.geometryShader <<
"\n";
119 std::cout <<
"\t\timageCubeArray : " << !!features.imageCubeArray <<
"\n";
120 std::cout <<
"\t\tindependentBlend : " << !!features.independentBlend <<
"\n";
121 std::cout <<
"\t\tinheritedQueries : " << !!features.inheritedQueries <<
"\n";
122 std::cout <<
"\t\tlargePoints : " << !!features.largePoints <<
"\n";
123 std::cout <<
"\t\tlogicOp : " << !!features.logicOp <<
"\n";
124 std::cout <<
"\t\tmultiDrawIndirect : " << !!features.multiDrawIndirect <<
"\n";
125 std::cout <<
"\t\tmultiViewport : " << !!features.multiViewport <<
"\n";
126 std::cout <<
"\t\tocclusionQueryPrecise : " << !!features.occlusionQueryPrecise <<
"\n";
127 std::cout <<
"\t\tpipelineStatisticsQuery : " << !!features.pipelineStatisticsQuery <<
"\n";
128 std::cout <<
"\t\trobustBufferAccess : " << !!features.robustBufferAccess <<
"\n";
129 std::cout <<
"\t\tsamplerAnisotropy : " << !!features.samplerAnisotropy <<
"\n";
130 std::cout <<
"\t\tsampleRateShading : " << !!features.sampleRateShading <<
"\n";
131 std::cout <<
"\t\tshaderClipDistance : " << !!features.shaderClipDistance <<
"\n";
132 std::cout <<
"\t\tshaderCullDistance : " << !!features.shaderCullDistance <<
"\n";
133 std::cout <<
"\t\tshaderFloat64 : " << !!features.shaderFloat64 <<
"\n";
134 std::cout <<
"\t\tshaderImageGatherExtended : " << !!features.shaderImageGatherExtended <<
"\n";
135 std::cout <<
"\t\tshaderInt16 : " << !!features.shaderInt16 <<
"\n";
136 std::cout <<
"\t\tshaderInt64 : " << !!features.shaderInt64 <<
"\n";
137 std::cout <<
"\t\tshaderResourceMinLod : " << !!features.shaderResourceMinLod <<
"\n";
138 std::cout <<
"\t\tshaderResourceResidency : " << !!features.shaderResourceResidency <<
"\n";
139 std::cout <<
"\t\tshaderSampledImageArrayDynamicIndexing : " << !!features.shaderSampledImageArrayDynamicIndexing <<
"\n";
140 std::cout <<
"\t\tshaderStorageBufferArrayDynamicIndexing : " << !!features.shaderStorageBufferArrayDynamicIndexing <<
"\n";
141 std::cout <<
"\t\tshaderStorageImageArrayDynamicIndexing : " << !!features.shaderStorageImageArrayDynamicIndexing <<
"\n";
142 std::cout <<
"\t\tshaderStorageImageExtendedFormats : " << !!features.shaderStorageImageExtendedFormats <<
"\n";
143 std::cout <<
"\t\tshaderStorageImageMultisample : " << !!features.shaderStorageImageMultisample <<
"\n";
144 std::cout <<
"\t\tshaderStorageImageReadWithoutFormat : " << !!features.shaderStorageImageReadWithoutFormat <<
"\n";
145 std::cout <<
"\t\tshaderStorageImageWriteWithoutFormat : " << !!features.shaderStorageImageWriteWithoutFormat <<
"\n";
146 std::cout <<
"\t\tshaderTessellationAndGeometryPointSize : " << !!features.shaderTessellationAndGeometryPointSize <<
"\n";
147 std::cout <<
"\t\tshaderUniformBufferArrayDynamicIndexing : " << !!features.shaderUniformBufferArrayDynamicIndexing <<
"\n";
148 std::cout <<
"\t\tsparseBinding : " << !!features.sparseBinding <<
"\n";
149 std::cout <<
"\t\tsparseResidency16Samples : " << !!features.sparseResidency16Samples <<
"\n";
150 std::cout <<
"\t\tsparseResidency2Samples : " << !!features.sparseResidency2Samples <<
"\n";
151 std::cout <<
"\t\tsparseResidency4Samples : " << !!features.sparseResidency4Samples <<
"\n";
152 std::cout <<
"\t\tsparseResidency8Samples : " << !!features.sparseResidency8Samples <<
"\n";
153 std::cout <<
"\t\tsparseResidencyAliased : " << !!features.sparseResidencyAliased <<
"\n";
154 std::cout <<
"\t\tsparseResidencyBuffer : " << !!features.sparseResidencyBuffer <<
"\n";
155 std::cout <<
"\t\tsparseResidencyImage2D : " << !!features.sparseResidencyImage2D <<
"\n";
156 std::cout <<
"\t\tsparseResidencyImage3D : " << !!features.sparseResidencyImage3D <<
"\n";
157 std::cout <<
"\t\ttessellationShader : " << !!features.tessellationShader <<
"\n";
158 std::cout <<
"\t\ttextureCompressionASTC_LDR : " << !!features.textureCompressionASTC_LDR <<
"\n";
159 std::cout <<
"\t\ttextureCompressionBC : " << !!features.textureCompressionBC <<
"\n";
160 std::cout <<
"\t\ttextureCompressionETC2 : " << !!features.textureCompressionETC2 <<
"\n";
161 std::cout <<
"\t\tvariableMultisampleRate : " << !!features.variableMultisampleRate <<
"\n";
162 std::cout <<
"\t\tvertexPipelineStoresAndAtomics : " << !!features.vertexPipelineStoresAndAtomics <<
"\n";
163 std::cout <<
"\t\twideLines : " << !!features.wideLines <<
"\n";
167 std::cout <<
"\t16BitStorageFeatures:\n";
192 if (
vk::su::contains( extensionProperties,
"VK_EXT_blend_operation_advanced" ) )
196 std::cout <<
"\tBlendOperationAdvancedFeatures:\n";
201 if (
vk::su::contains( extensionProperties,
"VK_EXT_buffer_device_address" ) )
205 std::cout <<
"\tBufferDeviceAddressFeatures:\n";
212 if (
vk::su::contains( extensionProperties,
"VK_AMD_device_coherent_memory" ) )
215 std::cout <<
"\tCoherentMemoryFeatures:\n";
220 if (
vk::su::contains( extensionProperties,
"VK_NV_compute_shader_derivatives" ) )
224 std::cout <<
"\tComputeShaderDerivativeFeatures:\n";
230 if (
vk::su::contains( extensionProperties,
"VK_EXT_conditional_rendering" ) )
234 std::cout <<
"\tConditionalRenderingFeatures:\n";
243 std::cout <<
"\tCooperativeMatrixFeatures:\n";
249 if (
vk::su::contains( extensionProperties,
"VK_NV_corner_sampled_image" ) )
252 std::cout <<
"\tCornerSampledImageFeatures:\n";
257 if (
vk::su::contains( extensionProperties,
"VK_NV_coverage_reduction_mode" ) )
261 std::cout <<
"\tCoverageReductionModeFeatures:\n";
266 if (
vk::su::contains( extensionProperties,
"VK_NV_dedicated_allocation_image_aliasing" ) )
270 std::cout <<
"\tDedicatedAllocationAliasingFeatures:\n";
278 std::cout <<
"\tDepthClipEnabledFeatures:\n";
283 if (
vk::su::contains( extensionProperties,
"VK_EXT_descriptor_indexing" ) )
286 std::cout <<
"\tDescriptorIndexingFeatures:\n";
294 std::cout <<
"\t\tdescriptorBindingStorageTexelBufferUpdateAfterBind : "
298 std::cout <<
"\t\tdescriptorBindingUniformTexelBufferUpdateAfterBind : "
317 std::cout <<
"\t\tshaderStorageTexelBufferArrayNonUniformIndexing : "
323 std::cout <<
"\t\tshaderUniformTexelBufferArrayNonUniformIndexing : "
331 std::cout <<
"\tExclusiveScissorFeatures:\n";
336 if (
vk::su::contains( extensionProperties,
"VK_EXT_fragment_density_map" ) )
339 std::cout <<
"\tFragmentDensityMapFeatures:\n";
346 if (
vk::su::contains( extensionProperties,
"VK_NV_fragment_shader_barycentric" ) )
350 std::cout <<
"\tFragmentShaderBarycentricFeatures:\n";
355 if (
vk::su::contains( extensionProperties,
"VK_EXT_fragment_shader_interlock" ) )
359 std::cout <<
"\tFragmentShaderInterlockFeatures:\n";
369 std::cout <<
"\tHostQueryResetFeatures:\n";
374 if (
vk::su::contains( extensionProperties,
"VK_KHR_imageless_framebuffer" ) )
378 std::cout <<
"\tImagelessFramebufferFeatures:\n";
386 std::cout <<
"\tIndexTypeUint8Features:\n";
391 if (
vk::su::contains( extensionProperties,
"VK_EXT_inline_uniform_block" ) )
394 std::cout <<
"\tInlineUniformBlockFeatures:\n";
395 std::cout <<
"\t\tdescriptorBindingInlineUniformBlockUpdateAfterBind : "
404 std::cout <<
"\tLineRasterizationFeatures:\n";
417 std::cout <<
"\tMemoryPriorityFeatures:\n";
438 if (
vk::su::contains( extensionProperties,
"VK_KHR_pipeline_executable_properties" ) )
442 std::cout <<
"\tPipelineExectuablePropertiesFeatures:\n";
448 std::cout <<
"\tProtectedMemoryFeatures:\n";
452 if (
vk::su::contains( extensionProperties,
"VK_NV_representative_fragment_test" ) )
456 std::cout <<
"\tRepresentativeFragmentTestFeatures:\n";
463 std::cout <<
"\tSamplerYcbcrConversionFeatures:\n";
467 if (
vk::su::contains( extensionProperties,
"VK_EXT_scalar_block_layout" ) )
470 std::cout <<
"\tScalarBlockLayoutFeatures:\n";
475 if (
vk::su::contains( extensionProperties,
"VK_KHR_shader_atomic_int64" ) )
478 std::cout <<
"\tShaderAtomicInt64Features:\n";
484 if (
vk::su::contains( extensionProperties,
"VK_EXT_shader_demote_to_helper_invocation" ) )
488 std::cout <<
"\tShaderDemoteToHelperInvocationFeatures:\n";
494 std::cout <<
"\tShaderDrawParametersFeature:\n";
498 if (
vk::su::contains( extensionProperties,
"VK_KHR_shader_float16_int8" ) )
501 std::cout <<
"\tShaderFloat16Int8Features:\n";
507 if (
vk::su::contains( extensionProperties,
"VK_NV_shader_image_footprint" ) )
511 std::cout <<
"\tShaderImageFootprintFeatures:\n";
516 if (
vk::su::contains( extensionProperties,
"VK_INTEL_shader_integer_functions2" ) )
520 std::cout <<
"\tShaderIntegerFunctions2Features:\n";
528 std::cout <<
"\tShaderSMBuiltinsFeatures:\n";
533 if (
vk::su::contains( extensionProperties,
"VK_KHR_shader_subgroup_extended_types" ) )
537 std::cout <<
"\tShaderSubgroupExtendedTypeFeatures:\n";
545 std::cout <<
"\tShadingRateImageFeatures:\n";
551 if (
vk::su::contains( extensionProperties,
"VK_EXT_subgroup_size_control" ) )
555 std::cout <<
"\tSubgroupSizeControlFeatures:\n";
561 if (
vk::su::contains( extensionProperties,
"VK_EXT_texel_buffer_alignment" ) )
565 std::cout <<
"\tTexelBufferAlignmentFeatures:\n";
570 if (
vk::su::contains( extensionProperties,
"VK_EXT_texture_compression_astc_hdr" ) )
574 std::cout <<
"\tTextureCompressionASTCHHRFeatures:\n";
582 std::cout <<
"\tTimelineSemaphoreFeatures:\n";
590 std::cout <<
"\tTransformFeedbackFeatures:\n";
596 if (
vk::su::contains( extensionProperties,
"VK_KHR_uniform_buffer_standard_layout" ) )
600 std::cout <<
"\tUniformBufferStandardLayoutFeatures:\n";
608 std::cout <<
"\tVariablePointersFeatures:\n";
614 if (
vk::su::contains( extensionProperties,
"VK_EXT_vertex_attribute_divisor" ) )
618 std::cout <<
"\tVertexAttributeDivisorFeature:\n";
624 if (
vk::su::contains( extensionProperties,
"VK_KHR_vulkan_memory_model" ) )
627 std::cout <<
"\tVulkanMemoryModelFeatures:\n";
635 if (
vk::su::contains( extensionProperties,
"VK_KHR_sampler_ycbcr_conversion" ) )
638 std::cout <<
"\tYcbcrImageArraysFeatures:\n";
646 #if !defined( NDEBUG )
656 catch ( std::exception & err )
void cout(vk::SurfaceCapabilitiesKHR const &surfaceCapabilities)
VULKAN_HPP_NODISCARD Result createDebugUtilsMessengerEXT(const vk::DebugUtilsMessengerCreateInfoEXT *pCreateInfo, const vk::AllocationCallbacks *pAllocator, vk::DebugUtilsMessengerEXT *pMessenger, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT) const VULKAN_HPP_NOEXCEPT
void destroy(const vk::AllocationCallbacks *pAllocator, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT) const VULKAN_HPP_NOEXCEPT
VULKAN_HPP_NODISCARD Result enumeratePhysicalDevices(uint32_t *pPhysicalDeviceCount, vk::PhysicalDevice *pPhysicalDevices, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT) const VULKAN_HPP_NOEXCEPT
void destroyDebugUtilsMessengerEXT(vk::DebugUtilsMessengerEXT messenger, const vk::AllocationCallbacks *pAllocator, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT) const VULKAN_HPP_NOEXCEPT
virtual const char * what() const VULKAN_HPP_NOEXCEPT
vk::DebugUtilsMessengerCreateInfoEXT makeDebugUtilsMessengerCreateInfoEXT()
vk::Instance createInstance(std::string const &appName, std::string const &engineName, std::vector< std::string > const &layers, std::vector< std::string > const &extensions, uint32_t apiVersion)
bool contains(std::vector< vk::ExtensionProperties > const &extensionProperties, std::string const &extensionName)
PhysicalDeviceShaderSubgroupExtendedTypesFeatures PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR
PhysicalDeviceScalarBlockLayoutFeatures PhysicalDeviceScalarBlockLayoutFeaturesEXT
PhysicalDeviceShaderDemoteToHelperInvocationFeatures PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
PhysicalDeviceFragmentShaderBarycentricFeaturesKHR PhysicalDeviceFragmentShaderBarycentricFeaturesNV
PhysicalDeviceSubgroupSizeControlFeatures PhysicalDeviceSubgroupSizeControlFeaturesEXT
PhysicalDeviceImagelessFramebufferFeatures PhysicalDeviceImagelessFramebufferFeaturesKHR
PhysicalDevice8BitStorageFeatures PhysicalDevice8BitStorageFeaturesKHR
PhysicalDeviceUniformBufferStandardLayoutFeatures PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR
PhysicalDeviceTextureCompressionASTCHDRFeatures PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
PhysicalDeviceVertexAttributeDivisorFeaturesKHR PhysicalDeviceVertexAttributeDivisorFeaturesEXT
PhysicalDeviceVulkanMemoryModelFeatures PhysicalDeviceVulkanMemoryModelFeaturesKHR
PhysicalDeviceDescriptorIndexingFeatures PhysicalDeviceDescriptorIndexingFeaturesEXT
PhysicalDeviceInlineUniformBlockFeatures PhysicalDeviceInlineUniformBlockFeaturesEXT
PhysicalDeviceShaderAtomicInt64Features PhysicalDeviceShaderAtomicInt64FeaturesKHR
PhysicalDeviceHostQueryResetFeatures PhysicalDeviceHostQueryResetFeaturesEXT
PhysicalDeviceShaderFloat16Int8Features PhysicalDeviceShaderFloat16Int8FeaturesKHR
PhysicalDeviceTimelineSemaphoreFeatures PhysicalDeviceTimelineSemaphoreFeaturesKHR
vk::Bool32 storageInputOutput16
vk::Bool32 uniformAndStorageBuffer16BitAccess
vk::Bool32 storageBuffer16BitAccess
vk::Bool32 storagePushConstant16
vk::Bool32 uniformAndStorageBuffer8BitAccess
vk::Bool32 storageBuffer8BitAccess
vk::Bool32 storagePushConstant8
vk::Bool32 decodeModeSharedExponent
vk::Bool32 advancedBlendCoherentOperations
vk::Bool32 bufferDeviceAddress
vk::Bool32 bufferDeviceAddressMultiDevice
vk::Bool32 bufferDeviceAddressCaptureReplay
vk::Bool32 deviceCoherentMemory
vk::Bool32 computeDerivativeGroupQuads
vk::Bool32 computeDerivativeGroupLinear
vk::Bool32 conditionalRendering
vk::Bool32 inheritedConditionalRendering
vk::Bool32 cooperativeMatrixRobustBufferAccess
vk::Bool32 cooperativeMatrix
vk::Bool32 cornerSampledImage
vk::Bool32 coverageReductionMode
vk::Bool32 dedicatedAllocationImageAliasing
vk::Bool32 depthClipEnable
vk::Bool32 shaderUniformTexelBufferArrayDynamicIndexing
vk::Bool32 shaderStorageBufferArrayNonUniformIndexing
vk::Bool32 shaderStorageImageArrayNonUniformIndexing
vk::Bool32 descriptorBindingStorageBufferUpdateAfterBind
vk::Bool32 runtimeDescriptorArray
vk::Bool32 descriptorBindingUniformBufferUpdateAfterBind
vk::Bool32 shaderSampledImageArrayNonUniformIndexing
vk::Bool32 descriptorBindingSampledImageUpdateAfterBind
vk::Bool32 descriptorBindingVariableDescriptorCount
vk::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing
vk::Bool32 shaderStorageTexelBufferArrayDynamicIndexing
vk::Bool32 shaderInputAttachmentArrayNonUniformIndexing
vk::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind
vk::Bool32 shaderInputAttachmentArrayDynamicIndexing
vk::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind
vk::Bool32 shaderUniformBufferArrayNonUniformIndexing
vk::Bool32 descriptorBindingStorageImageUpdateAfterBind
vk::Bool32 descriptorBindingUpdateUnusedWhilePending
vk::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing
vk::Bool32 descriptorBindingPartiallyBound
vk::Bool32 exclusiveScissor
vk::Bool32 fragmentDensityMapDynamic
vk::Bool32 fragmentDensityMapNonSubsampledImages
vk::Bool32 fragmentDensityMap
vk::Bool32 fragmentShaderBarycentric
vk::Bool32 fragmentShaderPixelInterlock
vk::Bool32 fragmentShaderShadingRateInterlock
vk::Bool32 fragmentShaderSampleInterlock
vk::Bool32 hostQueryReset
vk::Bool32 imagelessFramebuffer
vk::Bool32 indexTypeUint8
vk::Bool32 stippledBresenhamLines
vk::Bool32 bresenhamLines
vk::Bool32 stippledSmoothLines
vk::Bool32 rectangularLines
vk::Bool32 stippledRectangularLines
vk::Bool32 memoryPriority
vk::Bool32 multiviewTessellationShader
vk::Bool32 multiviewGeometryShader
vk::Bool32 pipelineExecutableInfo
vk::Bool32 protectedMemory
vk::Bool32 representativeFragmentTest
vk::Bool32 samplerYcbcrConversion
vk::Bool32 scalarBlockLayout
vk::Bool32 shaderSharedInt64Atomics
vk::Bool32 shaderBufferInt64Atomics
vk::Bool32 shaderDemoteToHelperInvocation
vk::Bool32 shaderDrawParameters
vk::Bool32 shaderIntegerFunctions2
vk::Bool32 shaderSMBuiltins
vk::Bool32 shaderSubgroupExtendedTypes
vk::Bool32 shadingRateCoarseSampleOrder
vk::Bool32 shadingRateImage
vk::Bool32 subgroupSizeControl
vk::Bool32 computeFullSubgroups
vk::Bool32 texelBufferAlignment
vk::Bool32 textureCompressionASTC_HDR
vk::Bool32 timelineSemaphore
vk::Bool32 variablePointersStorageBuffer
vk::Bool32 variablePointers
vk::Bool32 vertexAttributeInstanceRateDivisor
vk::Bool32 vertexAttributeInstanceRateZeroDivisor
vk::Bool32 vulkanMemoryModelDeviceScope
vk::Bool32 vulkanMemoryModelAvailabilityVisibilityChains
vk::Bool32 vulkanMemoryModel
vk::Bool32 ycbcrImageArrays
#define VK_API_VERSION_1_1