[vlc-devel] [PATCH] d3d11: make sure the WDDM version is always set for all d3d11_device we create
Steve Lhomme
robux4 at ycbcr.xyz
Wed Jan 17 18:10:26 CET 2018
Fixes Intel detection failing in d3d11va.
---
modules/codec/avcodec/d3d11va.c | 1 +
modules/hw/d3d11/d3d11_instance.c | 1 +
modules/video_chroma/d3d11_fmt.c | 5 +++--
modules/video_chroma/d3d11_fmt.h | 2 ++
4 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c
index 83a3e577ba..d38b59ad3a 100644
--- a/modules/codec/avcodec/d3d11va.c
+++ b/modules/codec/avcodec/d3d11va.c
@@ -357,6 +357,7 @@ static int Open(vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat pix_fmt,
sys->d3d_dev.d3dcontext = p_sys->context;
sys->d3d_dev.owner = false;
+ D3D11_GetDriverVersion(va, &sys->d3d_dev);
sys->d3dvidctx = d3dvidctx;
assert(p_sys->texture[KNOWN_DXGI_INDEX] != NULL);
diff --git a/modules/hw/d3d11/d3d11_instance.c b/modules/hw/d3d11/d3d11_instance.c
index 0e19398eae..d9a2ebfb0d 100644
--- a/modules/hw/d3d11/d3d11_instance.c
+++ b/modules/hw/d3d11/d3d11_instance.c
@@ -83,6 +83,7 @@ void D3D11_FilterHoldInstance(filter_t *filter, d3d11_device_t *out, D3D11_TEXTU
{
ID3D11DeviceContext_AddRef(out->d3dcontext);
ID3D11Device_AddRef(out->d3ddevice);
+ D3D11_GetDriverVersion(filter, out);
}
vlc_mutex_unlock(&inst_lock);
diff --git a/modules/video_chroma/d3d11_fmt.c b/modules/video_chroma/d3d11_fmt.c
index 9ebd7ff5b3..e35da8ef0d 100644
--- a/modules/video_chroma/d3d11_fmt.c
+++ b/modules/video_chroma/d3d11_fmt.c
@@ -162,7 +162,8 @@ static HKEY GetAdapterRegistry(DXGI_ADAPTER_DESC *adapterDesc)
}
#endif
-static void GetDriverVersion(vlc_object_t *obj, d3d11_device_t *d3d_dev)
+#undef D3D11_GetDriverVersion
+void D3D11_GetDriverVersion(vlc_object_t *obj, d3d11_device_t *d3d_dev)
{
memset(&d3d_dev->WDDM, 0, sizeof(d3d_dev->WDDM));
#if VLC_WINSTORE_APP
@@ -291,7 +292,7 @@ HRESULT D3D11_CreateDevice(vlc_object_t *obj, d3d11_handle_t *hd3d,
if (SUCCEEDED(hr))
{
out->owner = true;
- GetDriverVersion(obj, out);
+ D3D11_GetDriverVersion(obj, out);
}
return hr;
diff --git a/modules/video_chroma/d3d11_fmt.h b/modules/video_chroma/d3d11_fmt.h
index 94e0a08cf1..e5dfaefe37 100644
--- a/modules/video_chroma/d3d11_fmt.h
+++ b/modules/video_chroma/d3d11_fmt.h
@@ -111,6 +111,8 @@ bool isNvidiaHardware(ID3D11Device *d3ddev);
IDXGIAdapter *D3D11DeviceAdapter(ID3D11Device *d3ddev);
int D3D11CheckDriverVersion(d3d11_device_t *, UINT vendorId,
const struct wddm_version *min_ver);
+void D3D11_GetDriverVersion(vlc_object_t *, d3d11_device_t *);
+#define D3D11_GetDriverVersion(a,b) D3D11_GetDriverVersion(VLC_OBJECT(a),b)
static inline bool DeviceSupportsFormat(ID3D11Device *d3ddevice,
DXGI_FORMAT format, UINT supportFlags)
--
2.14.2
More information about the vlc-devel
mailing list