summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorMatthew Waters <matthew@centricular.com>2016-02-16 11:49:24 +1100
committerMatthew Waters <matthew@centricular.com>2016-02-17 01:13:43 +1100
commitca8f2b08261aba8461e2ea96508904fa713344b2 (patch)
tree01d03e01a300d06eb469f2e487919f078d3df458 /ext
parenteb4419b49b86f96537ffcc1345ac3f85263afa60 (diff)
downloadgstreamer-plugins-bad-ca8f2b08261aba8461e2ea96508904fa713344b2.tar.gz
vkdevice: add callback iteration over the device queue's
Diffstat (limited to 'ext')
-rw-r--r--ext/vulkan/vkdevice.c22
-rw-r--r--ext/vulkan/vkdevice.h5
2 files changed, 27 insertions, 0 deletions
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);