diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkphysicaldevice.c b/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkphysicaldevice.c index c2dee3cf32..0e689af2b0 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkphysicaldevice.c +++ b/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkphysicaldevice.c @@ -66,6 +66,10 @@ struct _GstVulkanPhysicalDevicePrivate VkPhysicalDeviceVulkan12Features features12; VkPhysicalDeviceVulkan12Properties properties12; #endif +#if defined (VK_API_VERSION_1_3) + VkPhysicalDeviceVulkan13Features features13; + VkPhysicalDeviceVulkan13Properties properties13; +#endif }; static void @@ -187,6 +191,15 @@ gst_vulkan_physical_device_init (GstVulkanPhysicalDevice * device) priv->features10.pNext = &priv->features11; priv->features11.pNext = &priv->features12; #endif +#if defined (VK_API_VERSION_1_3) + priv->properties13.sType = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES; + priv->properties12.pNext = &priv->properties13; + + priv->features13.sType = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES; + priv->features12.pNext = &priv->features13; +#endif } static void @@ -437,6 +450,32 @@ dump_features12 (GstVulkanPhysicalDevice * device, /* *INDENT-ON* */ } #endif + +#if defined (VK_API_VERSION_1_3) +static void +dump_features13 (GstVulkanPhysicalDevice * device, + VkPhysicalDeviceVulkan13Features * features) +{ + /* *INDENT-OFF* */ + DEBUG_BOOL_STRUCT ("support for (1.3)", features, robustImageAccess); + DEBUG_BOOL_STRUCT ("support for (1.3)", features, inlineUniformBlock); + DEBUG_BOOL_STRUCT ("support for (1.3)", features, descriptorBindingInlineUniformBlockUpdateAfterBind); + DEBUG_BOOL_STRUCT ("support for (1.3)", features, pipelineCreationCacheControl); + DEBUG_BOOL_STRUCT ("support for (1.3)", features, privateData); + DEBUG_BOOL_STRUCT ("support for (1.3)", features, shaderDemoteToHelperInvocation); + DEBUG_BOOL_STRUCT ("support for (1.3)", features, shaderTerminateInvocation); + DEBUG_BOOL_STRUCT ("support for (1.3)", features, subgroupSizeControl); + DEBUG_BOOL_STRUCT ("support for (1.3)", features, computeFullSubgroups); + DEBUG_BOOL_STRUCT ("support for (1.3)", features, synchronization2); + DEBUG_BOOL_STRUCT ("support for (1.3)", features, textureCompressionASTC_HDR); + DEBUG_BOOL_STRUCT ("support for (1.3)", features, shaderZeroInitializeWorkgroupMemory); + DEBUG_BOOL_STRUCT ("support for (1.3)", features, dynamicRendering); + DEBUG_BOOL_STRUCT ("support for (1.3)", features, shaderIntegerDotProduct); + DEBUG_BOOL_STRUCT ("support for (1.3)", features, maintenance4); + /* *INDENT-ON* */ +} +#endif + static gboolean dump_features (GstVulkanPhysicalDevice * device, GError ** error) { @@ -456,6 +495,12 @@ dump_features (GstVulkanPhysicalDevice * device, GError ** error) else if (iter->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES) dump_features12 (device, (VkPhysicalDeviceVulkan12Features *) iter); +#if defined (VK_API_VERSION_1_3) + else if (gst_vulkan_instance_check_version (device->instance, 1, 3, 0) + && iter->sType == + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES) + dump_features13 (device, (VkPhysicalDeviceVulkan13Features *) iter); +#endif } } else #endif @@ -748,6 +793,61 @@ dump_properties12 (GstVulkanPhysicalDevice * device, } #endif +#if defined(VK_API_VERSION_1_3) +static void +dump_properties13 (GstVulkanPhysicalDevice * device, + VkPhysicalDeviceVulkan13Properties * properties) +{ + /* *INDENT-OFF* */ + DEBUG_UINT32 ("properties (1.3)", properties, minSubgroupSize); + DEBUG_UINT32 ("properties (1.3)", properties, maxSubgroupSize); + DEBUG_UINT32 ("properties (1.3)", properties, maxComputeWorkgroupSubgroups); + /* VkShaderStageFlags requiredSubgroupSizeStages; */ + DEBUG_UINT32 ("properties (1.3)", properties, maxInlineUniformBlockSize); + DEBUG_UINT32 ("properties (1.3)", properties, maxPerStageDescriptorInlineUniformBlocks); + DEBUG_UINT32 ("properties (1.3)", properties, maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks); + DEBUG_UINT32 ("properties (1.3)", properties, maxDescriptorSetInlineUniformBlocks); + DEBUG_UINT32 ("properties (1.3)", properties, maxDescriptorSetUpdateAfterBindInlineUniformBlocks); + DEBUG_UINT32 ("properties (1.3)", properties, maxInlineUniformTotalSize); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProduct8BitUnsignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProduct8BitSignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProduct8BitMixedSignednessAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProduct4x8BitPackedUnsignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProduct4x8BitPackedSignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProduct4x8BitPackedMixedSignednessAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProduct16BitUnsignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProduct16BitSignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProduct16BitMixedSignednessAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProduct32BitUnsignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProduct32BitSignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProduct32BitMixedSignednessAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProduct64BitUnsignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProduct64BitSignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProduct64BitMixedSignednessAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProductAccumulatingSaturating8BitUnsignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProductAccumulatingSaturating8BitSignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProductAccumulatingSaturating16BitUnsignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProductAccumulatingSaturating16BitSignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProductAccumulatingSaturating32BitUnsignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProductAccumulatingSaturating32BitSignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProductAccumulatingSaturating64BitUnsignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProductAccumulatingSaturating64BitSignedAccelerated); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated); + DEBUG_SIZE ("properties (1.3)", properties, storageTexelBufferOffsetAlignmentBytes); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, storageTexelBufferOffsetSingleTexelAlignment); + DEBUG_SIZE ("properties (1.3)", properties, uniformTexelBufferOffsetAlignmentBytes); + DEBUG_BOOL_STRUCT ("properties (1.3)", properties, uniformTexelBufferOffsetSingleTexelAlignment); + DEBUG_SIZE ("properties (1.3)", properties, maxBufferSize); + /* *INDENT-ON* */ +} +#endif + static gboolean physical_device_info (GstVulkanPhysicalDevice * device, GError ** error) { @@ -789,6 +889,12 @@ physical_device_info (GstVulkanPhysicalDevice * device, GError ** error) else if (iter->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES) dump_properties12 (device, (VkPhysicalDeviceVulkan12Properties *) iter); +#if defined (VK_API_VERSION_1_3) + else if (gst_vulkan_instance_check_version (device->instance, 1, 3, 0) + && iter->sType == + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES) + dump_properties13 (device, (VkPhysicalDeviceVulkan13Properties *) iter); +#endif } } #endif