Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
7a031d9b
Commit
7a031d9b
authored
Jun 28, 2012
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
opengl32: Add the concept of a WGL driver.
parent
db25d402
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
104 additions
and
105 deletions
+104
-105
dc.c
dlls/gdi32/dibdrv/dc.c
+1
-3
driver.c
dlls/gdi32/driver.c
+3
-15
init.c
dlls/gdi32/enhmfdrv/init.c
+1
-3
freetype.c
dlls/gdi32/freetype.c
+1
-3
gdi32.spec
dlls/gdi32/gdi32.spec
+3
-0
init.c
dlls/gdi32/mfdrv/init.c
+1
-3
opengl.c
dlls/gdi32/opengl.c
+17
-0
path.c
dlls/gdi32/path.c
+1
-3
wgl.c
dlls/opengl32/wgl.c
+12
-16
init.c
dlls/wineps.drv/init.c
+1
-3
init.c
dlls/winex11.drv/init.c
+1
-12
opengl.c
dlls/winex11.drv/opengl.c
+46
-37
xrender.c
dlls/winex11.drv/xrender.c
+1
-3
gdi_driver.h
include/wine/gdi_driver.h
+15
-4
No files found.
dlls/gdi32/dibdrv/dc.c
View file @
7a031d9b
...
...
@@ -529,8 +529,6 @@ const struct gdi_dc_funcs dib_driver =
NULL
,
/* pwglCreateContext */
NULL
,
/* pwglCreateContextAttribsARB */
NULL
,
/* pwglGetProcAddress */
NULL
,
/* pwglMakeContextCurrentARB */
NULL
,
/* pwglMakeCurrent */
NULL
,
/* pwglSetPixelFormatWINE */
NULL
,
/* wine_get_wgl_driver */
GDI_PRIORITY_DIB_DRV
/* priority */
};
dlls/gdi32/driver.c
View file @
7a031d9b
...
...
@@ -685,19 +685,9 @@ static PROC nulldrv_wglGetProcAddress( LPCSTR name )
return
NULL
;
}
static
BOOL
nulldrv_wglMakeCurrent
(
PHYSDEV
dev
,
HGLRC
ctx
)
static
const
struct
wgl_funcs
*
nulldrv_wine_get_wgl_driver
(
PHYSDEV
dev
,
UINT
version
)
{
return
FALSE
;
}
static
BOOL
nulldrv_wglMakeContextCurrentARB
(
PHYSDEV
dev_draw
,
PHYSDEV
dev_read
,
HGLRC
ctx
)
{
return
FALSE
;
}
static
BOOL
nulldrv_wglSetPixelFormatWINE
(
PHYSDEV
dev
,
INT
format
,
const
PIXELFORMATDESCRIPTOR
*
descr
)
{
return
FALSE
;
return
NULL
;
}
const
struct
gdi_dc_funcs
null_driver
=
...
...
@@ -836,9 +826,7 @@ const struct gdi_dc_funcs null_driver =
nulldrv_wglCreateContext
,
/* pwglCreateContext */
nulldrv_wglCreateContextAttribsARB
,
/* pwglCreateContextAttribsARB */
nulldrv_wglGetProcAddress
,
/* pwglGetProcAddress */
nulldrv_wglMakeContextCurrentARB
,
/* pwglMakeContextCurrentARB */
nulldrv_wglMakeCurrent
,
/* pwglMakeCurrent */
nulldrv_wglSetPixelFormatWINE
,
/* pwglSetPixelFormatWINE */
nulldrv_wine_get_wgl_driver
,
/* wine_get_wgl_driver */
GDI_PRIORITY_NULL_DRV
/* priority */
};
...
...
dlls/gdi32/enhmfdrv/init.c
View file @
7a031d9b
...
...
@@ -170,9 +170,7 @@ static const struct gdi_dc_funcs EMFDRV_Funcs =
NULL
,
/* pwglCreateContext */
NULL
,
/* pwglCreateContextAttribsARB */
NULL
,
/* pwglGetProcAddress */
NULL
,
/* pwglMakeContextCurrentARB */
NULL
,
/* pwglMakeCurrent */
NULL
,
/* pwglSetPixelFormatWINE */
NULL
,
/* wine_get_wgl_driver */
GDI_PRIORITY_GRAPHICS_DRV
/* priority */
};
...
...
dlls/gdi32/freetype.c
View file @
7a031d9b
...
...
@@ -7874,9 +7874,7 @@ static const struct gdi_dc_funcs freetype_funcs =
NULL
,
/* pwglCreateContext */
NULL
,
/* pwglCreateContextAttribsARB */
NULL
,
/* pwglGetProcAddress */
NULL
,
/* pwglMakeContextCurrentARB */
NULL
,
/* pwglMakeCurrent */
NULL
,
/* pwglSetPixelFormatWINE */
NULL
,
/* wine_get_wgl_driver */
GDI_PRIORITY_FONT_DRV
/* priority */
};
...
...
dlls/gdi32/gdi32.spec
View file @
7a031d9b
...
...
@@ -518,3 +518,6 @@
# GDI objects
@ cdecl __wine_make_gdi_object_system(long long)
@ cdecl __wine_set_visible_region(long long ptr)
# OpenGL
@ cdecl __wine_get_wgl_driver(long long)
dlls/gdi32/mfdrv/init.c
View file @
7a031d9b
...
...
@@ -233,9 +233,7 @@ static const struct gdi_dc_funcs MFDRV_Funcs =
NULL
,
/* pwglCreateContext */
NULL
,
/* pwglCreateContextAttribsARB */
NULL
,
/* pwglGetProcAddress */
NULL
,
/* pwglMakeContextCurrentARB */
NULL
,
/* pwglMakeCurrent */
NULL
,
/* pwglSetPixelFormatWINE */
NULL
,
/* wine_get_wgl_driver */
GDI_PRIORITY_GRAPHICS_DRV
/* priority */
};
...
...
dlls/gdi32/opengl.c
View file @
7a031d9b
...
...
@@ -134,6 +134,23 @@ PROC WINAPI wglGetProcAddress(LPCSTR func)
return
ret
;
}
/***********************************************************************
* __wine_get_wgl_driver (GDI32.@)
*/
const
struct
wgl_funcs
*
CDECL
__wine_get_wgl_driver
(
HDC
hdc
,
UINT
version
)
{
const
struct
wgl_funcs
*
ret
=
NULL
;
DC
*
dc
=
get_dc_ptr
(
hdc
);
if
(
dc
)
{
PHYSDEV
physdev
=
GET_DC_PHYSDEV
(
dc
,
wine_get_wgl_driver
);
ret
=
physdev
->
funcs
->
wine_get_wgl_driver
(
physdev
,
version
);
release_dc_ptr
(
dc
);
}
return
ret
;
}
/******************************************************************************
* ChoosePixelFormat (GDI32.@)
*/
...
...
dlls/gdi32/path.c
View file @
7a031d9b
...
...
@@ -2367,8 +2367,6 @@ const struct gdi_dc_funcs path_driver =
NULL
,
/* pwglCreateContext */
NULL
,
/* pwglCreateContextAttribsARB */
NULL
,
/* pwglGetProcAddress */
NULL
,
/* pwglMakeContextCurrentARB */
NULL
,
/* pwglMakeCurrent */
NULL
,
/* pwglSetPixelFormatWINE */
NULL
,
/* wine_get_wgl_driver */
GDI_PRIORITY_PATH_DRV
/* priority */
};
dlls/opengl32/wgl.c
View file @
7a031d9b
...
...
@@ -39,6 +39,7 @@
#undef near
#include <GL/glu.h>
#endif
#include "wine/gdi_driver.h"
#include "wine/library.h"
#include "wine/debug.h"
...
...
@@ -52,17 +53,14 @@ static struct
INT
(
WINAPI
*
p_GetPixelFormat
)(
HDC
hdc
);
/* internal WGL functions */
BOOL
(
WINAPI
*
p_wglCopyContext
)(
HGLRC
hglrcSrc
,
HGLRC
hglrcDst
,
UINT
mask
);
BOOL
(
WINAPI
*
p_wglDeleteContext
)(
HGLRC
hglrc
);
void
(
WINAPI
*
p_wglFinish
)(
void
);
void
(
WINAPI
*
p_wglFlush
)(
void
);
HGLRC
(
WINAPI
*
p_wglGetCurrentContext
)(
void
);
HDC
(
WINAPI
*
p_wglGetCurrentDC
)(
void
);
void
(
WINAPI
*
p_wglGetIntegerv
)(
GLenum
pname
,
GLint
*
params
);
BOOL
(
WINAPI
*
p_wglMakeCurrent
)(
HDC
hdc
,
HGLRC
hglrc
);
BOOL
(
WINAPI
*
p_wglShareLists
)(
HGLRC
hglrc1
,
HGLRC
hglrc2
);
}
wine_wgl
;
static
const
struct
wgl_funcs
*
wgl_driver
;
#ifdef SONAME_LIBGLU
#define MAKE_FUNCPTR(f) static typeof(f) * p##f;
MAKE_FUNCPTR
(
gluNewTess
)
...
...
@@ -105,7 +103,7 @@ BOOL WINAPI wglCopyContext(HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask)
SetLastError
(
ERROR_INVALID_HANDLE
);
return
FALSE
;
}
return
w
ine_wgl
.
p_wglCopyContext
(
hglrcSrc
,
hglrcDst
,
mask
);
return
w
gl_driver
->
p_wglCopyContext
(
hglrcSrc
,
hglrcDst
,
mask
);
}
/***********************************************************************
...
...
@@ -118,7 +116,7 @@ BOOL WINAPI wglDeleteContext(HGLRC hglrc)
SetLastError
(
ERROR_INVALID_HANDLE
);
return
FALSE
;
}
return
w
ine_wgl
.
p_wglDeleteContext
(
hglrc
);
return
w
gl_driver
->
p_wglDeleteContext
(
hglrc
);
}
/***********************************************************************
...
...
@@ -131,7 +129,7 @@ BOOL WINAPI wglMakeCurrent(HDC hdc, HGLRC hglrc)
SetLastError
(
ERROR_INVALID_HANDLE
);
return
FALSE
;
}
return
w
ine_wgl
.
p_wglMakeCurrent
(
hdc
,
hglrc
);
return
w
gl_driver
->
p_wglMakeCurrent
(
hdc
,
hglrc
);
}
/***********************************************************************
...
...
@@ -144,7 +142,7 @@ BOOL WINAPI wglShareLists(HGLRC hglrc1, HGLRC hglrc2)
SetLastError
(
ERROR_INVALID_HANDLE
);
return
FALSE
;
}
return
w
ine_wgl
.
p_wglShareLists
(
hglrc1
,
hglrc2
);
return
w
gl_driver
->
p_wglShareLists
(
hglrc1
,
hglrc2
);
}
/***********************************************************************
...
...
@@ -152,7 +150,7 @@ BOOL WINAPI wglShareLists(HGLRC hglrc1, HGLRC hglrc2)
*/
HDC
WINAPI
wglGetCurrentDC
(
void
)
{
return
w
ine_wgl
.
p_wglGetCurrentDC
();
return
w
gl_driver
->
p_wglGetCurrentDC
();
}
/***********************************************************************
...
...
@@ -1084,8 +1082,11 @@ BOOL WINAPI DECLSPEC_HOTPATCH wglSwapBuffers( HDC hdc )
static
BOOL
process_attach
(
void
)
{
HMODULE
mod_gdi32
;
HDC
hdc
=
GetDC
(
0
);
wgl_driver
=
__wine_get_wgl_driver
(
hdc
,
WINE_GDI_DRIVER_VERSION
);
ReleaseDC
(
0
,
hdc
);
GetDesktopWindow
();
/* make sure winex11 is loaded (FIXME) */
mod_gdi32
=
GetModuleHandleA
(
"gdi32.dll"
);
if
(
!
mod_gdi32
)
...
...
@@ -1099,15 +1100,10 @@ static BOOL process_attach(void)
wine_wgl
.
p_GetPixelFormat
=
(
void
*
)
GetProcAddress
(
mod_gdi32
,
"GetPixelFormat"
);
/* internal WGL functions */
wine_wgl
.
p_wglCopyContext
=
(
void
*
)
wine_wgl
.
p_wglGetProcAddress
(
"wglCopyContext"
);
wine_wgl
.
p_wglDeleteContext
=
(
void
*
)
wine_wgl
.
p_wglGetProcAddress
(
"wglDeleteContext"
);
wine_wgl
.
p_wglFinish
=
(
void
*
)
wine_wgl
.
p_wglGetProcAddress
(
"wglFinish"
);
wine_wgl
.
p_wglFlush
=
(
void
*
)
wine_wgl
.
p_wglGetProcAddress
(
"wglFlush"
);
wine_wgl
.
p_wglGetCurrentContext
=
(
void
*
)
wine_wgl
.
p_wglGetProcAddress
(
"wglGetCurrentContext"
);
wine_wgl
.
p_wglGetCurrentDC
=
(
void
*
)
wine_wgl
.
p_wglGetProcAddress
(
"wglGetCurrentDC"
);
wine_wgl
.
p_wglGetIntegerv
=
(
void
*
)
wine_wgl
.
p_wglGetProcAddress
(
"wglGetIntegerv"
);
wine_wgl
.
p_wglMakeCurrent
=
(
void
*
)
wine_wgl
.
p_wglGetProcAddress
(
"wglMakeCurrent"
);
wine_wgl
.
p_wglShareLists
=
(
void
*
)
wine_wgl
.
p_wglGetProcAddress
(
"wglShareLists"
);
return
TRUE
;
}
...
...
dlls/wineps.drv/init.c
View file @
7a031d9b
...
...
@@ -844,9 +844,7 @@ static const struct gdi_dc_funcs psdrv_funcs =
NULL
,
/* pwglCreateContext */
NULL
,
/* pwglCreateContextAttribsARB */
NULL
,
/* pwglGetProcAddress */
NULL
,
/* pwglMakeContextCurrentARB */
NULL
,
/* pwglMakeCurrent */
NULL
,
/* pwglSetPixelFormatWINE */
NULL
,
/* wine_get_wgl_driver */
GDI_PRIORITY_GRAPHICS_DRV
/* priority */
};
...
...
dlls/winex11.drv/init.c
View file @
7a031d9b
...
...
@@ -500,15 +500,6 @@ static PROC X11DRV_wglGetProcAddress( LPCSTR proc )
return
NULL
;
}
/***********************************************************************
* X11DRV_wglSetPixelFormatWINE
*/
static
BOOL
X11DRV_wglSetPixelFormatWINE
(
PHYSDEV
dev
,
int
fmt
,
const
PIXELFORMATDESCRIPTOR
*
ppfd
)
{
opengl_error
();
return
FALSE
;
}
static
const
struct
gdi_dc_funcs
x11drv_funcs
=
{
...
...
@@ -646,9 +637,7 @@ static const struct gdi_dc_funcs x11drv_funcs =
X11DRV_wglCreateContext
,
/* pwglCreateContext */
X11DRV_wglCreateContextAttribsARB
,
/* pwglCreateContextAttribsARB */
X11DRV_wglGetProcAddress
,
/* pwglGetProcAddress */
NULL
,
/* pwglMakeContextCurrentARB */
NULL
,
/* pwglMakeCurrent */
X11DRV_wglSetPixelFormatWINE
,
/* pwglSetPixelFormatWINE */
NULL
,
/* wine_get_wgl_driver */
GDI_PRIORITY_GRAPHICS_DRV
/* priority */
};
...
...
dlls/winex11.drv/opengl.c
View file @
7a031d9b
...
...
@@ -6,6 +6,7 @@
* Copyright 2005 Raphael Junqueira
* Copyright 2006-2009 Roderick Colenbrander
* Copyright 2006 Tomas Carnecky
* Copyright 2012 Alexandre Julliard
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
...
...
@@ -158,6 +159,7 @@ struct glx_physdev
Pixmap
pixmap
;
/* pixmap for a DL_GL_PIXMAP_WIN drawable */
};
static
const
struct
wgl_funcs
glxdrv_wgl_funcs
;
static
const
struct
gdi_dc_funcs
glxdrv_funcs
;
static
inline
struct
glx_physdev
*
get_glxdrv_dev
(
PHYSDEV
dev
)
...
...
@@ -1393,12 +1395,10 @@ static BOOL glxdrv_SetPixelFormat(PHYSDEV dev, int iPixelFormat, const PIXELFORM
return
TRUE
;
}
/**
* X11DRV_wglCopyContext
*
* For OpenGL32 wglCopyContext.
/***********************************************************************
* glxdrv_wglCopyContext
*/
static
BOOL
WINAPI
X11DRV
_wglCopyContext
(
HGLRC
hglrcSrc
,
HGLRC
hglrcDst
,
UINT
mask
)
static
BOOL
glxdrv
_wglCopyContext
(
HGLRC
hglrcSrc
,
HGLRC
hglrcDst
,
UINT
mask
)
{
Wine_GLContext
*
src
=
(
Wine_GLContext
*
)
hglrcSrc
;
Wine_GLContext
*
dst
=
(
Wine_GLContext
*
)
hglrcDst
;
...
...
@@ -1457,14 +1457,10 @@ static HGLRC glxdrv_wglCreateContext(PHYSDEV dev)
return
(
HGLRC
)
ret
;
}
static
BOOL
WINAPI
X11DRV_wglMakeCurrent
(
HDC
hdc
,
HGLRC
hglrc
);
/**
* X11DRV_wglDeleteContext
*
* For OpenGL32 wglDeleteContext.
/***********************************************************************
* glxdrv_wglDeleteContext
*/
static
BOOL
WINAPI
X11DRV
_wglDeleteContext
(
HGLRC
hglrc
)
static
BOOL
glxdrv
_wglDeleteContext
(
HGLRC
hglrc
)
{
Wine_GLContext
*
ctx
=
(
Wine_GLContext
*
)
hglrc
;
...
...
@@ -1487,7 +1483,12 @@ static BOOL WINAPI X11DRV_wglDeleteContext(HGLRC hglrc)
/* WGL makes a context not current if it is active before deletion. GLX waits until the context is not current. */
if
(
ctx
==
NtCurrentTeb
()
->
glContext
)
X11DRV_wglMakeCurrent
(
ctx
->
hdc
,
NULL
);
{
wine_tsx11_lock
();
pglXMakeCurrent
(
gdi_display
,
None
,
NULL
);
wine_tsx11_unlock
();
NtCurrentTeb
()
->
glContext
=
NULL
;
}
wine_tsx11_lock
();
list_remove
(
&
ctx
->
entry
);
...
...
@@ -1573,12 +1574,10 @@ static GLXPixmap get_context_pixmap( HDC hdc, struct wine_glcontext *ctx )
return
ctx
->
glxpixmap
;
}
/**
* X11DRV_wglMakeCurrent
*
* For OpenGL32 wglMakeCurrent.
/***********************************************************************
* glxdrv_wglMakeCurrent
*/
static
BOOL
WINAPI
X11DRV
_wglMakeCurrent
(
HDC
hdc
,
HGLRC
hglrc
)
static
BOOL
glxdrv
_wglMakeCurrent
(
HDC
hdc
,
HGLRC
hglrc
)
{
BOOL
ret
;
Wine_GLContext
*
prev_ctx
=
NtCurrentTeb
()
->
glContext
;
...
...
@@ -1726,20 +1725,16 @@ static BOOL WINAPI X11DRV_wglMakeContextCurrentARB( HDC draw_hdc, HDC read_hdc,
return
ret
;
}
/**
* X11DRV_wglShareLists
*
* For OpenGL32 wglShareLists.
/***********************************************************************
* glxdrv_wglShareLists
*/
static
BOOL
WINAPI
X11DRV
_wglShareLists
(
HGLRC
hglrc1
,
HGLRC
hglrc2
)
static
BOOL
glxdrv
_wglShareLists
(
HGLRC
hglrc1
,
HGLRC
hglrc2
)
{
Wine_GLContext
*
org
=
(
Wine_GLContext
*
)
hglrc1
;
Wine_GLContext
*
dest
=
(
Wine_GLContext
*
)
hglrc2
;
TRACE
(
"(%p, %p)
\n
"
,
org
,
dest
);
if
(
!
has_opengl
())
return
FALSE
;
/* Sharing of display lists works differently in GLX and WGL. In case of GLX it is done
* at context creation time but in case of WGL it is done using wglShareLists.
* In the past we tried to emulate wglShareLists by delaying GLX context creation until
...
...
@@ -1795,9 +1790,9 @@ static HGLRC WINAPI X11DRV_wglGetCurrentContext(void)
}
/***********************************************************************
*
X11DRV
_wglGetCurrentDC
*
glxdrv
_wglGetCurrentDC
*/
static
HDC
WINAPI
X11DRV
_wglGetCurrentDC
(
void
)
static
HDC
glxdrv
_wglGetCurrentDC
(
void
)
{
Wine_GLContext
*
ctx
=
NtCurrentTeb
()
->
glContext
;
...
...
@@ -3071,15 +3066,10 @@ static const WineGLExtension WGL_internal_functions =
{
""
,
{
{
"wglCopyContext"
,
X11DRV_wglCopyContext
},
{
"wglDeleteContext"
,
X11DRV_wglDeleteContext
},
{
"wglFinish"
,
X11DRV_wglFinish
},
{
"wglFlush"
,
X11DRV_wglFlush
},
{
"wglGetCurrentContext"
,
X11DRV_wglGetCurrentContext
},
{
"wglGetCurrentDC"
,
X11DRV_wglGetCurrentDC
},
{
"wglGetIntegerv"
,
X11DRV_wglGetIntegerv
},
{
"wglMakeCurrent"
,
X11DRV_wglMakeCurrent
},
{
"wglShareLists"
,
X11DRV_wglShareLists
},
}
};
...
...
@@ -3285,8 +3275,6 @@ static BOOL glxdrv_SwapBuffers(PHYSDEV dev)
struct
glx_physdev
*
physdev
=
get_glxdrv_dev
(
dev
);
Wine_GLContext
*
ctx
=
NtCurrentTeb
()
->
glContext
;
if
(
!
has_opengl
())
return
FALSE
;
TRACE
(
"(%p)
\n
"
,
dev
->
hdc
);
if
(
!
ctx
)
...
...
@@ -3457,6 +3445,20 @@ static INT glxdrv_ExtEscape( PHYSDEV dev, INT escape, INT in_count, LPCVOID in_d
return
dev
->
funcs
->
pExtEscape
(
dev
,
escape
,
in_count
,
in_data
,
out_count
,
out_data
);
}
/**********************************************************************
* glxdrv_wine_get_wgl_driver
*/
static
const
struct
wgl_funcs
*
glxdrv_wine_get_wgl_driver
(
PHYSDEV
dev
,
UINT
version
)
{
if
(
version
!=
WINE_GDI_DRIVER_VERSION
)
{
ERR
(
"version mismatch, opengl32 wants %u but driver has %u
\n
"
,
version
,
WINE_GDI_DRIVER_VERSION
);
return
NULL
;
}
if
(
!
has_opengl
())
return
NULL
;
return
&
glxdrv_wgl_funcs
;
}
static
const
struct
gdi_dc_funcs
glxdrv_funcs
=
{
NULL
,
/* pAbortDoc */
...
...
@@ -3593,12 +3595,19 @@ static const struct gdi_dc_funcs glxdrv_funcs =
glxdrv_wglCreateContext
,
/* pwglCreateContext */
glxdrv_wglCreateContextAttribsARB
,
/* pwglCreateContextAttribsARB */
glxdrv_wglGetProcAddress
,
/* pwglGetProcAddress */
NULL
,
/* pwglMakeContextCurrentARB */
NULL
,
/* pwglMakeCurrent */
NULL
,
/* pwglSetPixelFormatWINE */
glxdrv_wine_get_wgl_driver
,
/* wine_get_wgl_driver */
GDI_PRIORITY_GRAPHICS_DRV
+
20
/* priority */
};
static
const
struct
wgl_funcs
glxdrv_wgl_funcs
=
{
glxdrv_wglCopyContext
,
/* p_wglCopyContext */
glxdrv_wglDeleteContext
,
/* p_wglDeleteContext */
glxdrv_wglGetCurrentDC
,
/* p_wglGetCurrentDC */
glxdrv_wglMakeCurrent
,
/* p_wglMakeCurrent */
glxdrv_wglShareLists
,
/* p_wglShareLists */
};
const
struct
gdi_dc_funcs
*
get_glx_driver
(
void
)
{
return
&
glxdrv_funcs
;
...
...
dlls/winex11.drv/xrender.c
View file @
7a031d9b
...
...
@@ -2600,9 +2600,7 @@ static const struct gdi_dc_funcs xrender_funcs =
NULL
,
/* pwglCreateContext */
NULL
,
/* pwglCreateContextAttribsARB */
NULL
,
/* pwglGetProcAddress */
NULL
,
/* pwglMakeContextCurrentARB */
NULL
,
/* pwglMakeCurrent */
NULL
,
/* pwglSetPixelFormatWINE */
NULL
,
/* wine_get_wgl_driver */
GDI_PRIORITY_GRAPHICS_DRV
+
10
/* priority */
};
...
...
include/wine/gdi_driver.h
View file @
7a031d9b
...
...
@@ -22,6 +22,7 @@
#define __WINE_WINE_GDI_DRIVER_H
struct
gdi_dc_funcs
;
struct
wgl_funcs
;
typedef
struct
gdi_physdev
{
...
...
@@ -195,16 +196,14 @@ struct gdi_dc_funcs
HGLRC
(
*
pwglCreateContext
)(
PHYSDEV
);
HGLRC
(
*
pwglCreateContextAttribsARB
)(
PHYSDEV
,
HGLRC
,
const
int
*
);
PROC
(
*
pwglGetProcAddress
)(
LPCSTR
);
BOOL
(
*
pwglMakeContextCurrentARB
)(
PHYSDEV
,
PHYSDEV
,
HGLRC
);
BOOL
(
*
pwglMakeCurrent
)(
PHYSDEV
,
HGLRC
);
BOOL
(
*
pwglSetPixelFormatWINE
)(
PHYSDEV
,
INT
,
const
PIXELFORMATDESCRIPTOR
*
);
const
struct
wgl_funcs
*
(
*
wine_get_wgl_driver
)(
PHYSDEV
,
UINT
);
/* priority order for the driver on the stack */
UINT
priority
;
};
/* increment this when you change the DC function table */
#define WINE_GDI_DRIVER_VERSION 3
2
#define WINE_GDI_DRIVER_VERSION 3
3
#define GDI_PRIORITY_NULL_DRV 0
/* null driver */
#define GDI_PRIORITY_FONT_DRV 100
/* any font driver */
...
...
@@ -230,6 +229,17 @@ static inline void push_dc_driver( PHYSDEV *dev, PHYSDEV physdev, const struct g
*
dev
=
physdev
;
}
/* OpenGL support */
struct
wgl_funcs
{
BOOL
(
*
p_wglCopyContext
)(
HGLRC
,
HGLRC
,
UINT
);
BOOL
(
*
p_wglDeleteContext
)(
HGLRC
);
HDC
(
*
p_wglGetCurrentDC
)(
void
);
BOOL
(
*
p_wglMakeCurrent
)(
HDC
,
HGLRC
);
BOOL
(
*
p_wglShareLists
)(
HGLRC
,
HGLRC
);
};
/* the DC hook support is only exported on Win16, the 32-bit version is a Wine extension */
#define DCHC_INVALIDVISRGN 0x0001
...
...
@@ -245,5 +255,6 @@ WINGDIAPI WORD WINAPI SetHookFlags(HDC,WORD);
extern
void
CDECL
__wine_make_gdi_object_system
(
HGDIOBJ
handle
,
BOOL
set
);
extern
void
CDECL
__wine_set_visible_region
(
HDC
hdc
,
HRGN
hrgn
,
const
RECT
*
vis_rect
);
extern
const
struct
wgl_funcs
*
CDECL
__wine_get_wgl_driver
(
HDC
hdc
,
UINT
version
);
#endif
/* __WINE_WINE_GDI_DRIVER_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