Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
56ab2b3e
Commit
56ab2b3e
authored
Nov 15, 2002
by
Lionel Ulmer
Committed by
Alexandre Julliard
Nov 15, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Load OpenGL library dynamically from x11drv.
parent
d09b9ccb
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
170 additions
and
43 deletions
+170
-43
configure
configure
+67
-4
configure.ac
configure.ac
+6
-3
Makefile.in
dlls/d3d8/Makefile.in
+1
-1
Makefile.in
dlls/ddraw/Makefile.in
+1
-1
Makefile.in
dlls/glu32/Makefile.in
+1
-1
Makefile.in
dlls/opengl32/Makefile.in
+1
-1
x11drv_main.c
dlls/x11drv/x11drv_main.c
+8
-9
opengl.c
graphics/x11drv/opengl.c
+79
-22
config.h.in
include/config.h.in
+3
-0
x11drv.h
include/x11drv.h
+3
-1
No files found.
configure
View file @
56ab2b3e
...
...
@@ -305,7 +305,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
ac_subst_vars
=
'SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS LIBEXT OPTIONS WIN16_FILES WIN16_INSTALL build build_cpu build_vendor build_os host host_cpu host_vendor host_os SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP TOOLSDIR X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS YACC LEX LEXLIB LEX_OUTPUT_ROOT XYACC XLEX LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP WINDRES ac_ct_WINDRES INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S LN C2MAN LDCONFIG LINT LINTFLAGS JPEGLIB EGREP XLIB XFILES OPENGLFILES GLU32FILES NASLIBS CURSESLIBS sane_devel SANELIBS SANEINCL ft_devel ft_devel2 FREETYPEINCL ARTSCCONFIG ARTSLIBS ARTSINCL ALSALIBS AUDIOIOLIBS DLLEXT DLLFLAGS DLLIBS LDDLLFLAGS LDSHARED DLLWRAP ac_ct_DLLWRAP CROSSTEST CROSSCC DLLTOOL LDPATH CRTLIBS LDD ALLOCA LIBOBJS LTLIBOBJS'
ac_subst_vars
=
'SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS LIBEXT OPTIONS WIN16_FILES WIN16_INSTALL build build_cpu build_vendor build_os host host_cpu host_vendor host_os SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP TOOLSDIR X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS YACC LEX LEXLIB LEX_OUTPUT_ROOT XYACC XLEX LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP WINDRES ac_ct_WINDRES INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S LN C2MAN LDCONFIG LINT LINTFLAGS JPEGLIB EGREP XLIB XFILES OPENGLFILES GLU32FILES
OPENGL_LIBS
NASLIBS CURSESLIBS sane_devel SANELIBS SANEINCL ft_devel ft_devel2 FREETYPEINCL ARTSCCONFIG ARTSLIBS ARTSINCL ALSALIBS AUDIOIOLIBS DLLEXT DLLFLAGS DLLIBS LDDLLFLAGS LDSHARED DLLWRAP ac_ct_DLLWRAP CROSSTEST CROSSCC DLLTOOL LDPATH CRTLIBS LDD ALLOCA LIBOBJS LTLIBOBJS'
ac_subst_files
=
'MAKE_RULES MAKE_DLL_RULES MAKE_TEST_RULES MAKE_PROG_RULES'
# Initialize some variables set by options.
...
...
@@ -5761,6 +5761,8 @@ XFILES=""
OPENGLFILES
=
""
GLU32FILES
=
""
OPENGL_LIBS
=
""
if
test
"
$have_x
"
=
"yes"
then
XLIB
=
"-lXext -lX11"
...
...
@@ -7013,7 +7015,7 @@ fi
echo
"
$as_me
:
$LINENO
: result:
$ac_cv_lib_GL_glXCreateContext
"
>
&5
echo
"
${
ECHO_T
}
$ac_cv_lib_GL_glXCreateContext
"
>
&6
if
test
$ac_cv_lib_GL_glXCreateContext
=
yes
;
then
X_PRE_LIBS
=
"
$X_PRE_LIBS
-lGL"
OPENGL_LIBS
=
"
-lGL"
fi
...
...
@@ -7149,7 +7151,7 @@ if test "${ac_cv_lib_GLU_gluLookAt+set}" = set; then
echo
$ECHO_N
"(cached)
$ECHO_C
"
>
&6
else
ac_check_lib_save_LIBS
=
$LIBS
LIBS
=
"-lGLU
$X_LIBS
$X_PRE_LIBS
-lXext -lX11 -lm
$X_EXTRA_LIBS
LIBS
=
"-lGLU
$
OPENGL_LIBS
$
X_LIBS
$X_PRE_LIBS
-lXext -lX11 -lm
$X_EXTRA_LIBS
$LIBS
"
cat
>
conftest.
$ac_ext
<<
_ACEOF
#line
$LINENO
"configure"
...
...
@@ -7194,7 +7196,7 @@ fi
echo
"
$as_me
:
$LINENO
: result:
$ac_cv_lib_GLU_gluLookAt
"
>
&5
echo
"
${
ECHO_T
}
$ac_cv_lib_GLU_gluLookAt
"
>
&6
if
test
$ac_cv_lib_GLU_gluLookAt
=
yes
;
then
X_PRE_LIBS
=
"
$X_PRE
_LIBS
-lGLU"
OPENGL_LIBS
=
"
$OPENGL
_LIBS
-lGLU"
GLU32FILES
=
'$(GLU32FILES)'
fi
...
...
@@ -10689,6 +10691,66 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
fi
echo
"
$as_me
:
$LINENO
: checking for -lGL soname"
>
&5
echo
$ECHO_N
"checking for -lGL soname...
$ECHO_C
"
>
&6
if
test
"
${
ac_cv_lib_soname_GL
+set
}
"
=
set
;
then
echo
$ECHO_N
"(cached)
$ECHO_C
"
>
&6
else
ac_get_soname_save_LIBS
=
$LIBS
LIBS
=
"-lGL
$X_LIBS
$X_EXTRA_LIBS
$LIBS
"
cat
>
conftest.
$ac_ext
<<
_ACEOF
#line
$LINENO
"configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char glXQueryExtension ();
int
main ()
{
glXQueryExtension ();
;
return 0;
}
_ACEOF
rm
-f
conftest.
$ac_objext
conftest
$ac_exeext
if
{
(
eval echo
"
$as_me
:
$LINENO
:
\"
$ac_link
\"
"
)
>
&5
(
eval
$ac_link
)
2>&5
ac_status
=
$?
echo
"
$as_me
:
$LINENO
:
\$
? =
$ac_status
"
>
&5
(
exit
$ac_status
)
;
}
&&
{
ac_try
=
'test -s conftest$ac_exeext'
{
(
eval echo
"
$as_me
:
$LINENO
:
\"
$ac_try
\"
"
)
>
&5
(
eval
$ac_try
)
2>&5
ac_status
=
$?
echo
"
$as_me
:
$LINENO
:
\$
? =
$ac_status
"
>
&5
(
exit
$ac_status
)
;
}
;
}
;
then
ac_cv_lib_soname_GL
=
`
$ac_cv_path_LDD
conftest
$ac_exeext
|
grep
libGL
\\
.so |
sed
's/^[ ]*\([^ ]*\)[ ]*=>.*$/\1/'
`
if
test
"x
$ac_cv_lib_soname_GL
"
=
"x"
then
ac_cv_lib_soname_GL
=
"libGL.so"
fi
else
echo
"
$as_me
: failed program was:"
>
&5
cat
conftest.
$ac_ext
>
&5
ac_cv_lib_soname_GL
=
"libGL.so"
fi
rm
-f
conftest.
$ac_objext
conftest
$ac_exeext
conftest.
$ac_ext
LIBS
=
$ac_get_soname_save_LIBS
fi
echo
"
$as_me
:
$LINENO
: result:
$ac_cv_lib_soname_GL
"
>
&5
echo
"
${
ECHO_T
}
$ac_cv_lib_soname_GL
"
>
&6
if
test
"x
$ac_cv_lib_soname_GL
"
!=
xNONE
then
cat
>>
confdefs.h
<<
_ACEOF
#define SONAME_LIBGL "
$ac_cv_lib_soname_GL
"
_ACEOF
fi
echo
"
$as_me
:
$LINENO
: checking for -lcups soname"
>
&5
echo
$ECHO_N
"checking for -lcups soname...
$ECHO_C
"
>
&6
if
test
"
${
ac_cv_lib_soname_cups
+set
}
"
=
set
;
then
...
...
@@ -14433,6 +14495,7 @@ s,@XLIB@,$XLIB,;t t
s,@XFILES@,
$XFILES
,;t t
s,@OPENGLFILES@,
$OPENGLFILES
,;t t
s,@GLU32FILES@,
$GLU32FILES
,;t t
s,@OPENGL_LIBS@,
$OPENGL_LIBS
,;t t
s,@NASLIBS@,
$NASLIBS
,;t t
s,@CURSESLIBS@,
$CURSESLIBS
,;t t
s,@sane_devel@,
$sane_devel
,;t t
...
...
configure.ac
View file @
56ab2b3e
...
...
@@ -139,6 +139,8 @@ AC_SUBST(OPENGLFILES)
OPENGLFILES=""
AC_SUBST(GLU32FILES)
GLU32FILES=""
AC_SUBST(OPENGL_LIBS)
OPENGL_LIBS=""
if test "$have_x" = "yes"
then
XLIB="-lXext -lX11"
...
...
@@ -280,7 +282,7 @@ This prevents linking to OpenGL. Delete the file and restart configure.])
then
dnl Check for the presence of the library
AC_CHECK_LIB(GL,glXCreateContext,
X_PRE_LIBS="$X_PRE_LIBS
-lGL"
OPENGL_LIBS="
-lGL"
,,
$X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
...
...
@@ -317,10 +319,10 @@ This prevents linking to OpenGL. Delete the file and restart configure.])
fi
dnl Check for GLU32 library.
AC_CHECK_LIB(GLU,gluLookAt,
[
X_PRE_LIBS="$X_PRE
_LIBS -lGLU"
[
OPENGL_LIBS="$OPENGL
_LIBS -lGLU"
GLU32FILES='$(GLU32FILES)']
,,
$X_LIBS $X_PRE_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS
$
OPENGL_LIBS $
X_LIBS $X_PRE_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS
)
fi
fi
...
...
@@ -845,6 +847,7 @@ then
WINE_GET_SONAME(Xext,XextCreateExtension,[$X_LIBS -lX11 $X_EXTRA_LIBS])
WINE_GET_SONAME(Xrender,XRenderQueryExtension,[$X_LIBS -lXext -lX11 $X_EXTRA_LIBS])
WINE_GET_SONAME(freetype,FT_Init_FreeType,[$X_LIBS])
WINE_GET_SONAME(GL,glXQueryExtension,[$X_LIBS $X_EXTRA_LIBS])
WINE_GET_SONAME(cups,cupsGetDefault)
fi
...
...
dlls/d3d8/Makefile.in
View file @
56ab2b3e
...
...
@@ -5,7 +5,7 @@ VPATH = @srcdir@
MODULE
=
d3d8.dll
IMPORTS
=
user32 gdi32 kernel32
EXTRAINCL
=
@X_CFLAGS@
EXTRALIBS
=
$(LIBUUID)
@X_LIBS@ @X_PRE_LIBS@ @XLIB@ @X_EXTRA_LIBS@
EXTRALIBS
=
$(LIBUUID)
@X_LIBS@ @X_PRE_LIBS@ @XLIB@ @X_EXTRA_LIBS@
@OPENGL_LIBS@
LDDLLFLAGS
=
@LDDLLFLAGS@
SYMBOLFILE
=
$(MODULE)
.tmp.o
...
...
dlls/ddraw/Makefile.in
View file @
56ab2b3e
...
...
@@ -5,7 +5,7 @@ VPATH = @srcdir@
MODULE
=
ddraw.dll
IMPORTS
=
user32 gdi32 kernel32
EXTRAINCL
=
@X_CFLAGS@
EXTRALIBS
=
$(LIBUUID)
@X_LIBS@ @X_PRE_LIBS@ @XLIB@ @X_EXTRA_LIBS@
EXTRALIBS
=
$(LIBUUID)
@X_LIBS@ @X_PRE_LIBS@ @XLIB@ @X_EXTRA_LIBS@
@OPENGL_LIBS@
LDDLLFLAGS
=
@LDDLLFLAGS@
SYMBOLFILE
=
$(MODULE)
.tmp.o
...
...
dlls/glu32/Makefile.in
View file @
56ab2b3e
...
...
@@ -4,7 +4,7 @@ SRCDIR = @srcdir@
VPATH
=
@srcdir@
MODULE
=
glu32.dll
EXTRAINCL
=
@X_CFLAGS@
EXTRALIBS
=
@X_LIBS@ @X_PRE_LIBS@ @XLIB@ @X_EXTRA_LIBS@
EXTRALIBS
=
@X_LIBS@ @X_PRE_LIBS@ @XLIB@ @X_EXTRA_LIBS@
@OPENGL_LIBS@
LDDLLFLAGS
=
@LDDLLFLAGS@
SYMBOLFILE
=
$(MODULE)
.tmp.o
...
...
dlls/opengl32/Makefile.in
View file @
56ab2b3e
...
...
@@ -5,7 +5,7 @@ VPATH = @srcdir@
MODULE
=
opengl32.dll
IMPORTS
=
user32 gdi32 kernel32
EXTRAINCL
=
@X_CFLAGS@
EXTRALIBS
=
@X_LIBS@ @X_PRE_LIBS@ @XLIB@ @X_EXTRA_LIBS@
EXTRALIBS
=
@X_LIBS@ @X_PRE_LIBS@ @XLIB@ @X_EXTRA_LIBS@
@OPENGL_LIBS@
LDDLLFLAGS
=
@LDDLLFLAGS@
SYMBOLFILE
=
$(MODULE)
.tmp.o
...
...
dlls/x11drv/x11drv_main.c
View file @
56ab2b3e
...
...
@@ -68,6 +68,7 @@ int client_side_antialias_with_render = 1;
unsigned
int
X11DRV_server_startticks
;
static
BOOL
synchronous
;
/* run in synchronous mode? */
static
BOOL
desktop_dbl_buf
;
static
char
*
desktop_geometry
;
static
XVisualInfo
*
desktop_vi
;
...
...
@@ -268,6 +269,9 @@ static void setup_options(void)
if
(
!
get_config_key
(
hkey
,
appkey
,
"ClientSideAntiAliasWithRender"
,
buffer
,
sizeof
(
buffer
)
))
client_side_antialias_with_render
=
IS_OPTION_TRUE
(
buffer
[
0
]
);
if
(
!
get_config_key
(
hkey
,
appkey
,
"DesktopDoubleBuffered"
,
buffer
,
sizeof
(
buffer
)
))
desktop_dbl_buf
=
IS_OPTION_TRUE
(
buffer
[
0
]
);
if
(
appkey
)
RegCloseKey
(
appkey
);
RegCloseKey
(
hkey
);
}
...
...
@@ -313,8 +317,11 @@ static void process_attach(void)
}
else
screen_depth
=
DefaultDepthOfScreen
(
screen
);
/* Initialize OpenGL */
X11DRV_OpenGL_Init
(
display
);
/* If OpenGL is available, change the default visual, etc as necessary */
if
((
desktop_vi
=
X11DRV_setup_opengl_visual
(
display
)))
if
(
desktop_dbl_buf
&&
(
desktop_vi
=
X11DRV_setup_opengl_visual
(
display
)))
{
visual
=
desktop_vi
->
visual
;
screen
=
ScreenOfDisplay
(
display
,
desktop_vi
->
screen
);
...
...
@@ -352,10 +359,6 @@ static void process_attach(void)
/* initialize DGA2 */
X11DRV_XF86DGA2_Init
();
#endif
#ifdef HAVE_OPENGL
/* initialize GLX */
/*X11DRV_GLX_Init();*/
#endif
/* load display.dll */
LoadLibrary16
(
"display"
);
...
...
@@ -385,10 +388,6 @@ static void thread_detach(void)
*/
static
void
process_detach
(
void
)
{
#ifdef HAVE_OPENGL
/* cleanup GLX */
/*X11DRV_GLX_Cleanup();*/
#endif
#ifdef HAVE_LIBXXF86DGA2
/* cleanup DGA2 */
X11DRV_XF86DGA2_Cleanup
();
...
...
graphics/x11drv/opengl.c
View file @
56ab2b3e
...
...
@@ -19,6 +19,7 @@
*/
#include "config.h"
#include "wine/port.h"
#include "ts_xlib.h"
...
...
@@ -31,7 +32,7 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
opengl
);
#if
def HAVE_OPENGL
#if
defined(HAVE_GL_GL_H) && defined(HAVE_GL_GLX_H)
#undef APIENTRY
#undef CALLBACK
...
...
@@ -105,6 +106,50 @@ static void dump_PIXELFORMATDESCRIPTOR(PIXELFORMATDESCRIPTOR *ppfd) {
DPRINTF
(
"
\n
"
);
}
/* No need to load any other libraries as according to the ABI, libGL should be self-sufficient and
include all dependencies
*/
#ifndef SONAME_LIBGL
#define SONAME_LIBGL "libGL.so"
#endif
static
void
*
opengl_handle
;
#define MAKE_FUNCPTR(f) static typeof(f) * p##f;
MAKE_FUNCPTR
(
glXChooseVisual
)
MAKE_FUNCPTR
(
glXGetConfig
)
MAKE_FUNCPTR
(
glXSwapBuffers
)
MAKE_FUNCPTR
(
glXQueryExtension
)
#undef MAKE_FUNCPTR
void
X11DRV_OpenGL_Init
(
Display
*
display
)
{
int
error_base
,
event_base
;
opengl_handle
=
wine_dlopen
(
SONAME_LIBGL
,
RTLD_NOW
|
RTLD_GLOBAL
,
NULL
,
0
);
if
(
opengl_handle
==
NULL
)
return
;
#define LOAD_FUNCPTR(f) if((p##f = wine_dlsym(opengl_handle, #f, NULL, 0)) == NULL) goto sym_not_found;
LOAD_FUNCPTR
(
glXChooseVisual
)
LOAD_FUNCPTR
(
glXGetConfig
)
LOAD_FUNCPTR
(
glXSwapBuffers
)
LOAD_FUNCPTR
(
glXQueryExtension
)
#undef LOAD_FUNCPTR
wine_tsx11_lock
();
if
(
pglXQueryExtension
(
display
,
&
event_base
,
&
error_base
)
==
True
)
{
TRACE
(
"GLX is up and running error_base = %d
\n
"
,
error_base
);
}
else
{
wine_dlclose
(
opengl_handle
,
NULL
,
0
);
opengl_handle
=
NULL
;
}
wine_tsx11_unlock
();
return
;
sym_not_found
:
wine_dlclose
(
opengl_handle
,
NULL
,
0
);
opengl_handle
=
NULL
;
}
/* X11DRV_ChoosePixelFormat
Equivalent of glXChooseVisual
...
...
@@ -121,6 +166,11 @@ int X11DRV_ChoosePixelFormat(X11DRV_PDEVICE *physDev,
XVisualInfo
*
vis
;
int
i
;
if
(
opengl_handle
==
NULL
)
{
ERR
(
"No libGL on this box - disabling OpenGL support !
\n
"
);
return
0
;
}
if
(
TRACE_ON
(
opengl
))
{
TRACE
(
"(%p,%p)
\n
"
,
physDev
,
ppfd
);
...
...
@@ -200,6 +250,11 @@ int X11DRV_DescribePixelFormat(X11DRV_PDEVICE *physDev,
int
value
;
int
rb
,
gb
,
bb
,
ab
;
if
(
opengl_handle
==
NULL
)
{
ERR
(
"No libGL on this box - disabling OpenGL support !
\n
"
);
return
0
;
}
TRACE
(
"(%p,%d,%d,%p)
\n
"
,
physDev
,
iPixelFormat
,
nBytes
,
ppfd
);
if
(
ppfd
==
NULL
)
{
...
...
@@ -225,7 +280,7 @@ int X11DRV_DescribePixelFormat(X11DRV_PDEVICE *physDev,
/* Create a 'standard' X Visual */
wine_tsx11_lock
();
vis
=
glXChooseVisual
(
gdi_display
,
DefaultScreen
(
gdi_display
),
dblBuf
);
vis
=
p
glXChooseVisual
(
gdi_display
,
DefaultScreen
(
gdi_display
),
dblBuf
);
wine_tsx11_unlock
();
WARN
(
"Uninitialized Visual. Creating standard (%p) !
\n
"
,
vis
);
...
...
@@ -248,26 +303,26 @@ int X11DRV_DescribePixelFormat(X11DRV_PDEVICE *physDev,
ppfd
->
dwFlags
=
PFD_DRAW_TO_WINDOW
|
PFD_SUPPORT_OPENGL
|
PFD_GENERIC_ACCELERATED
;
/* Now the flags extraced from the Visual */
wine_tsx11_lock
();
glXGetConfig
(
gdi_display
,
vis
,
GLX_DOUBLEBUFFER
,
&
value
);
if
(
value
)
ppfd
->
dwFlags
|=
PFD_DOUBLEBUFFER
;
glXGetConfig
(
gdi_display
,
vis
,
GLX_STEREO
,
&
value
);
if
(
value
)
ppfd
->
dwFlags
|=
PFD_STEREO
;
p
glXGetConfig
(
gdi_display
,
vis
,
GLX_DOUBLEBUFFER
,
&
value
);
if
(
value
)
ppfd
->
dwFlags
|=
PFD_DOUBLEBUFFER
;
p
glXGetConfig
(
gdi_display
,
vis
,
GLX_STEREO
,
&
value
);
if
(
value
)
ppfd
->
dwFlags
|=
PFD_STEREO
;
/* Pixel type */
glXGetConfig
(
gdi_display
,
vis
,
GLX_RGBA
,
&
value
);
p
glXGetConfig
(
gdi_display
,
vis
,
GLX_RGBA
,
&
value
);
if
(
value
)
ppfd
->
iPixelType
=
PFD_TYPE_RGBA
;
else
ppfd
->
iPixelType
=
PFD_TYPE_COLORINDEX
;
/* Color bits */
glXGetConfig
(
gdi_display
,
vis
,
GLX_BUFFER_SIZE
,
&
value
);
p
glXGetConfig
(
gdi_display
,
vis
,
GLX_BUFFER_SIZE
,
&
value
);
ppfd
->
cColorBits
=
value
;
/* Red, green, blue and alpha bits / shifts */
if
(
ppfd
->
iPixelType
==
PFD_TYPE_RGBA
)
{
glXGetConfig
(
gdi_display
,
vis
,
GLX_RED_SIZE
,
&
rb
);
glXGetConfig
(
gdi_display
,
vis
,
GLX_GREEN_SIZE
,
&
gb
);
glXGetConfig
(
gdi_display
,
vis
,
GLX_BLUE_SIZE
,
&
bb
);
glXGetConfig
(
gdi_display
,
vis
,
GLX_ALPHA_SIZE
,
&
ab
);
p
glXGetConfig
(
gdi_display
,
vis
,
GLX_RED_SIZE
,
&
rb
);
p
glXGetConfig
(
gdi_display
,
vis
,
GLX_GREEN_SIZE
,
&
gb
);
p
glXGetConfig
(
gdi_display
,
vis
,
GLX_BLUE_SIZE
,
&
bb
);
p
glXGetConfig
(
gdi_display
,
vis
,
GLX_ALPHA_SIZE
,
&
ab
);
ppfd
->
cRedBits
=
rb
;
ppfd
->
cRedShift
=
gb
+
bb
+
ab
;
...
...
@@ -290,11 +345,11 @@ int X11DRV_DescribePixelFormat(X11DRV_PDEVICE *physDev,
/* Accums : to do ... */
/* Depth bits */
glXGetConfig
(
gdi_display
,
vis
,
GLX_DEPTH_SIZE
,
&
value
);
p
glXGetConfig
(
gdi_display
,
vis
,
GLX_DEPTH_SIZE
,
&
value
);
ppfd
->
cDepthBits
=
value
;
/* stencil bits */
glXGetConfig
(
gdi_display
,
vis
,
GLX_STENCIL_SIZE
,
&
value
);
p
glXGetConfig
(
gdi_display
,
vis
,
GLX_STENCIL_SIZE
,
&
value
);
ppfd
->
cStencilBits
=
value
;
wine_tsx11_unlock
();
...
...
@@ -339,10 +394,15 @@ BOOL X11DRV_SetPixelFormat(X11DRV_PDEVICE *physDev,
Swap the buffers of this DC
*/
BOOL
X11DRV_SwapBuffers
(
X11DRV_PDEVICE
*
physDev
)
{
if
(
opengl_handle
==
NULL
)
{
ERR
(
"No libGL on this box - disabling OpenGL support !
\n
"
);
return
0
;
}
TRACE
(
"(%p)
\n
"
,
physDev
);
wine_tsx11_lock
();
glXSwapBuffers
(
gdi_display
,
physDev
->
drawable
);
p
glXSwapBuffers
(
gdi_display
,
physDev
->
drawable
);
wine_tsx11_unlock
();
return
TRUE
;
...
...
@@ -357,22 +417,19 @@ BOOL X11DRV_SwapBuffers(X11DRV_PDEVICE *physDev) {
*/
XVisualInfo
*
X11DRV_setup_opengl_visual
(
Display
*
display
)
{
int
err_base
,
evt_base
;
XVisualInfo
*
visual
=
NULL
;
int
dblBuf
[]
=
{
GLX_RGBA
,
GLX_DEPTH_SIZE
,
16
,
GLX_DOUBLEBUFFER
,
None
};
/* In order to support OpenGL or D3D, we require a double-buffered
* visual */
if
(
opengl_handle
==
NULL
)
return
NULL
;
/* In order to support OpenGL or D3D, we require a double-buffered visual */
wine_tsx11_lock
();
if
(
glXQueryExtension
(
display
,
&
err_base
,
&
evt_base
)
==
True
)
{
int
dblBuf
[]
=
{
GLX_RGBA
,
GLX_DEPTH_SIZE
,
16
,
GLX_DOUBLEBUFFER
,
None
};
visual
=
glXChooseVisual
(
display
,
DefaultScreen
(
display
),
dblBuf
);
}
visual
=
pglXChooseVisual
(
display
,
DefaultScreen
(
display
),
dblBuf
);
wine_tsx11_unlock
();
return
visual
;
}
#else
/*
defined(HAVE_OPENGL)
*/
#else
/*
no OpenGL includes
*/
int
X11DRV_ChoosePixelFormat
(
X11DRV_PDEVICE
*
physDev
,
const
PIXELFORMATDESCRIPTOR
*
ppfd
)
{
...
...
include/config.h.in
View file @
56ab2b3e
...
...
@@ -692,6 +692,9 @@
/* Define to the soname of the libfreetype library. */
#undef SONAME_LIBFREETYPE
/* Define to the soname of the libGL library. */
#undef SONAME_LIBGL
/* Define to the soname of the libX11 library. */
#undef SONAME_LIBX11
...
...
include/x11drv.h
View file @
56ab2b3e
...
...
@@ -226,6 +226,9 @@ extern BOOL X11DRV_XRender_ExtTextOut(X11DRV_PDEVICE *physDev, INT x, INT y, UIN
UINT
count
,
const
INT
*
lpDx
);
extern
void
X11DRV_XRender_UpdateDrawable
(
X11DRV_PDEVICE
*
physDev
);
extern
void
X11DRV_OpenGL_Init
(
Display
*
display
);
extern
XVisualInfo
*
X11DRV_setup_opengl_visual
(
Display
*
display
);
/* exported dib functions for now */
/* Additional info for DIB section objects */
...
...
@@ -440,6 +443,5 @@ extern void X11DRV_sync_window_style( Display *display, WND *win );
extern
int
X11DRV_sync_whole_window_position
(
Display
*
display
,
WND
*
win
,
int
zorder
);
extern
int
X11DRV_sync_client_window_position
(
Display
*
display
,
WND
*
win
);
extern
void
X11DRV_set_wm_hints
(
Display
*
display
,
WND
*
win
);
extern
XVisualInfo
*
X11DRV_setup_opengl_visual
(
Display
*
display
);
#endif
/* __WINE_X11DRV_H */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment