diff options
author | Matthew Waters <matthew@centricular.com> | 2016-02-16 11:49:24 +1100 |
---|---|---|
committer | Matthew Waters <matthew@centricular.com> | 2016-02-17 01:13:43 +1100 |
commit | ca8f2b08261aba8461e2ea96508904fa713344b2 (patch) | |
tree | 01d03e01a300d06eb469f2e487919f078d3df458 /ext | |
parent | eb4419b49b86f96537ffcc1345ac3f85263afa60 (diff) | |
download | gstreamer-plugins-bad-ca8f2b08261aba8461e2ea96508904fa713344b2.tar.gz |
vkdevice: add callback iteration over the device queue's
Diffstat (limited to 'ext')
-rw-r--r-- | ext/vulkan/vkdevice.c | 22 | ||||
-rw-r--r-- | ext/vulkan/vkdevice.h | 5 |
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); |