vulkan/physical-device: dump some more information to logs

Also dump the Vulkan 1.1 and Vulkan 1.2 device properties/features
where supported.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1341>
This commit is contained in:
Matthew Waters 2020-06-13 17:40:02 +10:00 committed by GStreamer Merge Bot
parent aad7ed31e1
commit 91b8ec1f0a

View file

@ -53,6 +53,14 @@ static void gst_vulkan_physical_device_finalize (GObject * object);
struct _GstVulkanPhysicalDevicePrivate
{
guint dummy;
#if defined (VK_API_VERSION_1_2)
VkPhysicalDeviceFeatures2 features10;
VkPhysicalDeviceProperties2 properties10;
VkPhysicalDeviceVulkan11Features features11;
VkPhysicalDeviceVulkan11Properties properties11;
VkPhysicalDeviceVulkan12Features features12;
VkPhysicalDeviceVulkan12Properties properties12;
#endif
};
static void
@ -152,6 +160,25 @@ gst_vulkan_physical_device_get_property (GObject * object, guint prop_id,
static void
gst_vulkan_physical_device_init (GstVulkanPhysicalDevice * device)
{
GstVulkanPhysicalDevicePrivate *priv = GET_PRIV (device);
#if defined (VK_API_VERSION_1_2)
priv->properties10.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
priv->properties11.sType =
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES;
priv->properties12.sType =
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES;
priv->properties10.pNext = &priv->properties11;
priv->properties11.pNext = &priv->properties12;
priv->features10.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
priv->features11.sType =
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES;
priv->features12.sType =
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
priv->features10.pNext = &priv->features11;
priv->features11.pNext = &priv->features12;
#endif
}
static void
@ -221,72 +248,211 @@ gst_vulkan_physical_device_finalize (GObject * object)
G_OBJECT_CLASS (parent_class)->finalize (object);
}
#define DEBUG_BOOL(prefix, name, value) \
GST_DEBUG_OBJECT (device, prefix " " G_STRINGIFY(name) ": %s", \
#define DEBUG_BOOL(prefix, name, value) \
GST_DEBUG_OBJECT (device, prefix " " G_STRINGIFY(name) ": %s", \
value ? "YES" : "NO")
#define DEBUG_1(prefix, s, name, format, type) \
GST_DEBUG_OBJECT (device, prefix " " G_STRINGIFY(name) ": %" format, \
(type) (s)->name)
#define DEBUG_2(prefix, s, name, format, type) \
GST_DEBUG_OBJECT (device, prefix " " G_STRINGIFY(name) \
": %" format ", %" format, \
(type) (s)->name[0], \
(type) (s)->name[1])
#define DEBUG_3(prefix, s, name, format, type) \
GST_DEBUG_OBJECT (device, prefix " " G_STRINGIFY(limit) \
": %" format ", %" format ", %" format, \
(type) (s)->name[0], \
(type) (s)->name[1], \
(type) (s)->name[2])
#define DEBUG_UINT32(prefix, s, var) DEBUG_1(prefix, s, var, G_GUINT32_FORMAT, guint32)
#define DEBUG_UINT32_2(prefix, s, var) DEBUG_2(prefix, s, var, G_GUINT32_FORMAT, guint32)
#define DEBUG_UINT32_3(prefix, s, var) DEBUG_3(prefix, s, var, G_GUINT32_FORMAT, guint32)
#define DEBUG_UINT64(prefix, s, var) DEBUG_1(prefix, s, var, G_GUINT64_FORMAT, guint64)
#define DEBUG_INT32(prefix, s, var) DEBUG_1(prefix, s, var, G_GINT32_FORMAT, gint32)
#define DEBUG_FLOAT(prefix, s, var) DEBUG_1(prefix, s, var, "f", gfloat)
#define DEBUG_FLOAT_2(prefix, s, var) DEBUG_2(prefix, s, var, "f", gfloat)
#define DEBUG_SIZE(prefix, s, var) DEBUG_1(prefix, s, var, G_GSIZE_FORMAT, gsize)
#define DEBUG_FLAGS(prefix, s, limit, under_name_type) \
G_STMT_START { \
gchar *str = G_PASTE(G_PASTE(gst_vulkan_,under_name_type),_flags_to_string) ((s)->limit); \
GST_DEBUG_OBJECT (device, prefix " " G_STRINGIFY(limit) ": (0x%x) %s", \
(s)->limit, str); \
g_free (str); \
} G_STMT_END
#define DEBUG_BOOL_STRUCT(prefix, s, name) DEBUG_BOOL(prefix, name, (s)->name)
#define DEBUG_STRING(prefix, s, str) DEBUG_1(prefix, s, str, "s", gchar *);
static void
dump_features10 (GstVulkanPhysicalDevice * device,
VkPhysicalDeviceFeatures * features)
{
/* *INDENT-OFF* */
DEBUG_BOOL_STRUCT ("support for", features, robustBufferAccess);
DEBUG_BOOL_STRUCT ("support for", features, fullDrawIndexUint32);
DEBUG_BOOL_STRUCT ("support for", features, imageCubeArray);
DEBUG_BOOL_STRUCT ("support for", features, independentBlend);
DEBUG_BOOL_STRUCT ("support for", features, geometryShader);
DEBUG_BOOL_STRUCT ("support for", features, tessellationShader);
DEBUG_BOOL_STRUCT ("support for", features, sampleRateShading);
DEBUG_BOOL_STRUCT ("support for", features, sampleRateShading);
DEBUG_BOOL_STRUCT ("support for", features, dualSrcBlend);
DEBUG_BOOL_STRUCT ("support for", features, logicOp);
DEBUG_BOOL_STRUCT ("support for", features, multiDrawIndirect);
DEBUG_BOOL_STRUCT ("support for", features, drawIndirectFirstInstance);
DEBUG_BOOL_STRUCT ("support for", features, depthClamp);
DEBUG_BOOL_STRUCT ("support for", features, depthBiasClamp);
DEBUG_BOOL_STRUCT ("support for", features, fillModeNonSolid);
DEBUG_BOOL_STRUCT ("support for", features, depthBounds);
DEBUG_BOOL_STRUCT ("support for", features, wideLines);
DEBUG_BOOL_STRUCT ("support for", features, largePoints);
DEBUG_BOOL_STRUCT ("support for", features, alphaToOne);
DEBUG_BOOL_STRUCT ("support for", features, multiViewport);
DEBUG_BOOL_STRUCT ("support for", features, samplerAnisotropy);
DEBUG_BOOL_STRUCT ("support for", features, textureCompressionETC2);
DEBUG_BOOL_STRUCT ("support for", features, textureCompressionASTC_LDR);
DEBUG_BOOL_STRUCT ("support for", features, textureCompressionBC);
DEBUG_BOOL_STRUCT ("support for", features, occlusionQueryPrecise);
DEBUG_BOOL_STRUCT ("support for", features, pipelineStatisticsQuery);
DEBUG_BOOL_STRUCT ("support for", features, vertexPipelineStoresAndAtomics);
DEBUG_BOOL_STRUCT ("support for", features, fragmentStoresAndAtomics);
DEBUG_BOOL_STRUCT ("support for", features, shaderTessellationAndGeometryPointSize);
DEBUG_BOOL_STRUCT ("support for", features, shaderImageGatherExtended);
DEBUG_BOOL_STRUCT ("support for", features, shaderStorageImageExtendedFormats);
DEBUG_BOOL_STRUCT ("support for", features, shaderStorageImageMultisample);
DEBUG_BOOL_STRUCT ("support for", features, shaderStorageImageReadWithoutFormat);
DEBUG_BOOL_STRUCT ("support for", features, shaderStorageImageWriteWithoutFormat);
DEBUG_BOOL_STRUCT ("support for", features, shaderUniformBufferArrayDynamicIndexing);
DEBUG_BOOL_STRUCT ("support for", features, shaderSampledImageArrayDynamicIndexing);
DEBUG_BOOL_STRUCT ("support for", features, shaderStorageBufferArrayDynamicIndexing);
DEBUG_BOOL_STRUCT ("support for", features, shaderStorageImageArrayDynamicIndexing);
DEBUG_BOOL_STRUCT ("support for", features, shaderClipDistance);
DEBUG_BOOL_STRUCT ("support for", features, shaderCullDistance);
DEBUG_BOOL_STRUCT ("support for", features, shaderFloat64);
DEBUG_BOOL_STRUCT ("support for", features, shaderInt64);
DEBUG_BOOL_STRUCT ("support for", features, shaderInt16);
DEBUG_BOOL_STRUCT ("support for", features, shaderResourceResidency);
DEBUG_BOOL_STRUCT ("support for", features, shaderResourceMinLod);
DEBUG_BOOL_STRUCT ("support for", features, sparseBinding);
DEBUG_BOOL_STRUCT ("support for", features, sparseResidencyBuffer);
DEBUG_BOOL_STRUCT ("support for", features, sparseResidencyImage2D);
DEBUG_BOOL_STRUCT ("support for", features, sparseResidencyImage3D);
DEBUG_BOOL_STRUCT ("support for", features, sparseResidency2Samples);
DEBUG_BOOL_STRUCT ("support for", features, sparseResidency4Samples);
DEBUG_BOOL_STRUCT ("support for", features, sparseResidency8Samples);
DEBUG_BOOL_STRUCT ("support for", features, sparseResidency16Samples);
DEBUG_BOOL_STRUCT ("support for", features, sparseResidencyAliased);
DEBUG_BOOL_STRUCT ("support for", features, variableMultisampleRate);
DEBUG_BOOL_STRUCT ("support for", features, inheritedQueries);
/* *INDENT-ON* */
}
#if defined (VK_API_VERSION_1_2)
static void
dump_features11 (GstVulkanPhysicalDevice * device,
VkPhysicalDeviceVulkan11Features * features)
{
/* *INDENT-OFF* */
DEBUG_BOOL_STRUCT ("support for (1.1)", features, storageBuffer16BitAccess);
DEBUG_BOOL_STRUCT ("support for (1.1)", features, uniformAndStorageBuffer16BitAccess);
DEBUG_BOOL_STRUCT ("support for (1.1)", features, storagePushConstant16);
DEBUG_BOOL_STRUCT ("support for (1.1)", features, storageInputOutput16);
DEBUG_BOOL_STRUCT ("support for (1.1)", features, multiview);
DEBUG_BOOL_STRUCT ("support for (1.1)", features, multiviewGeometryShader);
DEBUG_BOOL_STRUCT ("support for (1.1)", features, multiviewTessellationShader);
DEBUG_BOOL_STRUCT ("support for (1.1)", features, variablePointersStorageBuffer);
DEBUG_BOOL_STRUCT ("support for (1.1)", features, variablePointers);
DEBUG_BOOL_STRUCT ("support for (1.1)", features, protectedMemory);
DEBUG_BOOL_STRUCT ("support for (1.1)", features, samplerYcbcrConversion);
DEBUG_BOOL_STRUCT ("support for (1.1)", features, shaderDrawParameters);
/* *INDENT-ON* */
}
static void
dump_features12 (GstVulkanPhysicalDevice * device,
VkPhysicalDeviceVulkan12Features * features)
{
/* *INDENT-OFF* */
DEBUG_BOOL_STRUCT ("support for (1.2)", features, samplerMirrorClampToEdge);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, drawIndirectCount);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, storageBuffer8BitAccess);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, uniformAndStorageBuffer8BitAccess);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, shaderBufferInt64Atomics);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, shaderSharedInt64Atomics);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, shaderFloat16);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, shaderInt8);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, descriptorIndexing);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, shaderInputAttachmentArrayDynamicIndexing);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, shaderUniformTexelBufferArrayDynamicIndexing);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, shaderStorageTexelBufferArrayDynamicIndexing);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, shaderUniformBufferArrayNonUniformIndexing);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, shaderSampledImageArrayNonUniformIndexing);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, shaderStorageBufferArrayNonUniformIndexing);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, shaderStorageImageArrayNonUniformIndexing);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, shaderInputAttachmentArrayNonUniformIndexing);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, shaderUniformTexelBufferArrayNonUniformIndexing);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, descriptorBindingUniformBufferUpdateAfterBind);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, descriptorBindingSampledImageUpdateAfterBind);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, descriptorBindingStorageImageUpdateAfterBind);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, descriptorBindingStorageBufferUpdateAfterBind);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, descriptorBindingUniformTexelBufferUpdateAfterBind);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, descriptorBindingStorageTexelBufferUpdateAfterBind);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, descriptorBindingUpdateUnusedWhilePending);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, descriptorBindingPartiallyBound);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, descriptorBindingVariableDescriptorCount);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, runtimeDescriptorArray);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, samplerFilterMinmax);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, scalarBlockLayout);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, imagelessFramebuffer);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, uniformBufferStandardLayout);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, shaderSubgroupExtendedTypes);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, separateDepthStencilLayouts);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, hostQueryReset);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, timelineSemaphore);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, bufferDeviceAddress);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, bufferDeviceAddressCaptureReplay);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, bufferDeviceAddressMultiDevice);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, vulkanMemoryModel);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, vulkanMemoryModelDeviceScope);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, vulkanMemoryModelAvailabilityVisibilityChains);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, shaderOutputViewportIndex);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, shaderOutputLayer);
DEBUG_BOOL_STRUCT ("support for (1.2)", features, subgroupBroadcastDynamicId);
/* *INDENT-ON* */
}
#endif
static gboolean
dump_features (GstVulkanPhysicalDevice * device, GError ** error)
{
#define DEBUG_BOOL_FEATURE(name) DEBUG_BOOL("support for", name, device->features.name)
DEBUG_BOOL_FEATURE (robustBufferAccess);
DEBUG_BOOL_FEATURE (fullDrawIndexUint32);
DEBUG_BOOL_FEATURE (imageCubeArray);
DEBUG_BOOL_FEATURE (independentBlend);
DEBUG_BOOL_FEATURE (geometryShader);
DEBUG_BOOL_FEATURE (tessellationShader);
DEBUG_BOOL_FEATURE (sampleRateShading);
DEBUG_BOOL_FEATURE (sampleRateShading);
DEBUG_BOOL_FEATURE (dualSrcBlend);
DEBUG_BOOL_FEATURE (logicOp);
DEBUG_BOOL_FEATURE (multiDrawIndirect);
DEBUG_BOOL_FEATURE (drawIndirectFirstInstance);
DEBUG_BOOL_FEATURE (depthClamp);
DEBUG_BOOL_FEATURE (depthBiasClamp);
DEBUG_BOOL_FEATURE (fillModeNonSolid);
DEBUG_BOOL_FEATURE (depthBounds);
DEBUG_BOOL_FEATURE (wideLines);
DEBUG_BOOL_FEATURE (largePoints);
DEBUG_BOOL_FEATURE (alphaToOne);
DEBUG_BOOL_FEATURE (multiViewport);
DEBUG_BOOL_FEATURE (samplerAnisotropy);
DEBUG_BOOL_FEATURE (textureCompressionETC2);
DEBUG_BOOL_FEATURE (textureCompressionASTC_LDR);
DEBUG_BOOL_FEATURE (textureCompressionBC);
DEBUG_BOOL_FEATURE (occlusionQueryPrecise);
DEBUG_BOOL_FEATURE (pipelineStatisticsQuery);
DEBUG_BOOL_FEATURE (vertexPipelineStoresAndAtomics);
DEBUG_BOOL_FEATURE (fragmentStoresAndAtomics);
DEBUG_BOOL_FEATURE (shaderTessellationAndGeometryPointSize);
DEBUG_BOOL_FEATURE (shaderImageGatherExtended);
DEBUG_BOOL_FEATURE (shaderStorageImageExtendedFormats);
DEBUG_BOOL_FEATURE (shaderStorageImageMultisample);
DEBUG_BOOL_FEATURE (shaderStorageImageReadWithoutFormat);
DEBUG_BOOL_FEATURE (shaderStorageImageWriteWithoutFormat);
DEBUG_BOOL_FEATURE (shaderUniformBufferArrayDynamicIndexing);
DEBUG_BOOL_FEATURE (shaderSampledImageArrayDynamicIndexing);
DEBUG_BOOL_FEATURE (shaderStorageBufferArrayDynamicIndexing);
DEBUG_BOOL_FEATURE (shaderStorageImageArrayDynamicIndexing);
DEBUG_BOOL_FEATURE (shaderClipDistance);
DEBUG_BOOL_FEATURE (shaderCullDistance);
DEBUG_BOOL_FEATURE (shaderFloat64);
DEBUG_BOOL_FEATURE (shaderInt64);
DEBUG_BOOL_FEATURE (shaderInt16);
DEBUG_BOOL_FEATURE (shaderResourceResidency);
DEBUG_BOOL_FEATURE (shaderResourceMinLod);
DEBUG_BOOL_FEATURE (sparseBinding);
DEBUG_BOOL_FEATURE (sparseResidencyBuffer);
DEBUG_BOOL_FEATURE (sparseResidencyImage2D);
DEBUG_BOOL_FEATURE (sparseResidencyImage3D);
DEBUG_BOOL_FEATURE (sparseResidency2Samples);
DEBUG_BOOL_FEATURE (sparseResidency4Samples);
DEBUG_BOOL_FEATURE (sparseResidency8Samples);
DEBUG_BOOL_FEATURE (sparseResidency16Samples);
DEBUG_BOOL_FEATURE (sparseResidencyAliased);
DEBUG_BOOL_FEATURE (variableMultisampleRate);
DEBUG_BOOL_FEATURE (inheritedQueries);
#if defined (VK_API_VERSION_1_2)
GstVulkanPhysicalDevicePrivate *priv = GET_PRIV (device);
VkBaseOutStructure *iter;
#undef DEBUG_BOOL_FEATURE
if (gst_vulkan_instance_check_version (device->instance, 1, 2, 0)) {
for (iter = (VkBaseOutStructure *) & priv->features10; iter;
iter = iter->pNext) {
if (iter->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2)
dump_features10 (device,
&((VkPhysicalDeviceFeatures2 *) iter)->features);
else if (iter->sType ==
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES)
dump_features11 (device, (VkPhysicalDeviceVulkan11Features *) iter);
else if (iter->sType ==
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES)
dump_features12 (device, (VkPhysicalDeviceVulkan12Features *) iter);
}
} else
#endif
{
dump_features10 (device, &device->features);
}
return TRUE;
}
@ -355,164 +521,117 @@ dump_queue_properties (GstVulkanPhysicalDevice * device, GError ** error)
static gboolean
dump_limits (GstVulkanPhysicalDevice * device, GError ** error)
{
#define DEBUG_LIMIT(limit, format, type) \
GST_DEBUG_OBJECT (device, "limit " G_STRINGIFY(limit) ": %" format, \
(type) device->properties.limits.limit)
#define DEBUG_LIMIT_2(limit, format, type) \
GST_DEBUG_OBJECT (device, "limit " G_STRINGIFY(limit) \
": %" format ", %" format, \
(type) device->properties.limits.limit[0], \
(type) device->properties.limits.limit[1])
#define DEBUG_LIMIT_3(limit, format, type) \
GST_DEBUG_OBJECT (device, "limit " G_STRINGIFY(limit) \
": %" format ", %" format ", %" format, \
(type) device->properties.limits.limit[0], \
(type) device->properties.limits.limit[1], \
(type) device->properties.limits.limit[2])
#define DEBUG_BOOL_LIMIT(limit) DEBUG_BOOL("limit", limit, device->properties.limits.limit)
VkPhysicalDeviceLimits *limits = &device->properties.limits;
#define DEBUG_UINT32_LIMIT(limit) DEBUG_LIMIT(limit, G_GUINT32_FORMAT, guint32)
#define DEBUG_UINT32_2_LIMIT(limit) DEBUG_LIMIT_2(limit, G_GUINT32_FORMAT, guint32)
#define DEBUG_UINT32_3_LIMIT(limit) DEBUG_LIMIT_3(limit, G_GUINT32_FORMAT, guint32)
#define DEBUG_INT32_LIMIT(limit) DEBUG_LIMIT(limit, G_GINT32_FORMAT, gint32)
#define DEBUG_UINT64_LIMIT(limit) DEBUG_LIMIT(limit, G_GUINT64_FORMAT, guint64)
#define DEBUG_SIZE_LIMIT(limit) DEBUG_LIMIT(limit, G_GSIZE_FORMAT, gsize)
#define DEBUG_FLOAT_LIMIT(limit) DEBUG_LIMIT(limit, "f", float)
#define DEBUG_FLOAT_2_LIMIT(limit) DEBUG_LIMIT_2(limit, "f", float)
#define DEBUG_FLAGS_LIMIT(limit, under_name_type) \
G_STMT_START { \
gchar *str = G_PASTE(G_PASTE(gst_vulkan_,under_name_type),_flags_to_string) (device->properties.limits.limit); \
GST_DEBUG_OBJECT (device, "limit " G_STRINGIFY(limit) ": (0x%x) %s", \
device->properties.limits.limit, str); \
g_free (str); \
} G_STMT_END
DEBUG_UINT32_LIMIT (maxImageDimension1D);
DEBUG_UINT32_LIMIT (maxImageDimension2D);
DEBUG_UINT32_LIMIT (maxImageDimension3D);
DEBUG_UINT32_LIMIT (maxImageDimensionCube);
DEBUG_UINT32_LIMIT (maxImageArrayLayers);
DEBUG_UINT32_LIMIT (maxTexelBufferElements);
DEBUG_UINT32_LIMIT (maxUniformBufferRange);
DEBUG_UINT32_LIMIT (maxStorageBufferRange);
DEBUG_UINT32_LIMIT (maxPushConstantsSize);
DEBUG_UINT32_LIMIT (maxMemoryAllocationCount);
DEBUG_UINT32_LIMIT (maxSamplerAllocationCount);
DEBUG_UINT64_LIMIT (bufferImageGranularity);
DEBUG_UINT64_LIMIT (sparseAddressSpaceSize);
DEBUG_UINT32_LIMIT (maxBoundDescriptorSets);
DEBUG_UINT32_LIMIT (maxPerStageDescriptorSamplers);
DEBUG_UINT32_LIMIT (maxPerStageDescriptorUniformBuffers);
DEBUG_UINT32_LIMIT (maxPerStageDescriptorStorageBuffers);
DEBUG_UINT32_LIMIT (maxPerStageDescriptorSampledImages);
DEBUG_UINT32_LIMIT (maxPerStageDescriptorStorageImages);
DEBUG_UINT32_LIMIT (maxPerStageDescriptorInputAttachments);
DEBUG_UINT32_LIMIT (maxPerStageResources);
DEBUG_UINT32_LIMIT (maxDescriptorSetSamplers);
DEBUG_UINT32_LIMIT (maxDescriptorSetUniformBuffers);
DEBUG_UINT32_LIMIT (maxDescriptorSetUniformBuffersDynamic);
DEBUG_UINT32_LIMIT (maxDescriptorSetStorageBuffers);
DEBUG_UINT32_LIMIT (maxDescriptorSetStorageBuffersDynamic);
DEBUG_UINT32_LIMIT (maxDescriptorSetSampledImages);
DEBUG_UINT32_LIMIT (maxDescriptorSetStorageImages);
DEBUG_UINT32_LIMIT (maxDescriptorSetInputAttachments);
DEBUG_UINT32_LIMIT (maxVertexInputAttributes);
DEBUG_UINT32_LIMIT (maxVertexInputBindings);
DEBUG_UINT32_LIMIT (maxVertexInputBindings);
DEBUG_UINT32_LIMIT (maxVertexInputAttributeOffset);
DEBUG_UINT32_LIMIT (maxVertexInputBindingStride);
DEBUG_UINT32_LIMIT (maxVertexOutputComponents);
DEBUG_UINT32_LIMIT (maxTessellationGenerationLevel);
DEBUG_UINT32_LIMIT (maxTessellationPatchSize);
DEBUG_UINT32_LIMIT (maxTessellationControlPerVertexInputComponents);
DEBUG_UINT32_LIMIT (maxTessellationControlPerVertexOutputComponents);
DEBUG_UINT32_LIMIT (maxTessellationControlPerPatchOutputComponents);
DEBUG_UINT32_LIMIT (maxTessellationControlTotalOutputComponents);
DEBUG_UINT32_LIMIT (maxTessellationControlTotalOutputComponents);
DEBUG_UINT32_LIMIT (maxTessellationEvaluationInputComponents);
DEBUG_UINT32_LIMIT (maxTessellationEvaluationOutputComponents);
DEBUG_UINT32_LIMIT (maxGeometryShaderInvocations);
DEBUG_UINT32_LIMIT (maxGeometryInputComponents);
DEBUG_UINT32_LIMIT (maxGeometryOutputComponents);
DEBUG_UINT32_LIMIT (maxGeometryOutputVertices);
DEBUG_UINT32_LIMIT (maxGeometryTotalOutputComponents);
DEBUG_UINT32_LIMIT (maxFragmentInputComponents);
DEBUG_UINT32_LIMIT (maxFragmentOutputAttachments);
DEBUG_UINT32_LIMIT (maxFragmentDualSrcAttachments);
DEBUG_UINT32_LIMIT (maxFragmentCombinedOutputResources);
DEBUG_UINT32_LIMIT (maxComputeSharedMemorySize);
DEBUG_UINT32_3_LIMIT (maxComputeWorkGroupCount);
DEBUG_UINT32_LIMIT (maxComputeWorkGroupInvocations);
DEBUG_UINT32_3_LIMIT (maxComputeWorkGroupSize);
DEBUG_UINT32_LIMIT (subPixelPrecisionBits);
DEBUG_UINT32_LIMIT (subTexelPrecisionBits);
DEBUG_UINT32_LIMIT (mipmapPrecisionBits);
DEBUG_UINT32_LIMIT (maxDrawIndexedIndexValue);
DEBUG_UINT32_LIMIT (maxDrawIndirectCount);
DEBUG_FLOAT_LIMIT (maxSamplerLodBias);
DEBUG_FLOAT_LIMIT (maxSamplerAnisotropy);
DEBUG_UINT32_LIMIT (maxViewports);
DEBUG_UINT32_2_LIMIT (maxViewportDimensions);
DEBUG_FLOAT_2_LIMIT (viewportBoundsRange);
DEBUG_UINT32_LIMIT (viewportSubPixelBits);
DEBUG_SIZE_LIMIT (minMemoryMapAlignment);
DEBUG_UINT64_LIMIT (minTexelBufferOffsetAlignment);
DEBUG_UINT64_LIMIT (minUniformBufferOffsetAlignment);
DEBUG_UINT64_LIMIT (minStorageBufferOffsetAlignment);
DEBUG_INT32_LIMIT (minTexelOffset);
DEBUG_UINT32_LIMIT (maxTexelOffset);
DEBUG_INT32_LIMIT (minTexelGatherOffset);
DEBUG_UINT32_LIMIT (maxTexelGatherOffset);
DEBUG_FLOAT_LIMIT (minInterpolationOffset);
DEBUG_FLOAT_LIMIT (maxInterpolationOffset);
DEBUG_UINT32_LIMIT (subPixelInterpolationOffsetBits);
DEBUG_UINT32_LIMIT (maxFramebufferWidth);
DEBUG_UINT32_LIMIT (maxFramebufferHeight);
DEBUG_UINT32_LIMIT (maxFramebufferLayers);
DEBUG_FLAGS_LIMIT (framebufferColorSampleCounts, sample_count);
DEBUG_FLAGS_LIMIT (framebufferDepthSampleCounts, sample_count);
DEBUG_FLAGS_LIMIT (framebufferStencilSampleCounts, sample_count);
DEBUG_FLAGS_LIMIT (framebufferNoAttachmentsSampleCounts, sample_count);
DEBUG_UINT32_LIMIT (maxColorAttachments);
DEBUG_FLAGS_LIMIT (sampledImageColorSampleCounts, sample_count);
DEBUG_FLAGS_LIMIT (sampledImageIntegerSampleCounts, sample_count);
DEBUG_FLAGS_LIMIT (sampledImageDepthSampleCounts, sample_count);
DEBUG_FLAGS_LIMIT (sampledImageStencilSampleCounts, sample_count);
DEBUG_FLAGS_LIMIT (storageImageSampleCounts, sample_count);
DEBUG_BOOL_LIMIT (timestampComputeAndGraphics);
DEBUG_FLOAT_LIMIT (timestampPeriod);
DEBUG_UINT32_LIMIT (maxClipDistances);
DEBUG_UINT32_LIMIT (maxCullDistances);
DEBUG_UINT32_LIMIT (maxCombinedClipAndCullDistances);
DEBUG_UINT32_LIMIT (discreteQueuePriorities);
DEBUG_FLOAT_2_LIMIT (pointSizeRange);
DEBUG_FLOAT_2_LIMIT (lineWidthRange);
DEBUG_FLOAT_LIMIT (pointSizeGranularity);
DEBUG_FLOAT_LIMIT (lineWidthGranularity);
DEBUG_BOOL_LIMIT (strictLines);
DEBUG_BOOL_LIMIT (standardSampleLocations);
DEBUG_UINT64_LIMIT (optimalBufferCopyOffsetAlignment);
DEBUG_UINT64_LIMIT (optimalBufferCopyRowPitchAlignment);
DEBUG_UINT64_LIMIT (nonCoherentAtomSize);
#undef DEBUG_LIMIT
#undef DEBUG_LIMIT_2
#undef DEBUG_LIMIT_3
#undef DEBUG_BOOL_LIMIT
#undef DEBUG_UINT32_LIMIT
#undef DEBUG_UINT32_2_LIMIT
#undef DEBUG_UINT32_3_LIMIT
#undef DEBUG_INT32_LIMIT
#undef DEBUG_UINT64_LIMIT
#undef DEBUG_SIZE_LIMIT
#undef DEBUG_FLOAT_LIMIT
#undef DEBUG_FLOAT_2_LIMIT
#undef DEBUG_FLAGS_LIMIT
/* *INDENT-OFF* */
DEBUG_UINT32 ("limit", limits, maxImageDimension1D);
DEBUG_UINT32 ("limit", limits, maxImageDimension2D);
DEBUG_UINT32 ("limit", limits, maxImageDimension3D);
DEBUG_UINT32 ("limit", limits, maxImageDimensionCube);
DEBUG_UINT32 ("limit", limits, maxImageArrayLayers);
DEBUG_UINT32 ("limit", limits, maxTexelBufferElements);
DEBUG_UINT32 ("limit", limits, maxUniformBufferRange);
DEBUG_UINT32 ("limit", limits, maxStorageBufferRange);
DEBUG_UINT32 ("limit", limits, maxPushConstantsSize);
DEBUG_UINT32 ("limit", limits, maxMemoryAllocationCount);
DEBUG_UINT32 ("limit", limits, maxSamplerAllocationCount);
DEBUG_UINT64 ("limit", limits, bufferImageGranularity);
DEBUG_UINT64 ("limit", limits, sparseAddressSpaceSize);
DEBUG_UINT32 ("limit", limits, maxBoundDescriptorSets);
DEBUG_UINT32 ("limit", limits, maxPerStageDescriptorSamplers);
DEBUG_UINT32 ("limit", limits, maxPerStageDescriptorUniformBuffers);
DEBUG_UINT32 ("limit", limits, maxPerStageDescriptorStorageBuffers);
DEBUG_UINT32 ("limit", limits, maxPerStageDescriptorSampledImages);
DEBUG_UINT32 ("limit", limits, maxPerStageDescriptorStorageImages);
DEBUG_UINT32 ("limit", limits, maxPerStageDescriptorInputAttachments);
DEBUG_UINT32 ("limit", limits, maxPerStageResources);
DEBUG_UINT32 ("limit", limits, maxDescriptorSetSamplers);
DEBUG_UINT32 ("limit", limits, maxDescriptorSetUniformBuffers);
DEBUG_UINT32 ("limit", limits, maxDescriptorSetUniformBuffersDynamic);
DEBUG_UINT32 ("limit", limits, maxDescriptorSetStorageBuffers);
DEBUG_UINT32 ("limit", limits, maxDescriptorSetStorageBuffersDynamic);
DEBUG_UINT32 ("limit", limits, maxDescriptorSetSampledImages);
DEBUG_UINT32 ("limit", limits, maxDescriptorSetStorageImages);
DEBUG_UINT32 ("limit", limits, maxDescriptorSetInputAttachments);
DEBUG_UINT32 ("limit", limits, maxVertexInputAttributes);
DEBUG_UINT32 ("limit", limits, maxVertexInputBindings);
DEBUG_UINT32 ("limit", limits, maxVertexInputBindings);
DEBUG_UINT32 ("limit", limits, maxVertexInputAttributeOffset);
DEBUG_UINT32 ("limit", limits, maxVertexInputBindingStride);
DEBUG_UINT32 ("limit", limits, maxVertexOutputComponents);
DEBUG_UINT32 ("limit", limits, maxTessellationGenerationLevel);
DEBUG_UINT32 ("limit", limits, maxTessellationPatchSize);
DEBUG_UINT32 ("limit", limits, maxTessellationControlPerVertexInputComponents);
DEBUG_UINT32 ("limit", limits, maxTessellationControlPerVertexOutputComponents);
DEBUG_UINT32 ("limit", limits, maxTessellationControlPerPatchOutputComponents);
DEBUG_UINT32 ("limit", limits, maxTessellationControlTotalOutputComponents);
DEBUG_UINT32 ("limit", limits, maxTessellationControlTotalOutputComponents);
DEBUG_UINT32 ("limit", limits, maxTessellationEvaluationInputComponents);
DEBUG_UINT32 ("limit", limits, maxTessellationEvaluationOutputComponents);
DEBUG_UINT32 ("limit", limits, maxGeometryShaderInvocations);
DEBUG_UINT32 ("limit", limits, maxGeometryInputComponents);
DEBUG_UINT32 ("limit", limits, maxGeometryOutputComponents);
DEBUG_UINT32 ("limit", limits, maxGeometryOutputVertices);
DEBUG_UINT32 ("limit", limits, maxGeometryTotalOutputComponents);
DEBUG_UINT32 ("limit", limits, maxFragmentInputComponents);
DEBUG_UINT32 ("limit", limits, maxFragmentOutputAttachments);
DEBUG_UINT32 ("limit", limits, maxFragmentDualSrcAttachments);
DEBUG_UINT32 ("limit", limits, maxFragmentCombinedOutputResources);
DEBUG_UINT32 ("limit", limits, maxComputeSharedMemorySize);
DEBUG_UINT32_3 ("limit", limits, maxComputeWorkGroupCount);
DEBUG_UINT32 ("limit", limits, maxComputeWorkGroupInvocations);
DEBUG_UINT32_3 ("limit", limits, maxComputeWorkGroupSize);
DEBUG_UINT32 ("limit", limits, subPixelPrecisionBits);
DEBUG_UINT32 ("limit", limits, subTexelPrecisionBits);
DEBUG_UINT32 ("limit", limits, mipmapPrecisionBits);
DEBUG_UINT32 ("limit", limits, maxDrawIndexedIndexValue);
DEBUG_UINT32 ("limit", limits, maxDrawIndirectCount);
DEBUG_FLOAT ("limit", limits, maxSamplerLodBias);
DEBUG_FLOAT ("limit", limits, maxSamplerAnisotropy);
DEBUG_UINT32 ("limit", limits, maxViewports);
DEBUG_UINT32_2 ("limit", limits, maxViewportDimensions);
DEBUG_FLOAT_2 ("limit", limits, viewportBoundsRange);
DEBUG_UINT32 ("limit", limits, viewportSubPixelBits);
DEBUG_SIZE ("limit", limits, minMemoryMapAlignment);
DEBUG_UINT64 ("limit", limits, minTexelBufferOffsetAlignment);
DEBUG_UINT64 ("limit", limits, minUniformBufferOffsetAlignment);
DEBUG_UINT64 ("limit", limits, minStorageBufferOffsetAlignment);
DEBUG_INT32 ("limit", limits, minTexelOffset);
DEBUG_UINT32 ("limit", limits, maxTexelOffset);
DEBUG_INT32 ("limit", limits, minTexelGatherOffset);
DEBUG_UINT32 ("limit", limits, maxTexelGatherOffset);
DEBUG_FLOAT ("limit", limits, minInterpolationOffset);
DEBUG_FLOAT ("limit", limits, maxInterpolationOffset);
DEBUG_UINT32 ("limit", limits, subPixelInterpolationOffsetBits);
DEBUG_UINT32 ("limit", limits, maxFramebufferWidth);
DEBUG_UINT32 ("limit", limits, maxFramebufferHeight);
DEBUG_UINT32 ("limit", limits, maxFramebufferLayers);
DEBUG_FLAGS ("limit", limits, framebufferColorSampleCounts, sample_count);
DEBUG_FLAGS ("limit", limits, framebufferDepthSampleCounts, sample_count);
DEBUG_FLAGS ("limit", limits, framebufferStencilSampleCounts, sample_count);
DEBUG_FLAGS ("limit", limits, framebufferNoAttachmentsSampleCounts, sample_count);
DEBUG_UINT32 ("limit", limits, maxColorAttachments);
DEBUG_FLAGS ("limit", limits, sampledImageColorSampleCounts, sample_count);
DEBUG_FLAGS ("limit", limits, sampledImageIntegerSampleCounts, sample_count);
DEBUG_FLAGS ("limit", limits, sampledImageDepthSampleCounts, sample_count);
DEBUG_FLAGS ("limit", limits, sampledImageStencilSampleCounts, sample_count);
DEBUG_FLAGS ("limit", limits, storageImageSampleCounts, sample_count);
DEBUG_BOOL_STRUCT ("limit", limits, timestampComputeAndGraphics);
DEBUG_FLOAT ("limit", limits, timestampPeriod);
DEBUG_UINT32 ("limit", limits, maxClipDistances);
DEBUG_UINT32 ("limit", limits, maxCullDistances);
DEBUG_UINT32 ("limit", limits, maxCombinedClipAndCullDistances);
DEBUG_UINT32 ("limit", limits, discreteQueuePriorities);
DEBUG_FLOAT_2 ("limit", limits, pointSizeRange);
DEBUG_FLOAT_2 ("limit", limits, lineWidthRange);
DEBUG_FLOAT ("limit", limits, pointSizeGranularity);
DEBUG_FLOAT ("limit", limits, lineWidthGranularity);
DEBUG_BOOL_STRUCT ("limit", limits, strictLines);
DEBUG_BOOL_STRUCT ("limit", limits, standardSampleLocations);
DEBUG_UINT64 ("limit", limits, optimalBufferCopyOffsetAlignment);
DEBUG_UINT64 ("limit", limits, optimalBufferCopyRowPitchAlignment);
DEBUG_UINT64 ("limit", limits, nonCoherentAtomSize);
/* *INDENT-ON* */
return TRUE;
}
@ -520,20 +639,114 @@ dump_limits (GstVulkanPhysicalDevice * device, GError ** error)
static gboolean
dump_sparse_properties (GstVulkanPhysicalDevice * device, GError ** error)
{
#define DEBUG_BOOL_SPARSE_PROPERTY(name) DEBUG_BOOL("sparse property", name, device->properties.sparseProperties.name)
DEBUG_BOOL_SPARSE_PROPERTY (residencyStandard2DBlockShape);
DEBUG_BOOL_SPARSE_PROPERTY (residencyStandard2DMultisampleBlockShape);
DEBUG_BOOL_SPARSE_PROPERTY (residencyStandard3DBlockShape);
DEBUG_BOOL_SPARSE_PROPERTY (residencyAlignedMipSize);
DEBUG_BOOL_SPARSE_PROPERTY (residencyNonResidentStrict);
#undef DEBUG_BOOL_SPARSE_PROPERTY
VkPhysicalDeviceSparseProperties *props =
&device->properties.sparseProperties;
/* *INDENT-OFF* */
DEBUG_BOOL_STRUCT ("sparse property", props, residencyStandard2DBlockShape);
DEBUG_BOOL_STRUCT ("sparse property", props, residencyStandard2DMultisampleBlockShape);
DEBUG_BOOL_STRUCT ("sparse property", props, residencyStandard3DBlockShape);
DEBUG_BOOL_STRUCT ("sparse property", props, residencyAlignedMipSize);
DEBUG_BOOL_STRUCT ("sparse property", props, residencyNonResidentStrict);
/* *INDENT-ON* */
return TRUE;
}
#if defined (VK_API_VERSION_1_2)
static void
dump_properties11 (GstVulkanPhysicalDevice * device,
VkPhysicalDeviceVulkan11Properties * properties)
{
/* *INDENT-OFF* */
/* uint8_t deviceUUID[VK_UUID_SIZE];
uint8_t driverUUID[VK_UUID_SIZE];
uint8_t deviceLUID[VK_LUID_SIZE];*/
DEBUG_UINT32 ("properties (1.1)", properties, deviceNodeMask);
/* VkBool32 deviceLUIDValid;*/
DEBUG_UINT32 ("properties (1.1)", properties, subgroupSize);
/* VkShaderStageFlags subgroupSupportedStages;
VkSubgroupFeatureFlags subgroupSupportedOperations;*/
DEBUG_BOOL_STRUCT ("properties (1.1)", properties, subgroupQuadOperationsInAllStages);
/* VkPointClippingBehavior pointClippingBehavior;*/
DEBUG_UINT32 ("properties (1.1)", properties, maxMultiviewViewCount);
DEBUG_UINT32 ("properties (1.1)", properties, maxMultiviewInstanceIndex);
DEBUG_BOOL_STRUCT ("properties (1.1)", properties, protectedNoFault);
DEBUG_UINT32 ("properties (1.1)", properties, maxPerSetDescriptors);
DEBUG_SIZE ("properties (1.1)", properties, maxMemoryAllocationSize);
/* *INDENT-ON* */
}
static void
dump_properties12 (GstVulkanPhysicalDevice * device,
VkPhysicalDeviceVulkan12Properties * properties)
{
/* *INDENT-OFF* */
/* VkDriverId driverID;*/
DEBUG_STRING ("properties (1.2)", properties, driverName);
DEBUG_STRING ("properties (1.2)", properties, driverInfo);
/* VkConformanceVersion conformanceVersion;
VkShaderFloatControlsIndependence denormBehaviorIndependence;
VkShaderFloatControlsIndependence roundingModeIndependence;*/
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderSignedZeroInfNanPreserveFloat16);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderSignedZeroInfNanPreserveFloat32);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderSignedZeroInfNanPreserveFloat64);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderDenormPreserveFloat16);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderDenormPreserveFloat32);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderDenormPreserveFloat64);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderDenormFlushToZeroFloat16);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderDenormFlushToZeroFloat16);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderDenormFlushToZeroFloat32);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderRoundingModeRTEFloat16);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderRoundingModeRTEFloat32);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderRoundingModeRTEFloat64);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderRoundingModeRTZFloat16);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderRoundingModeRTZFloat32);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderRoundingModeRTZFloat64);
DEBUG_UINT32 ("properties (1.2)", properties, maxUpdateAfterBindDescriptorsInAllPools);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderUniformBufferArrayNonUniformIndexingNative);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderSampledImageArrayNonUniformIndexingNative);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderSampledImageArrayNonUniformIndexingNative);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderStorageBufferArrayNonUniformIndexingNative);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderStorageImageArrayNonUniformIndexingNative);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, shaderInputAttachmentArrayNonUniformIndexingNative);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, robustBufferAccessUpdateAfterBind);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, quadDivergentImplicitLod);
DEBUG_UINT32 ("properties (1.2)", properties, maxPerStageDescriptorUpdateAfterBindSamplers);
DEBUG_UINT32 ("properties (1.2)", properties, maxPerStageDescriptorUpdateAfterBindUniformBuffers);
DEBUG_UINT32 ("properties (1.2)", properties, maxPerStageDescriptorUpdateAfterBindStorageBuffers);
DEBUG_UINT32 ("properties (1.2)", properties, maxPerStageDescriptorUpdateAfterBindSampledImages);
DEBUG_UINT32 ("properties (1.2)", properties, maxPerStageDescriptorUpdateAfterBindStorageImages);
DEBUG_UINT32 ("properties (1.2)", properties, maxPerStageDescriptorUpdateAfterBindInputAttachments);
DEBUG_UINT32 ("properties (1.2)", properties, maxPerStageUpdateAfterBindResources);
DEBUG_UINT32 ("properties (1.2)", properties, maxDescriptorSetUpdateAfterBindSamplers);
DEBUG_UINT32 ("properties (1.2)", properties, maxDescriptorSetUpdateAfterBindUniformBuffers);
DEBUG_UINT32 ("properties (1.2)", properties, maxDescriptorSetUpdateAfterBindUniformBuffersDynamic);
DEBUG_UINT32 ("properties (1.2)", properties, maxDescriptorSetUpdateAfterBindStorageBuffers);
DEBUG_UINT32 ("properties (1.2)", properties, maxDescriptorSetUpdateAfterBindStorageBuffersDynamic);
DEBUG_UINT32 ("properties (1.2)", properties, maxDescriptorSetUpdateAfterBindSampledImages);
DEBUG_UINT32 ("properties (1.2)", properties, maxDescriptorSetUpdateAfterBindStorageImages);
DEBUG_UINT32 ("properties (1.2)", properties, maxDescriptorSetUpdateAfterBindInputAttachments);
/* VkResolveModeFlags supportedDepthResolveModes;
VkResolveModeFlags supportedStencilResolveModes;*/
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, independentResolveNone);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, independentResolve);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, filterMinmaxSingleComponentFormats);
DEBUG_BOOL_STRUCT ("properties (1.2)", properties, filterMinmaxImageComponentMapping);
DEBUG_UINT64 ("properties (1.2)", properties, maxTimelineSemaphoreValueDifference);
DEBUG_FLAGS ("properties (1.2)", properties, framebufferIntegerColorSampleCounts, sample_count);
/* *INDENT-ON* */
}
#endif
static gboolean
physical_device_info (GstVulkanPhysicalDevice * device, GError ** error)
{
#if defined (VK_API_VERSION_1_2)
GstVulkanPhysicalDevicePrivate *priv = GET_PRIV (device);
VkBaseOutStructure *iter;
#endif
GST_INFO_OBJECT (device, "physical device %i name \'%s\' type \'%s\' "
"api version %u.%u.%u, driver version %u.%u.%u vendor ID 0x%x, "
"device ID 0x%x", device->device_index, device->properties.deviceName,
@ -557,6 +770,20 @@ physical_device_info (GstVulkanPhysicalDevice * device, GError ** error)
if (!dump_sparse_properties (device, error))
return FALSE;
#if defined (VK_API_VERSION_1_2)
if (gst_vulkan_instance_check_version (device->instance, 1, 2, 0)) {
for (iter = (VkBaseOutStructure *) & priv->properties10; iter;
iter = iter->pNext) {
if (iter->sType ==
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES)
dump_properties11 (device, (VkPhysicalDeviceVulkan11Properties *) iter);
else if (iter->sType ==
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES)
dump_properties12 (device, (VkPhysicalDeviceVulkan12Properties *) iter);
}
}
#endif
return TRUE;
}
@ -564,6 +791,7 @@ static gboolean
gst_vulkan_physical_device_fill_info (GstVulkanPhysicalDevice * device,
GError ** error)
{
GstVulkanPhysicalDevicePrivate *priv = GET_PRIV (device);
VkResult err;
device->device = gst_vulkan_physical_device_get_handle (device);
@ -609,16 +837,78 @@ gst_vulkan_physical_device_fill_info (GstVulkanPhysicalDevice * device,
}
vkGetPhysicalDeviceProperties (device->device, &device->properties);
vkGetPhysicalDeviceMemoryProperties (device->device,
&device->memory_properties);
vkGetPhysicalDeviceFeatures (device->device, &device->features);
vkGetPhysicalDeviceQueueFamilyProperties (device->device,
&device->n_queue_families, NULL);
if (device->n_queue_families > 0) {
device->queue_family_props =
g_new0 (VkQueueFamilyProperties, device->n_queue_families);
#if defined (VK_API_VERSION_1_2)
if (gst_vulkan_instance_check_version (device->instance, 1, 2, 0)) {
PFN_vkGetPhysicalDeviceProperties2 get_props2;
PFN_vkGetPhysicalDeviceMemoryProperties2 get_mem_props2;
PFN_vkGetPhysicalDeviceFeatures2 get_features2;
PFN_vkGetPhysicalDeviceQueueFamilyProperties2 get_queue_props2;
VkPhysicalDeviceMemoryProperties2 mem_properties10;
/* *INDENT-OFF* */
mem_properties10 = (VkPhysicalDeviceMemoryProperties2) {
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
.pNext = NULL,
};
/* *INDENT-ON* */
get_props2 = (PFN_vkGetPhysicalDeviceProperties2)
gst_vulkan_instance_get_proc_address (device->instance,
"vkGetPhysicalDeviceProperties2");
get_props2 (device->device, &priv->properties10);
get_mem_props2 = (PFN_vkGetPhysicalDeviceMemoryProperties2)
gst_vulkan_instance_get_proc_address (device->instance,
"vkGetPhysicalDeviceMemoryProperties2");
get_mem_props2 (device->device, &mem_properties10);
memcpy (&device->memory_properties, &mem_properties10.memoryProperties,
sizeof (device->memory_properties));
get_features2 = (PFN_vkGetPhysicalDeviceFeatures2)
gst_vulkan_instance_get_proc_address (device->instance,
"vkGetPhysicalDeviceFeatures2");
get_features2 (device->device, &priv->features10);
memcpy (&device->features, &priv->features10.features,
sizeof (device->features));
get_queue_props2 = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2)
gst_vulkan_instance_get_proc_address (device->instance,
"vkGetPhysicalDeviceQueueFamilyProperties2");
get_queue_props2 (device->device, &device->n_queue_families, NULL);
if (device->n_queue_families > 0) {
VkQueueFamilyProperties2 *props;
int i;
props = g_new0 (VkQueueFamilyProperties2, device->n_queue_families);
for (i = 0; i < device->n_queue_families; i++) {
props[i].sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2;
props[i].pNext = NULL;
}
get_queue_props2 (device->device, &device->n_queue_families, props);
device->queue_family_props =
g_new0 (VkQueueFamilyProperties, device->n_queue_families);
for (i = 0; i < device->n_queue_families; i++) {
memcpy (&device->queue_family_props[i], &props[i].queueFamilyProperties,
sizeof (device->queue_family_props[i]));
}
g_free (props);
}
} else
#endif
{
vkGetPhysicalDeviceMemoryProperties (device->device,
&device->memory_properties);
vkGetPhysicalDeviceFeatures (device->device, &device->features);
vkGetPhysicalDeviceQueueFamilyProperties (device->device,
&device->n_queue_families, device->queue_family_props);
&device->n_queue_families, NULL);
if (device->n_queue_families > 0) {
device->queue_family_props =
g_new0 (VkQueueFamilyProperties, device->n_queue_families);
vkGetPhysicalDeviceQueueFamilyProperties (device->device,
&device->n_queue_families, device->queue_family_props);
}
}
if (!physical_device_info (device, error))