mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-23 14:36:24 +00:00
vulkan: NULL check destruction of vulkan resources
If the element fails to start up, any number of vulkan resources could have not been created.
This commit is contained in:
parent
0c3eec57f2
commit
726261aa05
2 changed files with 23 additions and 17 deletions
|
@ -767,18 +767,22 @@ gst_vulkan_full_screen_render_stop (GstBaseTransform * bt)
|
||||||
else
|
else
|
||||||
last_fence = gst_vulkan_fence_new_always_signalled (render->device);
|
last_fence = gst_vulkan_fence_new_always_signalled (render->device);
|
||||||
|
|
||||||
|
if (render->graphics_pipeline)
|
||||||
gst_vulkan_trash_list_add (render->trash_list,
|
gst_vulkan_trash_list_add (render->trash_list,
|
||||||
gst_vulkan_trash_new_free_pipeline (last_fence,
|
gst_vulkan_trash_new_free_pipeline (last_fence,
|
||||||
render->graphics_pipeline));
|
render->graphics_pipeline));
|
||||||
render->graphics_pipeline = VK_NULL_HANDLE;
|
render->graphics_pipeline = VK_NULL_HANDLE;
|
||||||
|
if (render->pipeline_layout)
|
||||||
gst_vulkan_trash_list_add (render->trash_list,
|
gst_vulkan_trash_list_add (render->trash_list,
|
||||||
gst_vulkan_trash_new_free_pipeline_layout (last_fence,
|
gst_vulkan_trash_new_free_pipeline_layout (last_fence,
|
||||||
render->pipeline_layout));
|
render->pipeline_layout));
|
||||||
render->pipeline_layout = VK_NULL_HANDLE;
|
render->pipeline_layout = VK_NULL_HANDLE;
|
||||||
|
if (render->render_pass)
|
||||||
gst_vulkan_trash_list_add (render->trash_list,
|
gst_vulkan_trash_list_add (render->trash_list,
|
||||||
gst_vulkan_trash_new_free_render_pass (last_fence,
|
gst_vulkan_trash_new_free_render_pass (last_fence,
|
||||||
render->render_pass));
|
render->render_pass));
|
||||||
render->render_pass = VK_NULL_HANDLE;
|
render->render_pass = VK_NULL_HANDLE;
|
||||||
|
if (render->descriptor_set_layout)
|
||||||
gst_vulkan_trash_list_add (render->trash_list,
|
gst_vulkan_trash_list_add (render->trash_list,
|
||||||
gst_vulkan_trash_new_mini_object_unref (last_fence,
|
gst_vulkan_trash_new_mini_object_unref (last_fence,
|
||||||
(GstMiniObject *) render->descriptor_set_layout));
|
(GstMiniObject *) render->descriptor_set_layout));
|
||||||
|
|
|
@ -420,10 +420,12 @@ gst_vulkan_image_identity_stop (GstBaseTransform * bt)
|
||||||
else
|
else
|
||||||
last_fence = gst_vulkan_fence_new_always_signalled (render->device);
|
last_fence = gst_vulkan_fence_new_always_signalled (render->device);
|
||||||
|
|
||||||
|
if (vk_identity->descriptor_pool)
|
||||||
gst_vulkan_trash_list_add (render->trash_list,
|
gst_vulkan_trash_list_add (render->trash_list,
|
||||||
gst_vulkan_trash_new_object_unref (last_fence,
|
gst_vulkan_trash_new_object_unref (last_fence,
|
||||||
(GstObject *) vk_identity->descriptor_pool));
|
(GstObject *) vk_identity->descriptor_pool));
|
||||||
vk_identity->descriptor_pool = NULL;
|
vk_identity->descriptor_pool = NULL;
|
||||||
|
if (vk_identity->sampler)
|
||||||
gst_vulkan_trash_list_add (render->trash_list,
|
gst_vulkan_trash_list_add (render->trash_list,
|
||||||
gst_vulkan_trash_new_free_sampler (last_fence, vk_identity->sampler));
|
gst_vulkan_trash_new_free_sampler (last_fence, vk_identity->sampler));
|
||||||
vk_identity->sampler = VK_NULL_HANDLE;
|
vk_identity->sampler = VK_NULL_HANDLE;
|
||||||
|
|
Loading…
Reference in a new issue