d3d12compositor: Fix critical warnings

compositor will record rendering commands using multiple threads
(i.e., blending commands are recoded using thread pool, and
background one is recorded on aggregate thread).
And there can be temporary refcount increase (so not writable).
Updates fence once all rendering commands have been submitted.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9157>
This commit is contained in:
Seungha Yang 2025-06-01 22:55:53 +09:00
parent b6628e5b92
commit 343cde7f87

View File

@ -2344,11 +2344,6 @@ gst_d3d12_compositor_draw_background (GstD3D12Compositor * self)
return FALSE;
}
auto fence = gst_d3d12_device_get_fence_handle (self->device,
D3D12_COMMAND_LIST_TYPE_DIRECT);
gst_d3d12_buffer_set_fence (priv->generated_output_buf, fence,
bg_render->fence_val, FALSE);
if (bg_render->vertex_index_upload) {
gst_d3d12_fence_data_push (fence_data,
FENCE_NOTIFY_COM (bg_render->vertex_index_upload.Detach ()));
@ -2423,11 +2418,12 @@ gst_d3d12_compositor_aggregate_frames (GstVideoAggregator * vagg,
}
fence_val = pad_priv->ctx->fence_val;
gst_d3d12_buffer_set_fence (priv->generated_output_buf,
fence, fence_val, FALSE);
}
GST_OBJECT_UNLOCK (self);
gst_d3d12_buffer_set_fence (priv->generated_output_buf,
fence, fence_val, FALSE);
if (ret != GST_FLOW_OK)
return ret;