vulkan/swapper: add some debug logging for surface size and present modes
authorMatthew Waters <matthew@centricular.com>
Thu, 21 Oct 2021 08:17:18 +0000 (19:17 +1100)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Thu, 21 Oct 2021 11:32:04 +0000 (11:32 +0000)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1219>

subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkdebug.c
subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkdebug.h
subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkswapper.c

index e4bd2a4..ba16372 100644 (file)
@@ -163,3 +163,27 @@ gst_vulkan_physical_device_type_to_string (VkPhysicalDeviceType type)
       return "unknown";
   }
 }
+
+/**
+ * gst_vulkan_present_mode_to_string:
+ * @present_mode: a `VkPresentModeKHR`
+ *
+ * Returns: name of @present_mode
+ *
+ * Since: 1.20
+ */
+const gchar *
+gst_vulkan_present_mode_to_string (VkPresentModeKHR present_mode)
+{
+  switch (present_mode) {
+    case VK_PRESENT_MODE_FIFO_KHR:
+      return "FIFO";
+    case VK_PRESENT_MODE_IMMEDIATE_KHR:
+      return "immediate";
+    case VK_PRESENT_MODE_MAILBOX_KHR:
+      return "mailbox";
+      /* XXX: add other values as necessary */
+    default:
+      return "unknown";
+  }
+}
index 3e9993d..9ca4686 100644 (file)
@@ -66,6 +66,8 @@ GST_VULKAN_API
 gchar *                     gst_vulkan_queue_flags_to_string                (VkQueueFlags queue_bits);
 GST_VULKAN_API
 gchar *                     gst_vulkan_sample_count_flags_to_string         (VkSampleCountFlags sample_count_bits);
+GST_VULKAN_API
+const gchar *               gst_vulkan_present_mode_to_string               (VkPresentModeKHR present_mode);
 
 G_END_DECLS
 
index 8fad33e..1814fe4 100644 (file)
@@ -753,10 +753,15 @@ _allocate_swapchain (GstVulkanSwapper * swapper, GstCaps * caps,
     swapchain_dims.width = width;
     swapchain_dims.height = height;
     priv->any_current_extent = TRUE;
+    GST_DEBUG_OBJECT (swapper, "using requested swapchain dimensions %ux%u "
+        "from window", width, height);
   } else {
     /* If the surface size is defined, the swap chain size must match */
     swapchain_dims = priv->surf_props.currentExtent;
     priv->any_current_extent = FALSE;
+    GST_DEBUG_OBJECT (swapper, "using current swapchain dimensions %ux%u",
+        priv->surf_props.currentExtent.width,
+        priv->surf_props.currentExtent.height);
   }
   priv->surface_location.w = swapchain_dims.width;
   priv->surface_location.h = swapchain_dims.height;
@@ -767,6 +772,12 @@ _allocate_swapchain (GstVulkanSwapper * swapper, GstCaps * caps,
    * always available. */
   present_mode = VK_PRESENT_MODE_FIFO_KHR;
   for (i = 0; i < priv->n_surf_present_modes; i++) {
+    GST_TRACE_OBJECT (swapper,
+        "surface %" GST_VULKAN_NON_DISPATCHABLE_HANDLE_FORMAT
+        " has present mode \'%s\' (0x%x)", priv->surface,
+        gst_vulkan_present_mode_to_string (priv->surf_present_modes[i]),
+        priv->surf_present_modes[i]);
+
     if (priv->surf_present_modes[i] == VK_PRESENT_MODE_MAILBOX_KHR) {
       present_mode = VK_PRESENT_MODE_MAILBOX_KHR;
       break;
@@ -776,6 +787,8 @@ _allocate_swapchain (GstVulkanSwapper * swapper, GstCaps * caps,
       present_mode = VK_PRESENT_MODE_IMMEDIATE_KHR;
     }
   }
+  GST_DEBUG_OBJECT (swapper, "using present mode \'%s\'",
+      gst_vulkan_present_mode_to_string (present_mode));
 
   /* Determine the number of VkImage's to use in the swap chain (we desire to
    * own only 1 image at a time, besides the images being displayed and