Browse Source

d3d11: always link with d3d11.dll

We only support up to date Windows 7 with some Direct3D11 support.
Direct3D 11.1 was added in Windows 7 Platform Update [1], aka KB2670838 [2].

The screen capture and MediaFoundation plugins won't work on Win7/2008
without the platform update.

[1] https://learn.microsoft.com/en-us/windows/win32/direct3darticles/platform-update-for-windows-7
[2] https://support.microsoft.com/kb/2670838
pull/169/head
Steve Lhomme 2 years ago
parent
commit
a8d5230016
  1. 5
      modules/access/Makefile.am
  2. 15
      modules/codec/Makefile.am
  3. 5
      modules/hw/d3d11/Makefile.am
  4. 26
      modules/video_chroma/d3d11_fmt.cpp
  5. 5
      modules/video_filter/Makefile.am
  6. 3
      modules/video_output/Makefile.am

5
modules/access/Makefile.am

@ -202,10 +202,7 @@ endif
libscreen_win_plugin_la_SOURCES = access/screen/screen.c access/screen/screen.h \
access/screen/dxgi.cpp
libscreen_win_plugin_la_CXXFLAGS = $(AM_CXXFLAGS) $(LIBCOMCXXFLAGS)
libscreen_win_plugin_la_LIBADD = libd3d11_common.la $(LIBCOM) -luuid
if HAVE_WINSTORE
libscreen_win_plugin_la_LIBADD += -ld3d11
endif
libscreen_win_plugin_la_LIBADD = libd3d11_common.la $(LIBCOM) -luuid -ld3d11
if HAVE_WIN32_DESKTOP
libscreen_win_plugin_la_SOURCES += access/screen/win32.c
libscreen_win_plugin_la_LIBADD += -lgdi32

15
modules/codec/Makefile.am

@ -477,10 +477,7 @@ libd3d11va_plugin_la_SOURCES = \
packetizer/hevc_nal.c packetizer/hevc_nal.h \
packetizer/h26x_nal_common.h \
codec/avcodec/dxva_blocklist.c
libd3d11va_plugin_la_LIBADD = libd3d11_common.la $(LIBCOM) -luuid
if HAVE_WINSTORE
libd3d11va_plugin_la_LIBADD += -ld3d11
endif
libd3d11va_plugin_la_LIBADD = libd3d11_common.la $(LIBCOM) -luuid -ld3d11
if HAVE_AVCODEC_D3D11VA
codec_LTLIBRARIES += libd3d11va_plugin.la
endif
@ -596,10 +593,7 @@ codec_LTLIBRARIES += $(LTLIBvpx)
libvpx_alpha_plugin_la_SOURCES = codec/vpx_alpha.c codec/alpha_combine.h
if HAVE_WIN32
libvpx_alpha_plugin_la_SOURCES += codec/alpha_d3d11.cpp
libvpx_alpha_plugin_la_LIBADD = $(LIBCOM) libd3d11_common.la
if HAVE_WINSTORE
libvpx_alpha_plugin_la_LIBADD += -ld3d11
endif
libvpx_alpha_plugin_la_LIBADD = $(LIBCOM) libd3d11_common.la -ld3d11
endif
codec_LTLIBRARIES += libvpx_alpha_plugin.la
@ -666,11 +660,8 @@ libmft_plugin_la_SOURCES = codec/mft.cpp \
codec/mft_d3d11.cpp codec/mft_d3d11.h
libmft_plugin_la_CXXFLAGS = $(AM_CXXFLAGS) $(LIBCOMCXXFLAGS)
if HAVE_WIN32
libmft_plugin_la_LIBADD = $(LIBCOM) -luuid -lmfplat libvlc_hxxxhelper.la libd3d11_common.la
libmft_plugin_la_LIBADD = $(LIBCOM) -luuid -lmfplat libvlc_hxxxhelper.la libd3d11_common.la -ld3d11
codec_LTLIBRARIES += libmft_plugin.la
if HAVE_WINSTORE
libmft_plugin_la_LIBADD += -ld3d11
endif
endif
libgstdecode_plugin_la_SOURCES = codec/gstreamer/gstdecode.c \

5
modules/hw/d3d11/Makefile.am

@ -9,10 +9,7 @@ libdirect3d11_filters_plugin_la_SOURCES = hw/d3d11/d3d11_filters.h \
hw/d3d11/d3d11_processor.c hw/d3d11/d3d11_processor.h
libdirect3d11_filters_plugin_la_CXXFLAGS = $(AM_CXXFLAGS) $(LIBCOMCXXFLAGS)
libdirect3d11_filters_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(d3d11dir)'
libdirect3d11_filters_plugin_la_LIBADD = libchroma_copy.la libdeinterlace_common.la libd3d11_common.la $(LIBCOM)
if HAVE_WINSTORE
libdirect3d11_filters_plugin_la_LIBADD += -ld3d11
endif
libdirect3d11_filters_plugin_la_LIBADD = libchroma_copy.la libdeinterlace_common.la libd3d11_common.la $(LIBCOM) -ld3d11
d3d11_LTLIBRARIES = $(LTLIBdirect3d11_filters)
EXTRA_LTLIBRARIES += libdirect3d11_filters_plugin.la

26
modules/video_chroma/d3d11_fmt.cpp

@ -285,7 +285,6 @@ done:
typedef struct
{
#if !BUILD_FOR_UAP
HINSTANCE hdll; /* handle of the opened d3d11 dll */
#if !defined(NDEBUG) && defined(HAVE_DXGIDEBUG_H)
HINSTANCE dxgidebug_dll;
HRESULT (WINAPI * pf_DXGIGetDebugInterface)(const GUID *riid, void **ppDebug);
@ -303,16 +302,9 @@ typedef struct {
d3d11_decoder_device_t dec_device;
} d3d11_decoder_device;
static int D3D11_Create(vlc_object_t *obj, d3d11_handle_t *hd3d)
static int D3D11_Create(d3d11_handle_t *hd3d)
{
#if !BUILD_FOR_UAP
hd3d->hdll = LoadLibrary(TEXT("D3D11.DLL"));
if (!hd3d->hdll)
{
msg_Warn(obj, "cannot load d3d11.dll, aborting");
return VLC_EGENERIC;
}
# if !defined(NDEBUG) && defined(HAVE_DXGIDEBUG_H)
hd3d->dxgidebug_dll = NULL;
hd3d->pf_DXGIGetDebugInterface = NULL;
@ -338,9 +330,6 @@ static int D3D11_Create(vlc_object_t *obj, d3d11_handle_t *hd3d)
static void D3D11_Destroy(d3d11_handle_t *hd3d)
{
#if !BUILD_FOR_UAP
if (hd3d->hdll)
FreeLibrary(hd3d->hdll);
#if !defined(NDEBUG) && defined(HAVE_DXGIDEBUG_H)
if (hd3d->dxgidebug_dll)
FreeLibrary(hd3d->dxgidebug_dll);
@ -427,17 +416,6 @@ static HRESULT CreateDevice(vlc_object_t *obj, d3d11_handle_t *hd3d,
IDXGIAdapter *adapter,
bool hw_decoding, d3d11_device_t *out)
{
#if !BUILD_FOR_UAP
# define D3D11CreateDevice(a,b,c,d,e,f,g,h,i,j) pf_CreateDevice(a,b,c,d,e,f,g,h,i,j)
/* */
PFN_D3D11_CREATE_DEVICE pf_CreateDevice;
pf_CreateDevice = reinterpret_cast<PFN_D3D11_CREATE_DEVICE>(GetProcAddress(hd3d->hdll, "D3D11CreateDevice"));
if (!pf_CreateDevice) {
msg_Err(obj, "Cannot locate reference to D3D11CreateDevice ABI in DLL");
return E_NOINTERFACE;
}
#endif
HRESULT hr = E_NOTIMPL;
UINT creationFlags = 0;
@ -524,7 +502,7 @@ d3d11_decoder_device_t *(D3D11_CreateDevice)(vlc_object_t *obj,
if (unlikely(sys==NULL))
return NULL;
int ret = D3D11_Create(obj, &sys->hd3d);
int ret = D3D11_Create(&sys->hd3d);
if (ret != VLC_SUCCESS)
{
vlc_obj_free( obj, sys );

5
modules/video_filter/Makefile.am

@ -224,10 +224,7 @@ if HAVE_AMF_ENHANCER
libamf_vqenhancer_plugin_la_SOURCES = video_filter/amf_vqenhancer.c \
hw/amf/amf_helper.c hw/amf/amf_helper.h
if HAVE_WIN32
libamf_vqenhancer_plugin_la_LIBADD = $(LIBCOM) libd3d11_common.la
if HAVE_WINSTORE
libamf_vqenhancer_plugin_la_LIBADD += -ld3d11
endif
libamf_vqenhancer_plugin_la_LIBADD = $(LIBCOM) libd3d11_common.la -ld3d11
video_filter_LTLIBRARIES += libamf_vqenhancer_plugin.la
endif
endif

3
modules/video_output/Makefile.am

@ -206,7 +206,7 @@ libdirect3d11_plugin_la_SOURCES = video_output/win32/direct3d11.cpp \
video_output/win32/d3d_dynamic_shader.c video_output/win32/d3d_dynamic_shader.h \
video_output/win32/common.c video_output/win32/common.h
libdirect3d11_plugin_la_CXXFLAGS = $(AM_CXXFLAGS) $(LIBCOMCXXFLAGS)
libdirect3d11_plugin_la_LIBADD = libchroma_copy.la libd3d11_common.la $(LIBCOM) -luuid -ldxgi
libdirect3d11_plugin_la_LIBADD = libchroma_copy.la libd3d11_common.la $(LIBCOM) -luuid -ldxgi -ld3d11
libdirect3d11_plugin_la_CPPFLAGS = $(AM_CPPFLAGS)
if !HAVE_WINSTORE
libdirect3d11_plugin_la_CPPFLAGS += -DHAVE_WIN32_SENSORS
@ -218,7 +218,6 @@ libdirect3d11_plugin_la_SOURCES += video_output/win32/events.c \
video_output/win32/win32touch.c video_output/win32/win32touch.h
libdirect3d11_plugin_la_LIBADD += -lgdi32 -luser32
else
libdirect3d11_plugin_la_LIBADD += -ld3d11
libdirect3d11_plugin_la_LIBADD += -ld3dcompiler_47
endif
if HAVE_NVDEC

Loading…
Cancel
Save