@@ -65,6 +65,8 @@ AC_ARG_WITH(openal, AS_HELP_STRING([--without-openal],[do not use OpenAL]),
65
65
AC_ARG_WITH ( opencl , AS_HELP_STRING ( [ --without-opencl] ,[ do not use OpenCL] ) ,
66
66
[ if test "x$withval" = "xno"; then ac_cv_header_CL_cl_h=no; ac_cv_header_OpenCL_opencl_h=no; fi] )
67
67
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] ) )
68
70
AC_ARG_WITH ( osmesa , AS_HELP_STRING ( [ --without-osmesa] ,[ do not use the OSMesa library] ) )
69
71
AC_ARG_WITH ( oss , AS_HELP_STRING ( [ --without-oss] ,[ do not use the OSS sound support] ) )
70
72
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)
381
383
382
384
AC_SUBST ( OPENGL_LIBS ,"" )
383
385
386
+ AC_SUBST ( D3DADAPTER9_LIBS ,"" )
387
+
384
388
dnl **** Check for header files ****
385
389
386
390
AC_SYS_LARGEFILE ()
@@ -1156,6 +1160,167 @@ This probably prevents linking to OpenGL. Try deleting the file and restarting c
1156
1160
WINE_WARNING_WITH(opengl,[ test -n "$opengl_msg"] ,[ $opengl_msg
1157
1161
OpenGL and Direct3D won't be supported.] )
1158
1162
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
+
1159
1324
CPPFLAGS="$ac_save_CPPFLAGS"
1160
1325
else
1161
1326
X_CFLAGS=""
@@ -2764,6 +2929,7 @@ WINE_CONFIG_DLL(d3d8,,[implib])
2764
2929
WINE_CONFIG_TEST(dlls/d3d8/tests)
2765
2930
WINE_CONFIG_DLL(d3d9,,[ implib] )
2766
2931
WINE_CONFIG_TEST(dlls/d3d9/tests)
2932
+ WINE_CONFIG_DLL(d3d9-nine,,[ implib] )
2767
2933
WINE_CONFIG_DLL(d3dcompiler_33)
2768
2934
WINE_CONFIG_DLL(d3dcompiler_34)
2769
2935
WINE_CONFIG_DLL(d3dcompiler_35)
0 commit comments