From ca8f2b08261aba8461e2ea96508904fa713344b2 Mon Sep 17 00:00:00 2001 From: Matthew Waters Date: Tue, 16 Feb 2016 11:49:24 +1100 Subject: vkdevice: add callback iteration over the device queue's --- ext/vulkan/vkdevice.c | 22 ++++++++++++++++++++++ ext/vulkan/vkdevice.h | 5 +++++ 2 files changed, 27 insertions(+) (limited to 'ext') diff --git a/ext/vulkan/vkdevice.c b/ext/vulkan/vkdevice.c index 54cbe65fe..9bf30f40d 100644 --- a/ext/vulkan/vkdevice.c +++ b/ext/vulkan/vkdevice.c @@ -349,6 +349,28 @@ gst_vulkan_device_get_queue (GstVulkanDevice * device, guint32 queue_family, return ret; } +void +gst_vulkan_device_foreach_queue (GstVulkanDevice * device, + GstVulkanDeviceForEachQueueFunc func, gpointer user_data) +{ + gboolean done = FALSE; + guint i; + + for (i = 0; i < device->n_queues; i++) { + GstVulkanQueue *queue = + queue = + gst_vulkan_device_get_queue (device, device->queue_family_id, i); + + if (!func (device, queue, user_data)) + done = TRUE; + + gst_object_unref (queue); + + if (done) + break; + } +} + gpointer gst_vulkan_device_get_proc_address (GstVulkanDevice * device, const gchar * name) diff --git a/ext/vulkan/vkdevice.h b/ext/vulkan/vkdevice.h index e8d934ef6..b2b10652f 100644 --- a/ext/vulkan/vkdevice.h +++ b/ext/vulkan/vkdevice.h @@ -36,6 +36,8 @@ GType gst_vulkan_device_get_type (void); #define GST_VULKAN_DEVICE_CONTEXT_TYPE_STR "gst.vulkan.device" +typedef gboolean (*GstVulkanDeviceForEachQueueFunc) (GstVulkanDevice * device, GstVulkanQueue * queue, gpointer user_data); + struct _GstVulkanDevice { GstObject parent; @@ -71,6 +73,9 @@ gboolean gst_vulkan_device_open (GstVulkanDevice * d gpointer gst_vulkan_device_get_proc_address (GstVulkanDevice * device, const gchar * name); +void gst_vulkan_device_foreach_queue (GstVulkanDevice * device, + GstVulkanDeviceForEachQueueFunc func, + gpointer user_data); GstVulkanQueue * gst_vulkan_device_get_queue (GstVulkanDevice * device, guint32 queue_family, guint32 queue_i); -- cgit v1.2.1