Skip to content

Commit 69a787b

Browse files
committed
Gallium Nine + POL Hacks
1 parent a981d37 commit 69a787b

30 files changed

+28797
-120
lines changed

configure

Lines changed: 753 additions & 18 deletions
Large diffs are not rendered by default.

configure.ac

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ AC_ARG_WITH(openal, AS_HELP_STRING([--without-openal],[do not use OpenAL]),
6565
AC_ARG_WITH(opencl, AS_HELP_STRING([--without-opencl],[do not use OpenCL]),
6666
[if test "x$withval" = "xno"; then ac_cv_header_CL_cl_h=no; ac_cv_header_OpenCL_opencl_h=no; fi])
6767
AC_ARG_WITH(opengl, AS_HELP_STRING([--without-opengl],[do not use OpenGL]))
68+
AC_ARG_WITH(d3dadapter,AS_HELP_STRING([--without-d3dadapter],[do not use native Direct3D]))
69+
AC_ARG_WITH(d3dadapter-dri2-fallback, AS_HELP_STRING([--without-d3dadapter-dri2-fallback],[add a DRI2 fallback to d3dadapter DRI3 code]))
6870
AC_ARG_WITH(osmesa, AS_HELP_STRING([--without-osmesa],[do not use the OSMesa library]))
6971
AC_ARG_WITH(oss, AS_HELP_STRING([--without-oss],[do not use the OSS sound support]))
7072
AC_ARG_WITH(pcap, AS_HELP_STRING([--without-pcap],[do not use the Packet Capture library]),
@@ -381,6 +383,8 @@ AC_CHECK_LIB(ossaudio,_oss_ioctl)
381383

382384
AC_SUBST(OPENGL_LIBS,"")
383385

386+
AC_SUBST(D3DADAPTER9_LIBS,"")
387+
384388
dnl **** Check for header files ****
385389

386390
AC_SYS_LARGEFILE()
@@ -1156,6 +1160,167 @@ This probably prevents linking to OpenGL. Try deleting the file and restarting c
11561160
WINE_WARNING_WITH(opengl,[test -n "$opengl_msg"],[$opengl_msg
11571161
OpenGL and Direct3D won't be supported.])
11581162

1163+
dnl Check for d3dadapter
1164+
if test "x$with_d3dadapter" != "xno"
1165+
then
1166+
AC_DEFINE(SONAME_D3DADAPTER9, ["d3dadapter9.so.1"], ["temporary hack"])
1167+
D3D_MODULE_DIR=`pkg-config --variable=moduledir d3d`
1168+
CPPFLAGSBAK=$CPPFLAGS
1169+
# link against libdl
1170+
CPPFLAGS="$CPPFLAGS -ldl"
1171+
1172+
ac_cv_c_dlopen_d3dadapter=""
1173+
CPPFLAGS=$CPPFLAGSBAK
1174+
D3D_CFLAGS="`pkg-config --cflags d3d`"
1175+
# d3dadapter9.h includes D3D9.h, that relies on non existant headers
1176+
# the headers are generated by widl after running this script...
1177+
# hack around by using forward declarations
1178+
CPPFLAGS="$CPPFLAGS $D3D_CFLAGS -DWINAPI= -D_D3DADAPTER_PRESENT_H_"
1179+
AC_CHECK_HEADERS([d3dadapter9.h],[],[],[[
1180+
typedef int DWORD;
1181+
typedef int HWND;
1182+
typedef int BOOL;
1183+
typedef int UINT;
1184+
typedef int HRESULT;
1185+
typedef int ULONG;
1186+
typedef struct ID3DPresent ID3DPresent;
1187+
typedef struct ID3DPresentGroup ID3DPresentGroup;
1188+
typedef struct ID3DAdapter9 ID3DAdapter9;
1189+
typedef struct D3DWindowBuffer D3DWindowBuffer;
1190+
typedef struct D3DADAPTER_IDENTIFIER9 D3DADAPTER_IDENTIFIER9;
1191+
typedef struct D3DDEVTYPE D3DDEVTYPE;
1192+
typedef struct D3DRESOURCETYPE D3DRESOURCETYPE;
1193+
typedef struct D3DMULTISAMPLE_TYPE D3DMULTISAMPLE_TYPE;
1194+
typedef struct D3DFORMAT D3DFORMAT;
1195+
typedef struct D3DCAPS9 D3DCAPS9;
1196+
typedef struct IDirect3DDevice9 IDirect3DDevice9;
1197+
typedef struct IDirect3DDevice9Ex IDirect3DDevice9Ex;
1198+
typedef struct IDirect3D9 IDirect3D9;
1199+
typedef struct D3DPRESENT_PARAMETERS D3DPRESENT_PARAMETERS;
1200+
typedef struct D3DDISPLAYMODEEX D3DDISPLAYMODEEX;
1201+
typedef struct IDirect3D9Ex IDirect3D9Ex;
1202+
typedef struct REFIID REFIID;
1203+
]])
1204+
CPPFLAGS=$CPPFLAGSBAK
1205+
# pkg-config doesn't support cross-compilation. remove once fixed.
1206+
if test "x$ac_cv_header_d3dadapter9_h" != xyes
1207+
then
1208+
# hardcode path if header isn't found
1209+
# TODO: use environment var here ?
1210+
D3D_CFLAGS="-I/usr/include/d3dadapter/"
1211+
CPPFLAGS="$CPPFLAGS $D3D_CFLAGS -DWINAPI= -D_D3DADAPTER_PRESENT_H_"
1212+
# clear autoconf cache
1213+
AS_UNSET([ac_cv_header_d3dadapter9_h])
1214+
fi
1215+
AC_SUBST(D3D_CFLAGS)
1216+
1217+
D3DADAPTER9_LIBS=""
1218+
D3DADAPTER9_LIBS_NOT_FOUND=""
1219+
D3DADAPTER9_HEADER_NOT_FOUND=""
1220+
1221+
AC_CHECK_HEADERS([d3dadapter9.h],[],[],[[
1222+
typedef int DWORD;
1223+
typedef int HWND;
1224+
typedef int BOOL;
1225+
typedef int UINT;
1226+
typedef int HRESULT;
1227+
typedef int ULONG;
1228+
typedef struct ID3DPresent ID3DPresent;
1229+
typedef struct ID3DPresentGroup ID3DPresentGroup;
1230+
typedef struct ID3DAdapter9 ID3DAdapter9;
1231+
typedef struct D3DWindowBuffer D3DWindowBuffer;
1232+
typedef struct D3DADAPTER_IDENTIFIER9 D3DADAPTER_IDENTIFIER9;
1233+
typedef struct D3DDEVTYPE D3DDEVTYPE;
1234+
typedef struct D3DRESOURCETYPE D3DRESOURCETYPE;
1235+
typedef struct D3DMULTISAMPLE_TYPE D3DMULTISAMPLE_TYPE;
1236+
typedef struct D3DFORMAT D3DFORMAT;
1237+
typedef struct D3DCAPS9 D3DCAPS9;
1238+
typedef struct IDirect3DDevice9 IDirect3DDevice9;
1239+
typedef struct IDirect3DDevice9Ex IDirect3DDevice9Ex;
1240+
typedef struct IDirect3D9 IDirect3D9;
1241+
typedef struct D3DPRESENT_PARAMETERS D3DPRESENT_PARAMETERS;
1242+
typedef struct D3DDISPLAYMODEEX D3DDISPLAYMODEEX;
1243+
typedef struct IDirect3D9Ex IDirect3D9Ex;
1244+
typedef struct REFIID REFIID;
1245+
]])
1246+
CPPFLAGS=$CPPFLAGSBAK
1247+
AC_CHECK_HEADERS([X11/Xlib-xcb.h xcb/dri3.h xcb/present.h X11/Xutil.h X11/Xlib.h pthread.h])
1248+
test "x$ac_cv_header_d3dadapter9_h" != xyes && D3DADAPTER9_HEADER_NOT_FOUND="d3dadapter9.h "
1249+
test "x$ac_cv_header_X11_Xlib_xcb_h" != xyes && D3DADAPTER9_HEADER_NOT_FOUND="${D3DADAPTER9_HEADER_NOT_FOUND}X11/Xlib-xcb.h "
1250+
test "x$ac_cv_header_xcb_dri3_h" != xyes && D3DADAPTER9_HEADER_NOT_FOUND="${D3DADAPTER9_HEADER_NOT_FOUND}xcb/dri3.h "
1251+
test "x$ac_cv_header_xcb_present_h" != xyes && D3DADAPTER9_HEADER_NOT_FOUND="${D3DADAPTER9_HEADER_NOT_FOUND}xcb/present.h "
1252+
test "x$ac_cv_header_X11_Xutil_h" != xyes && D3DADAPTER9_HEADER_NOT_FOUND="${D3DADAPTER9_HEADER_NOT_FOUND}X11/Xutil.h "
1253+
test "x$ac_cv_header_X11_Xlib_h" != xyes && D3DADAPTER9_HEADER_NOT_FOUND="${D3DADAPTER9_HEADER_NOT_FOUND}X11/Xlib.h "
1254+
test "x$ac_cv_header_pthread_h" != xyes && D3DADAPTER9_HEADER_NOT_FOUND="${D3DADAPTER9_HEADER_NOT_FOUND}pthread.h "
1255+
WINE_NOTICE_WITH(d3dadapter,[test "x$D3DADAPTER9_HEADER_NOT_FOUND" != x],
1256+
[$D3DADAPTER9_HEADER_NOT_FOUND header not found, Gallium Nine won't be supported.])
1257+
1258+
AC_CHECK_LIB(xcb,xcb_request_check,[AC_SUBST(D3DADAPTER9_LIBS,["$D3DADAPTER9_LIBS -lxcb"])])
1259+
test "x$ac_cv_lib_xcb_xcb_request_check" != xyes && D3DADAPTER9_LIBS_NOT_FOUND="libxcb "
1260+
AC_CHECK_LIB(xcb-dri3,xcb_dri3_open,[AC_SUBST(D3DADAPTER9_LIBS,["$D3DADAPTER9_LIBS -lxcb-dri3"])])
1261+
test "x$ac_cv_lib_xcb_dri3_xcb_dri3_open" != xyes && D3DADAPTER9_LIBS_NOT_FOUND="${D3DADAPTER9_LIBS_NOT_FOUND}libxcb-dri3 "
1262+
AC_CHECK_LIB(xcb-present,xcb_present_notify_msc,[AC_SUBST(D3DADAPTER9_LIBS,["$D3DADAPTER9_LIBS -lxcb-present"])])
1263+
test "x$ac_cv_lib_xcb_present_xcb_present_notify_msc" != xyes && D3DADAPTER9_LIBS_NOT_FOUND="${D3DADAPTER9_LIBS_NOT_FOUND}libxcb-present "
1264+
AC_CHECK_LIB(xcb-xfixes,xcb_xfixes_create_region,[AC_SUBST(D3DADAPTER9_LIBS,["$D3DADAPTER9_LIBS -lxcb-xfixes"])])
1265+
test "x$ac_cv_lib_xcb_xfixes_xcb_xfixes_create_region" != xyes && D3DADAPTER9_LIBS_NOT_FOUND="${D3DADAPTER9_LIBS_NOT_FOUND}libxcb-xfixes "
1266+
AC_CHECK_LIB(X11-xcb,XGetXCBConnection,[AC_SUBST(D3DADAPTER9_LIBS,["$D3DADAPTER9_LIBS -lX11-xcb"])])
1267+
test "x$ac_cv_lib_X11_xcb_XGetXCBConnection" != xyes && D3DADAPTER9_LIBS_NOT_FOUND="${D3DADAPTER9_LIBS_NOT_FOUND}libX11-xcb "
1268+
AC_CHECK_LIB(X11,XOpenDisplay,[AC_SUBST(D3DADAPTER9_LIBS,["$D3DADAPTER9_LIBS -lX11"])])
1269+
test "x$ac_cv_lib_X11_XOpenDisplay" != xyes && D3DADAPTER9_LIBS_NOT_FOUND="${D3DADAPTER9_LIBS_NOT_FOUND}libX11 "
1270+
AC_CHECK_LIB(Xext,XextRemoveDisplay,[AC_SUBST(D3DADAPTER9_LIBS,["$D3DADAPTER9_LIBS -lXext"])])
1271+
test "x$ac_cv_lib_Xext_XextRemoveDisplay" != xyes && D3DADAPTER9_LIBS_NOT_FOUND="${D3DADAPTER9_LIBS_NOT_FOUND}libXext "
1272+
AC_CHECK_LIB(pthread,pthread_mutex_lock,[AC_SUBST(D3DADAPTER9_LIBS,["$D3DADAPTER9_LIBS -lpthread"])])
1273+
test "x$ac_cv_lib_pthread_pthread_mutex_lock" != xyes && D3DADAPTER9_LIBS_NOT_FOUND="${D3DADAPTER9_LIBS_NOT_FOUND}libpthread "
1274+
1275+
if test "x$with_d3dadapter_dri2_fallback" != "xno"
1276+
then
1277+
D3DADAPTER9_FALLBACK_LIBS_NOT_FOUND=""
1278+
D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND=""
1279+
AC_CHECK_LIB(GL,glGenFramebuffers,[AC_SUBST(D3DADAPTER9_LIBS,["$D3DADAPTER9_LIBS -lGL"])])
1280+
test "x$ac_cv_lib_GL_glGenFramebuffers" != xyes && D3DADAPTER9_FALLBACK_LIBS_NOT_FOUND="libGL "
1281+
AC_CHECK_LIB(EGL,eglCreateContext,[AC_SUBST(D3DADAPTER9_LIBS,["$D3DADAPTER9_LIBS -lEGL"])])
1282+
test "x$ac_cv_lib_EGL_eglCreateContext" != xyes && D3DADAPTER9_FALLBACK_LIBS_NOT_FOUND="${D3DADAPTER9_FALLBACK_LIBS_NOT_FOUND}libEGL"
1283+
1284+
AC_CHECK_HEADERS([X11/Xmd.h X11/Xlibint.h X11/extensions/dri2tokens.h X11/extensions/dri2proto.h X11/extensions/extutil.h GL/gl.h GL/glext.h EGL/egl.h EGL/eglext.h libdrm/drm_fourcc.h libdrm/drm.h],
1285+
[],[],[[
1286+
#include <X11/Xlibint.h>
1287+
#include <X11/extensions/dri2tokens.h>
1288+
#include <GL/gl.h>
1289+
#include <EGL/egl.h>
1290+
]])
1291+
test "x$ac_cv_header_X11_Xmd_h" != xyes && D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND="${D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND}X11/Xmd.h "
1292+
test "x$ac_cv_header_X11_Xlibint_h" != xyes && D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND="${D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND}X11/Xlibint.h "
1293+
test "x$ac_cv_header_X11_extensions_dri2tokens_h" != xyes && D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND="${D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND}X11/extensions/dri2tokens.h "
1294+
test "x$ac_cv_header_X11_extensions_dri2proto_h" != xyes && D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND="${D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND}X11/extensions/dri2proto.h "
1295+
test "x$ac_cv_header_X11_extensions_extutil_h" != xyes && D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND="${D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND}X11/extensions/extutil.h "
1296+
test "x$ac_cv_header_GL_gl_h" != xyes && D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND="${D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND}GL/gl.h "
1297+
test "x$ac_cv_header_GL_glext_h" != xyes && D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND="${D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND}GL/glext.h "
1298+
test "x$ac_cv_header_EGL_egl_h" != xyes && D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND="${D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND}EGL/egl.h "
1299+
test "x$ac_cv_header_EGL_eglext_h" != xyes && D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND="${D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND}EGL/eglext.h "
1300+
test "x$ac_cv_header_libdrm_drm_fourcc_h" != xyes && D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND="${D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND}libdrm/drm_fourcc.h "
1301+
test "x$ac_cv_header_libdrm_drm_h" != xyes && D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND="${D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND}libdrm/drm.h "
1302+
1303+
if test "x$D3DADAPTER9_FALLBACK_LIBS_NOT_FOUND" = x -a "x$D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND" = x
1304+
then
1305+
AC_DEFINE(D3DADAPTER9_DRI2, 1, [Whether d3dadapter9 DRI2 fallback is compiled])
1306+
fi
1307+
WINE_NOTICE_WITH(d3dadapter_dri2_fallback,[test "x$D3DADAPTER9_FALLBACK_LIBS_NOT_FOUND" != x],
1308+
[$D3DADAPTER9_FALLBACK_LIBS_NOT_FOUND ${notice_platform}development files not found, Gallium Nine DRI2 fallback won't be supported.])
1309+
WINE_NOTICE_WITH(d3dadapter_dri2_fallback,[test "x$D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND" != x],
1310+
[$D3DADAPTER9_FALLBACK_HEADERS_NOT_FOUND headers not found, Gallium Nine DRI2 fallback won't be supported.])
1311+
fi
1312+
1313+
test "x$D3DADAPTER9_LIBS_NOT_FOUND" != "x" && \
1314+
"x$D3DADAPTER9_HEADER_NOT_FOUND" != x && \
1315+
"x$ac_cv_c_dlopen_d3dadapter" != xyes && \
1316+
enable_d3d9_nine=${enable_d3d9_nine:-no}
1317+
WINE_NOTICE_WITH(d3dadapter,[test "x$D3DADAPTER9_LIBS_NOT_FOUND" != "x"],
1318+
[$D3DADAPTER9_LIBS_NOT_FOUND ${notice_platform}development files not found, Gallium Nine won't be supported.])
1319+
else
1320+
enable_d3d9_nine=${enable_d3d9_nine:-no}
1321+
D3D_CFLAGS=""
1322+
fi
1323+
11591324
CPPFLAGS="$ac_save_CPPFLAGS"
11601325
else
11611326
X_CFLAGS=""
@@ -2764,6 +2929,7 @@ WINE_CONFIG_DLL(d3d8,,[implib])
27642929
WINE_CONFIG_TEST(dlls/d3d8/tests)
27652930
WINE_CONFIG_DLL(d3d9,,[implib])
27662931
WINE_CONFIG_TEST(dlls/d3d9/tests)
2932+
WINE_CONFIG_DLL(d3d9-nine,,[implib])
27672933
WINE_CONFIG_DLL(d3dcompiler_33)
27682934
WINE_CONFIG_DLL(d3dcompiler_34)
27692935
WINE_CONFIG_DLL(d3dcompiler_35)

0 commit comments

Comments
 (0)