diff --git a/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12commandqueue.cpp b/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12commandqueue.cpp index c3a4e381fc..1d5111c307 100644 --- a/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12commandqueue.cpp +++ b/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12commandqueue.cpp @@ -144,7 +144,8 @@ gst_d3d12_command_queue_finalize (GObject * object) GstD3D12CommandQueue * gst_d3d12_command_queue_new (ID3D12Device * device, - const D3D12_COMMAND_QUEUE_DESC * desc, guint queue_size) + const D3D12_COMMAND_QUEUE_DESC * desc, D3D12_FENCE_FLAGS fence_flags, + guint queue_size) { g_return_val_if_fail (device, nullptr); g_return_val_if_fail (desc, nullptr); @@ -162,7 +163,7 @@ gst_d3d12_command_queue_new (ID3D12Device * device, } ComPtr < ID3D12Fence > fence; - hr = device->CreateFence (0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS (&fence)); + hr = device->CreateFence (0, fence_flags, IID_PPV_ARGS (&fence)); if (FAILED (hr)) { GST_ERROR ("Couldn't create fence, hr: 0x%x", (guint) hr); return nullptr; diff --git a/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12commandqueue.h b/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12commandqueue.h index 0d04b5925c..40882f344a 100644 --- a/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12commandqueue.h +++ b/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12commandqueue.h @@ -31,6 +31,7 @@ G_DECLARE_FINAL_TYPE (GstD3D12CommandQueue, GstD3D12CommandQueue * gst_d3d12_command_queue_new (ID3D12Device * device, const D3D12_COMMAND_QUEUE_DESC * desc, + D3D12_FENCE_FLAGS fence_flags, guint queue_size); gboolean gst_d3d12_command_queue_get_handle (GstD3D12CommandQueue * queue, diff --git a/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12decoder.cpp b/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12decoder.cpp index 4233b1e84a..ee13088985 100644 --- a/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12decoder.cpp +++ b/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12decoder.cpp @@ -442,7 +442,8 @@ gst_d3d12_decoder_open (GstD3D12Decoder * decoder, GstElement * element) D3D12_COMMAND_QUEUE_DESC desc = { }; desc.Type = D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE; desc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE; - cmd->queue = gst_d3d12_command_queue_new (cmd->device.Get (), &desc, 4); + cmd->queue = gst_d3d12_command_queue_new (cmd->device.Get (), &desc, + D3D12_FENCE_FLAG_NONE, 4); if (!cmd->queue) { GST_ERROR_OBJECT (element, "Couldn't create command queue"); return FALSE; diff --git a/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12device.cpp b/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12device.cpp index 0b4344010f..54f91467e0 100644 --- a/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12device.cpp +++ b/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12device.cpp @@ -729,7 +729,7 @@ gst_d3d12_device_new_internal (const GstD3D12DeviceConstructData * data) queue_desc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE; priv->direct_queue = gst_d3d12_command_queue_new (device.Get (), - &queue_desc, 0); + &queue_desc, D3D12_FENCE_FLAG_SHARED, 0); if (!priv->direct_queue) goto error; @@ -745,7 +745,7 @@ gst_d3d12_device_new_internal (const GstD3D12DeviceConstructData * data) queue_desc.Type = D3D12_COMMAND_LIST_TYPE_COPY; priv->copy_queue = gst_d3d12_command_queue_new (device.Get (), - &queue_desc, 0); + &queue_desc, D3D12_FENCE_FLAG_NONE, 0); if (!priv->copy_queue) goto error; diff --git a/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12encoder.cpp b/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12encoder.cpp index 987007d51e..68e3bbf427 100644 --- a/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12encoder.cpp +++ b/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12encoder.cpp @@ -304,7 +304,8 @@ gst_d3d12_encoder_open (GstVideoEncoder * encoder) queue_desc.Type = D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE; auto cmd = std::make_unique < EncoderCmdData > (); - cmd->queue = gst_d3d12_command_queue_new (device, &queue_desc, ASYNC_DEPTH); + cmd->queue = gst_d3d12_command_queue_new (device, &queue_desc, + D3D12_FENCE_FLAG_NONE, ASYNC_DEPTH); if (!cmd->queue) { GST_ERROR_OBJECT (self, "Couldn't create command queue"); return FALSE; diff --git a/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12window.cpp b/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12window.cpp index abfc7bfe89..788c8ca213 100644 --- a/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12window.cpp +++ b/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12window.cpp @@ -91,7 +91,7 @@ struct DeviceContext auto device_handle = gst_d3d12_device_get_device_handle (device); queue = gst_d3d12_command_queue_new (device_handle, - &queue_desc, BACK_BUFFER_COUNT * 2); + &queue_desc, D3D12_FENCE_FLAG_NONE, BACK_BUFFER_COUNT * 2); if (!queue) { GST_ERROR_OBJECT (device, "Couldn't create command queue"); return;