mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-22 09:41:07 +00:00
vkimagebufferpool: reset buffer's access flags
The access flags are kept around the operations, but when the buffer is released, the access flag should be reset to its original value, since queue transfers can be done along the pipeline and, when reusing the buffer, the new queue might not support the latest access flag. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7165>
This commit is contained in:
parent
cdf07cd912
commit
e91ffae1f0
1 changed files with 18 additions and 0 deletions
|
@ -580,6 +580,23 @@ gst_vulkan_image_buffer_pool_stop (GstBufferPool * pool)
|
|||
return GST_BUFFER_POOL_CLASS (parent_class)->stop (pool);
|
||||
}
|
||||
|
||||
static void
|
||||
gst_vulkan_image_buffer_pool_reset_buffer (GstBufferPool * pool,
|
||||
GstBuffer * buffer)
|
||||
{
|
||||
GstVulkanImageBufferPool *vk_pool = GST_VULKAN_IMAGE_BUFFER_POOL_CAST (pool);
|
||||
GstVulkanImageBufferPoolPrivate *priv = GET_PRIV (vk_pool);
|
||||
GstVulkanImageMemory *mem;
|
||||
guint i, n = gst_buffer_n_memory (buffer);
|
||||
|
||||
GST_BUFFER_POOL_CLASS (parent_class)->reset_buffer (pool, buffer);
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
mem = (GstVulkanImageMemory *) gst_buffer_peek_memory (buffer, i);
|
||||
mem->barrier.parent.access_flags = priv->initial_access;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gst_vulkan_image_buffer_pool_new:
|
||||
* @device: the #GstVulkanDevice to use
|
||||
|
@ -614,6 +631,7 @@ gst_vulkan_image_buffer_pool_class_init (GstVulkanImageBufferPoolClass * klass)
|
|||
gstbufferpool_class->set_config = gst_vulkan_image_buffer_pool_set_config;
|
||||
gstbufferpool_class->alloc_buffer = gst_vulkan_image_buffer_pool_alloc;
|
||||
gstbufferpool_class->stop = gst_vulkan_image_buffer_pool_stop;
|
||||
gstbufferpool_class->reset_buffer = gst_vulkan_image_buffer_pool_reset_buffer;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in a new issue