From: Matthew Waters Date: Tue, 24 Sep 2019 03:53:22 +0000 (+1000) Subject: vkbuffer: remove buffer view from the memory X-Git-Tag: 1.19.3~507^2~2818 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=452bb7229278e6046c5ef13aad394e33e622ab56;p=platform%2Fupstream%2Fgstreamer.git vkbuffer: remove buffer view from the memory It's only really useful for texture buffers which we currently do not use. --- diff --git a/ext/vulkan/vkcolorconvert.c b/ext/vulkan/vkcolorconvert.c index c910b10..b03fc69 100644 --- a/ext/vulkan/vkcolorconvert.c +++ b/ext/vulkan/vkcolorconvert.c @@ -1479,7 +1479,7 @@ _create_uniform_buffer (GstVulkanColorConvert * conv) if (conv->current_shader->uniform_size) { conv->uniform = - gst_vulkan_buffer_memory_alloc (render->device, VK_FORMAT_R8_UNORM, + gst_vulkan_buffer_memory_alloc (render->device, conv->current_shader->uniform_size, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | diff --git a/ext/vulkan/vkfullscreenrender.c b/ext/vulkan/vkfullscreenrender.c index 4989790..b627e94 100644 --- a/ext/vulkan/vkfullscreenrender.c +++ b/ext/vulkan/vkfullscreenrender.c @@ -689,8 +689,7 @@ _create_vertex_buffers (GstVulkanFullScreenRender * render) GstMapInfo map_info; render->vertices = - gst_vulkan_buffer_memory_alloc (render->device, VK_FORMAT_R8_UNORM, - sizeof (vertices), + gst_vulkan_buffer_memory_alloc (render->device, sizeof (vertices), VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT); @@ -704,8 +703,7 @@ _create_vertex_buffers (GstVulkanFullScreenRender * render) gst_memory_unmap (render->vertices, &map_info); render->indices = - gst_vulkan_buffer_memory_alloc (render->device, VK_FORMAT_R8_UNORM, - sizeof (indices), + gst_vulkan_buffer_memory_alloc (render->device, sizeof (indices), VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT); diff --git a/ext/vulkan/vkviewconvert.c b/ext/vulkan/vkviewconvert.c index ed5fc03..8711e3f 100644 --- a/ext/vulkan/vkviewconvert.c +++ b/ext/vulkan/vkviewconvert.c @@ -2088,7 +2088,7 @@ _create_uniform_buffer (GstVulkanViewConvert * conv) GstVulkanFullScreenRender *render = GST_VULKAN_FULL_SCREEN_RENDER (conv); conv->uniform = - gst_vulkan_buffer_memory_alloc (render->device, VK_FORMAT_R8_UNORM, + gst_vulkan_buffer_memory_alloc (render->device, sizeof (struct ViewUpdate), VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | diff --git a/gst-libs/gst/vulkan/gstvkbuffermemory.c b/gst-libs/gst/vulkan/gstvkbuffermemory.c index 4dc15e8..494a5f4 100644 --- a/gst-libs/gst/vulkan/gstvkbuffermemory.c +++ b/gst-libs/gst/vulkan/gstvkbuffermemory.c @@ -60,28 +60,6 @@ _create_info_from_args (VkBufferCreateInfo * info, gsize size, return TRUE; } -static gboolean -_create_view_from_args (VkBufferViewCreateInfo * info, VkBuffer buffer, - VkFormat format, gsize offset, gsize range) -{ - /* FIXME: validate these */ - g_assert (format != VK_FORMAT_UNDEFINED); - - /* *INDENT-OFF* */ - *info = (VkBufferViewCreateInfo) { - .sType = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO, - .pNext = NULL, - .flags = 0, - .buffer = buffer, - .format = format, - .offset = offset, - .range = range, - }; - /* *INDENT-ON* */ - - return TRUE; -} - static void _vk_buffer_mem_init (GstVulkanBufferMemory * mem, GstAllocator * allocator, GstMemory * parent, GstVulkanDevice * device, VkBufferUsageFlags usage, @@ -119,9 +97,9 @@ _vk_buffer_mem_init (GstVulkanBufferMemory * mem, GstAllocator * allocator, static GstVulkanBufferMemory * _vk_buffer_mem_new_alloc (GstAllocator * allocator, GstMemory * parent, - GstVulkanDevice * device, VkFormat format, gsize size, - VkBufferUsageFlags usage, VkMemoryPropertyFlags mem_prop_flags, - gpointer user_data, GDestroyNotify notify) + GstVulkanDevice * device, gsize size, VkBufferUsageFlags usage, + VkMemoryPropertyFlags mem_prop_flags, gpointer user_data, + GDestroyNotify notify) { GstVulkanBufferMemory *mem = NULL; GstAllocationParams params = { 0, }; @@ -167,17 +145,6 @@ _vk_buffer_mem_new_alloc (GstAllocator * allocator, GstMemory * parent, if (gst_vulkan_error_to_g_error (err, &error, "vkBindBufferMemory") < 0) goto vk_error; - if (usage & (VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT | - VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT)) { - VkBufferViewCreateInfo view_info; - - _create_view_from_args (&view_info, mem->buffer, format, 0, - mem->requirements.size); - err = vkCreateBufferView (device->device, &view_info, NULL, &mem->view); - if (gst_vulkan_error_to_g_error (err, &error, "vkCreateBufferView") < 0) - goto vk_error; - } - return mem; vk_error: @@ -198,13 +165,11 @@ error: static GstVulkanBufferMemory * _vk_buffer_mem_new_wrapped (GstAllocator * allocator, GstMemory * parent, - GstVulkanDevice * device, VkBuffer buffer, VkFormat format, - VkBufferUsageFlags usage, gpointer user_data, GDestroyNotify notify) + GstVulkanDevice * device, VkBuffer buffer, VkBufferUsageFlags usage, + gpointer user_data, GDestroyNotify notify) { GstVulkanBufferMemory *mem = g_new0 (GstVulkanBufferMemory, 1); GstAllocationParams params = { 0, }; - GError *error = NULL; - VkResult err; mem->buffer = buffer; @@ -217,34 +182,7 @@ _vk_buffer_mem_new_wrapped (GstAllocator * allocator, GstMemory * parent, mem->requirements.size, user_data, notify); mem->wrapped = TRUE; - /* XXX: we don't actually if the buffer has a vkDeviceMemory bound so - * this may fail */ - if (usage & (VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT | - VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT)) { - VkBufferViewCreateInfo view_info; - - _create_view_from_args (&view_info, mem->buffer, format, 0, - mem->requirements.size); - err = vkCreateBufferView (device->device, &view_info, NULL, &mem->view); - if (gst_vulkan_error_to_g_error (err, &error, "vkCreateBufferView") < 0) - goto vk_error; - } - return mem; - -vk_error: - { - GST_CAT_ERROR (GST_CAT_VULKAN_BUFFER_MEMORY, - "Failed to allocate buffer memory %s", error->message); - g_clear_error (&error); - goto error; - } - -error: - { - gst_memory_unref ((GstMemory *) mem); - return NULL; - } } static gpointer @@ -322,9 +260,6 @@ _vk_buffer_mem_free (GstAllocator * allocator, GstMemory * memory) if (mem->buffer && !mem->wrapped) vkDestroyBuffer (mem->device->device, mem->buffer, NULL); - if (mem->view) - vkDestroyBufferView (mem->device->device, mem->view, NULL); - if (mem->vk_mem) gst_memory_unref ((GstMemory *) mem->vk_mem); @@ -339,7 +274,6 @@ _vk_buffer_mem_free (GstAllocator * allocator, GstMemory * memory) /** * gst_vulkan_buffer_memory_alloc: * @device: a #GstVulkanDevice - * @format: the format for the buffer * @size: size of the new buffer * @usage: buffer usage flags * @mem_prop_flags: memory properties flags for the backing memory @@ -352,13 +286,13 @@ _vk_buffer_mem_free (GstAllocator * allocator, GstMemory * memory) * Since: 1.18 */ GstMemory * -gst_vulkan_buffer_memory_alloc (GstVulkanDevice * device, VkFormat format, - gsize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags mem_prop_flags) +gst_vulkan_buffer_memory_alloc (GstVulkanDevice * device, gsize size, + VkBufferUsageFlags usage, VkMemoryPropertyFlags mem_prop_flags) { GstVulkanBufferMemory *mem; mem = _vk_buffer_mem_new_alloc (_vulkan_buffer_memory_allocator, NULL, device, - format, size, usage, mem_prop_flags, NULL, NULL); + size, usage, mem_prop_flags, NULL, NULL); return (GstMemory *) mem; } @@ -367,7 +301,6 @@ gst_vulkan_buffer_memory_alloc (GstVulkanDevice * device, VkFormat format, * gst_vulkan_buffer_memory_wrapped: * @device: a #GstVulkanDevice * @buffer: a #VkBuffer - * @format: the #VkFormat of @buffer * @usage: usage flags of @buffer * @user_data: (allow-none): user data to call @notify with * @notify: (allow-none): a #GDestroyNotify called when @buffer is no longer in use @@ -380,14 +313,13 @@ gst_vulkan_buffer_memory_alloc (GstVulkanDevice * device, VkFormat format, */ GstMemory * gst_vulkan_buffer_memory_wrapped (GstVulkanDevice * device, VkBuffer buffer, - VkFormat format, VkBufferUsageFlags usage, gpointer user_data, - GDestroyNotify notify) + VkBufferUsageFlags usage, gpointer user_data, GDestroyNotify notify) { GstVulkanBufferMemory *mem; mem = _vk_buffer_mem_new_wrapped (_vulkan_buffer_memory_allocator, NULL, device, - buffer, format, usage, user_data, notify); + buffer, usage, user_data, notify); return (GstMemory *) mem; } diff --git a/gst-libs/gst/vulkan/gstvkbuffermemory.h b/gst-libs/gst/vulkan/gstvkbuffermemory.h index dc37240..61347d0 100644 --- a/gst-libs/gst/vulkan/gstvkbuffermemory.h +++ b/gst-libs/gst/vulkan/gstvkbuffermemory.h @@ -60,7 +60,6 @@ struct _GstVulkanBufferMemory GstVulkanDevice * device; VkBuffer buffer; - VkBufferView view; GstVulkanMemory *vk_mem; VkMemoryRequirements requirements; @@ -101,7 +100,6 @@ gboolean gst_is_vulkan_buffer_memory (GstMemory * mem); GST_VULKAN_API GstMemory * gst_vulkan_buffer_memory_alloc (GstVulkanDevice * device, - VkFormat format, gsize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags mem_prop_flags); @@ -109,7 +107,6 @@ GstMemory * gst_vulkan_buffer_memory_alloc (GstVulkanDevice * devi GST_VULKAN_API GstMemory * gst_vulkan_buffer_memory_wrapped (GstVulkanDevice * device, VkBuffer buffer, - VkFormat format, VkBufferUsageFlags usage, gpointer user_data, GDestroyNotify notify); diff --git a/gst-libs/gst/vulkan/gstvkbufferpool.c b/gst-libs/gst/vulkan/gstvkbufferpool.c index b7e1308..78add7b 100644 --- a/gst-libs/gst/vulkan/gstvkbufferpool.c +++ b/gst-libs/gst/vulkan/gstvkbufferpool.c @@ -145,14 +145,9 @@ gst_vulkan_buffer_pool_alloc (GstBufferPool * pool, GstBuffer ** buffer, } for (i = 0; i < GST_VIDEO_INFO_N_PLANES (&priv->v_info); i++) { - GstVideoFormat v_format = GST_VIDEO_INFO_FORMAT (&priv->v_info); - VkFormat vk_format; GstMemory *mem; - vk_format = gst_vulkan_format_from_video_format (v_format, i); - - mem = gst_vulkan_buffer_memory_alloc (vk_pool->device, - vk_format, priv->alloc_sizes[i], + mem = gst_vulkan_buffer_memory_alloc (vk_pool->device, priv->alloc_sizes[i], /* FIXME: choose from outside */ VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT, /* FIXME: choose from outside */ diff --git a/tests/check/libs/vkmemory.c b/tests/check/libs/vkmemory.c index 4d9f24b..3379d12 100644 --- a/tests/check/libs/vkmemory.c +++ b/tests/check/libs/vkmemory.c @@ -64,7 +64,7 @@ GST_START_TEST (test_buffer_mem_allocate) usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT; mem = - gst_vulkan_buffer_memory_alloc (device, VK_FORMAT_R8_UNORM, orig_size, + gst_vulkan_buffer_memory_alloc (device, orig_size, usage, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT); fail_unless (gst_is_vulkan_buffer_memory (mem)); vk_mem = (GstVulkanBufferMemory *) mem;