[vlc-commits] d3d9_fmt: keep the adapter info while it's loaded
Steve Lhomme
git at videolan.org
Wed Mar 4 16:06:37 CET 2020
vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Mon Mar 2 15:41:45 2020 +0100| [60c0cb10694c9fc4314dbed080fe802fbb5a4fef] | committer: Steve Lhomme
d3d9_fmt: keep the adapter info while it's loaded
No need to reload the same thing many times.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=60c0cb10694c9fc4314dbed080fe802fbb5a4fef
---
modules/codec/avcodec/dxva2.c | 26 ++++++++++----------------
modules/video_chroma/d3d9_fmt.c | 7 +++----
modules/video_chroma/d3d9_fmt.h | 1 +
3 files changed, 14 insertions(+), 20 deletions(-)
diff --git a/modules/codec/avcodec/dxva2.c b/modules/codec/avcodec/dxva2.c
index 59b8d88473..75fb22be70 100644
--- a/modules/codec/avcodec/dxva2.c
+++ b/modules/codec/avcodec/dxva2.c
@@ -328,13 +328,11 @@ static int Open(vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat hwfmt, const
if (err != VLC_SUCCESS)
goto error;
- D3DADAPTER_IDENTIFIER9 d3dai;
- if (SUCCEEDED(IDirect3D9_GetAdapterIdentifier(d3d9_decoder->hd3d.obj,
- d3d9_decoder->d3ddev.adapterId, 0, &d3dai))) {
- msg_Info(va, "Using DXVA2 (%.*s, vendor %s(%lx), device %lx, revision %lx)",
- (int)sizeof(d3dai.Description), d3dai.Description,
- DxgiVendorStr(d3dai.VendorId), d3dai.VendorId, d3dai.DeviceId, d3dai.Revision);
- }
+ const D3DADAPTER_IDENTIFIER9 *identifier = &d3d9_decoder->d3ddev.identifier;
+ msg_Info(va, "Using DXVA2 (%.*s, vendor %s(%lx), device %lx, revision %lx)",
+ (int)sizeof(identifier->Description), identifier->Description,
+ DxgiVendorStr(identifier->VendorId), identifier->VendorId,
+ identifier->DeviceId, identifier->Revision);
d3d9_video_context_t *octx = GetD3D9ContextPrivate(sys->vctx);
octx->format = sys->render;
@@ -436,18 +434,14 @@ static int DxSetupOutput(vlc_va_t *va, const directx_va_mode_t *mode, const vide
d3d9_decoder_device_t *d3d9_decoder = GetD3D9OpaqueContext(sys->vctx);
- D3DADAPTER_IDENTIFIER9 identifier;
- HRESULT hr = IDirect3D9_GetAdapterIdentifier(d3d9_decoder->hd3d.obj, d3d9_decoder->d3ddev.adapterId, 0, &identifier);
- if (FAILED(hr))
- return VLC_EGENERIC;
-
- UINT driverBuild = identifier.DriverVersion.LowPart & 0xFFFF;
- if (identifier.VendorId == GPU_MANUFACTURER_INTEL && (identifier.DriverVersion.LowPart >> 16) >= 100)
+ const D3DADAPTER_IDENTIFIER9 *identifier = &d3d9_decoder->d3ddev.identifier;
+ UINT driverBuild = identifier->DriverVersion.LowPart & 0xFFFF;
+ if (identifier->VendorId == GPU_MANUFACTURER_INTEL && (identifier->DriverVersion.LowPart >> 16) >= 100)
{
/* new Intel driver format */
- driverBuild += ((identifier.DriverVersion.LowPart >> 16) - 100) * 1000;
+ driverBuild += ((identifier->DriverVersion.LowPart >> 16) - 100) * 1000;
}
- if (!directx_va_canUseDecoder(va, identifier.VendorId, identifier.DeviceId,
+ if (!directx_va_canUseDecoder(va, identifier->VendorId, identifier->DeviceId,
mode->guid, driverBuild))
{
msg_Warn(va, "GPU blacklisted for %s codec", mode->name);
diff --git a/modules/video_chroma/d3d9_fmt.c b/modules/video_chroma/d3d9_fmt.c
index 0b3472367b..730a5b7a00 100644
--- a/modules/video_chroma/d3d9_fmt.c
+++ b/modules/video_chroma/d3d9_fmt.c
@@ -214,12 +214,11 @@ d3d9_handle_t *hd3d = &sys->dec_device.hd3d;
}
/* */
- D3DADAPTER_IDENTIFIER9 d3dai;
- if (FAILED(IDirect3D9_GetAdapterIdentifier(hd3d->obj, AdapterToUse,0, &d3dai))) {
+ if (FAILED(IDirect3D9_GetAdapterIdentifier(hd3d->obj, AdapterToUse,0, &out->identifier))) {
msg_Warn(o, "IDirect3D9_GetAdapterIdentifier failed");
} else {
- msg_Dbg(o, "Direct3d9 Device: %s %lx %lx %lx", d3dai.Description,
- d3dai.VendorId, d3dai.DeviceId, d3dai.Revision );
+ msg_Dbg(o, "Direct3d9 Device: %s %lx %lx %lx", out->identifier.Description,
+ out->identifier.VendorId, out->identifier.DeviceId, out->identifier.Revision );
}
DWORD thread_modes[] = { D3DCREATE_MULTITHREADED, 0 };
diff --git a/modules/video_chroma/d3d9_fmt.h b/modules/video_chroma/d3d9_fmt.h
index ddff8e0f2f..396872357f 100644
--- a/modules/video_chroma/d3d9_fmt.h
+++ b/modules/video_chroma/d3d9_fmt.h
@@ -67,6 +67,7 @@ typedef struct
UINT adapterId;
D3DCAPS9 caps;
+ D3DADAPTER_IDENTIFIER9 identifier;
} d3d9_device_t;
typedef struct
More information about the vlc-commits
mailing list