diff --git a/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12decoder.cpp b/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12decoder.cpp
index 343837c2a5..54db88ea2f 100644
--- a/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12decoder.cpp
+++ b/subprojects/gst-plugins-bad/sys/d3d12/gstd3d12decoder.cpp
@@ -560,18 +560,12 @@ gst_d3d12_decoder_configure (GstD3D12Decoder * decoder,
   auto priv = decoder->priv;
   HRESULT hr;
 
-  D3D12_VIDEO_DECODER_DESC prev_desc = { };
-  ComPtr < ID3D12VideoDecoder > prev_decoder;
-
-  /* Store previous encoder object and reuse if possible */
-  if (priv->session) {
-    prev_desc = priv->session->decoder_desc;
-    prev_decoder = priv->session->decoder;
-  }
-
   gst_d3d12_decoder_drain (decoder, videodec);
   priv->session = nullptr;
 
+  /* XXX: NVIDIA driver crash if cmdlist is reused... */
+  priv->cmd->cl = nullptr;
+
   if (!gst_d3d12_device_get_format (decoder->device,
           GST_VIDEO_INFO_FORMAT (info), &device_format) ||
       device_format.dxgi_format == DXGI_FORMAT_UNKNOWN) {
@@ -674,27 +668,18 @@ gst_d3d12_decoder_configure (GstD3D12Decoder * decoder,
   session->aligned_width = GST_ROUND_UP_N (session->coded_width, alignment);
   session->aligned_height = GST_ROUND_UP_N (session->coded_height, alignment);
 
-  if (prev_decoder && prev_desc.Configuration.DecodeProfile ==
-      support.Configuration.DecodeProfile &&
-      prev_desc.Configuration.InterlaceType ==
-      support.Configuration.InterlaceType) {
-    session->decoder = prev_decoder;
-    session->decoder_desc = prev_desc;
-  } else {
-    D3D12_VIDEO_DECODER_DESC desc;
-
-    desc.NodeMask = 0;
-    desc.Configuration = support.Configuration;
-    hr = priv->cmd->video_device->CreateVideoDecoder (&desc,
-        IID_PPV_ARGS (&session->decoder));
-    if (!gst_d3d12_result (hr, decoder->device)) {
-      GST_ERROR_OBJECT (decoder, "Couldn't create decoder object");
-      return GST_FLOW_ERROR;
-    }
-
-    session->decoder_desc = desc;
+  D3D12_VIDEO_DECODER_DESC desc = { };
+  desc.NodeMask = 0;
+  desc.Configuration = support.Configuration;
+  hr = priv->cmd->video_device->CreateVideoDecoder (&desc,
+      IID_PPV_ARGS (&session->decoder));
+  if (!gst_d3d12_result (hr, decoder->device)) {
+    GST_ERROR_OBJECT (decoder, "Couldn't create decoder object");
+    return GST_FLOW_ERROR;
   }
 
+  session->decoder_desc = desc;
+
   D3D12_VIDEO_DECODER_HEAP_DESC heap_desc;
   heap_desc.NodeMask = 0;
   heap_desc.Configuration = session->support.Configuration;