d3d12decoder: Disable d3d11 interop

It does not seem to work with some AMD iGPU

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5812>
This commit is contained in:
Seungha Yang 2023-12-15 19:55:28 +09:00
parent 7afa914054
commit 7471db9a30
2 changed files with 4 additions and 24 deletions

View file

@ -11298,7 +11298,7 @@
"presence": "always"
},
"src": {
"caps": "video/x-raw(memory:D3D12Memory):\n format: { NV12, P010_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n\nvideo/x-raw(memory:D3D11Memory):\n format: { NV12, P010_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\nvideo/x-raw:\n format: { NV12, P010_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n",
"caps": "video/x-raw(memory:D3D12Memory):\n format: { NV12, P010_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\nvideo/x-raw:\n format: { NV12, P010_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n",
"direction": "src",
"presence": "always"
}
@ -11397,7 +11397,7 @@
"presence": "always"
},
"src": {
"caps": "video/x-raw(memory:D3D12Memory):\n format: NV12\n width: [ 1, 4096 ]\n height: [ 1, 4096 ]\n\nvideo/x-raw(memory:D3D11Memory):\n format: NV12\n width: [ 1, 4096 ]\n height: [ 1, 4096 ]\nvideo/x-raw:\n format: NV12\n width: [ 1, 4096 ]\n height: [ 1, 4096 ]\n",
"caps": "video/x-raw(memory:D3D12Memory):\n format: NV12\n width: [ 1, 4096 ]\n height: [ 1, 4096 ]\nvideo/x-raw:\n format: NV12\n width: [ 1, 4096 ]\n height: [ 1, 4096 ]\n",
"direction": "src",
"presence": "always"
}
@ -11469,7 +11469,7 @@
"presence": "always"
},
"src": {
"caps": "video/x-raw(memory:D3D12Memory):\n format: { NV12, P010_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n\nvideo/x-raw(memory:D3D11Memory):\n format: { NV12, P010_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\nvideo/x-raw:\n format: { NV12, P010_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n",
"caps": "video/x-raw(memory:D3D12Memory):\n format: { NV12, P010_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\nvideo/x-raw:\n format: { NV12, P010_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n",
"direction": "src",
"presence": "always"
}
@ -11541,7 +11541,7 @@
"presence": "always"
},
"src": {
"caps": "video/x-raw(memory:D3D12Memory):\n format: { NV12, P010_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n\nvideo/x-raw(memory:D3D11Memory):\n format: { NV12, P010_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\nvideo/x-raw:\n format: { NV12, P010_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n",
"caps": "video/x-raw(memory:D3D12Memory):\n format: { NV12, P010_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\nvideo/x-raw:\n format: { NV12, P010_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n",
"direction": "src",
"presence": "always"
}

View file

@ -74,9 +74,7 @@ plugin_init (GstPlugin * plugin)
ID3D12Device *device_handle;
ComPtr < ID3D12Device4 > device4;
ComPtr < ID3D12VideoDevice > video_device;
GstD3D11Device *d3d11_device;
HRESULT hr;
gint64 luid;
gboolean d3d11_interop = FALSE;
device = gst_d3d12_device_new (i);
@ -96,24 +94,6 @@ plugin_init (GstPlugin * plugin)
continue;
}
g_object_get (device, "adapter-luid", &luid, nullptr);
d3d11_device = gst_d3d11_device_new_for_adapter_luid (luid,
D3D11_CREATE_DEVICE_BGRA_SUPPORT);
/* Enable d3d11 interop only if extended NV12 shared texture feature
* is supported by GPU */
if (d3d11_device) {
ID3D11Device *d3d11_handle =
gst_d3d11_device_get_device_handle (d3d11_device);
D3D11_FEATURE_DATA_D3D11_OPTIONS4 option4 = { FALSE };
hr = d3d11_handle->CheckFeatureSupport (D3D11_FEATURE_D3D11_OPTIONS4,
&option4, sizeof (D3D11_FEATURE_DATA_D3D11_OPTIONS4));
if (SUCCEEDED (hr) && option4.ExtendedNV12SharedTextureSupported)
d3d11_interop = TRUE;
gst_object_unref (d3d11_device);
}
gst_d3d12_h264_dec_register (plugin, device, video_device.Get (),
GST_RANK_NONE, d3d11_interop);
gst_d3d12_h265_dec_register (plugin, device, video_device.Get (),