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
ac3927a7
Commit
ac3927a7
authored
Aug 08, 2007
by
Roderick Colenbrander
Committed by
Alexandre Julliard
Aug 08, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Move over to WGL.
parent
58275065
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
124 additions
and
122 deletions
+124
-122
context.c
dlls/wined3d/context.c
+0
-0
device.c
dlls/wined3d/device.c
+7
-38
directx.c
dlls/wined3d/directx.c
+0
-0
swapchain.c
dlls/wined3d/swapchain.c
+5
-32
wined3d_private.h
dlls/wined3d/wined3d_private.h
+5
-7
wined3d_gl.h
include/wine/wined3d_gl.h
+107
-45
No files found.
dlls/wined3d/context.c
View file @
ac3927a7
This diff is collapsed.
Click to expand it.
dlls/wined3d/device.c
View file @
ac3927a7
...
...
@@ -51,26 +51,6 @@ const WINED3DLIGHT WINED3D_default_light = {
0
.
0
/* Phi */
};
/* x11drv GDI escapes */
#define X11DRV_ESCAPE 6789
enum
x11drv_escape_codes
{
X11DRV_GET_DISPLAY
,
/* get X11 display for a DC */
X11DRV_GET_DRAWABLE
,
/* get current drawable for a DC */
X11DRV_GET_FONT
,
/* get current X font for a DC */
};
/* retrieve the X display to use on a given DC */
static
inline
Display
*
get_display
(
HDC
hdc
)
{
Display
*
display
;
enum
x11drv_escape_codes
escape
=
X11DRV_GET_DISPLAY
;
if
(
!
ExtEscape
(
hdc
,
X11DRV_ESCAPE
,
sizeof
(
escape
),
(
LPCSTR
)
&
escape
,
sizeof
(
display
),
(
LPSTR
)
&
display
))
display
=
NULL
;
return
display
;
}
/* static function declarations */
static
void
WINAPI
IWineD3DDeviceImpl_AddResource
(
IWineD3DDevice
*
iface
,
IWineD3DResource
*
resource
);
...
...
@@ -1212,7 +1192,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateAdditionalSwapChain(IWineD3DDevic
IWineD3DSwapChainImpl
*
object
;
/** NOTE: impl ref allowed since this is a create function **/
HRESULT
hr
=
WINED3D_OK
;
IUnknown
*
bufferParent
;
Display
*
display
;
TRACE
(
"(%p) : Created Aditional Swap Chain
\n
"
,
This
);
...
...
@@ -1242,28 +1221,18 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateAdditionalSwapChain(IWineD3DDevic
}
object
->
win_handle
=
GetAncestor
(
object
->
win_handle
,
GA_ROOT
);
if
(
!
(
object
->
win
=
(
Window
)
GetPropA
(
object
->
win_handle
,
"__wine_x11_whole_window"
)
)
)
{
ERR
(
"Can't get drawable (window), HWND:%p doesn't have the property __wine_x11_whole_window
\n
"
,
object
->
win_handle
);
return
WINED3DERR_NOTAVAILABLE
;
}
hDc
=
GetDC
(
object
->
win_handle
);
display
=
get_display
(
hDc
);
ReleaseDC
(
object
->
win_handle
,
hDc
);
TRACE
(
"Using a display of %p %p
\n
"
,
display
,
hDc
);
TRACE
(
"Using hDc %p
\n
"
,
hDc
);
if
(
NULL
==
display
||
NULL
==
hDc
)
{
WARN
(
"Failed to get a display and HDc for Window %p
\n
"
,
object
->
win_handle
);
return
WINED3DERR_NOTAVAILABLE
;
}
if
(
object
->
win
==
0
)
{
WARN
(
"Failed to get a valid XVisuial ID for the window %p
\n
"
,
object
->
win_handle
);
if
(
NULL
==
hDc
)
{
WARN
(
"Failed to get a HDc for Window %p
\n
"
,
object
->
win_handle
);
return
WINED3DERR_NOTAVAILABLE
;
}
object
->
orig_width
=
GetSystemMetrics
(
SM_CXSCREEN
);
object
->
orig_height
=
GetSystemMetrics
(
SM_CYSCREEN
);
object
->
orig_fmt
=
pixelformat_for_depth
(
GetDeviceCaps
(
hDc
,
BITSPIXEL
)
*
GetDeviceCaps
(
hDc
,
PLANES
));
ReleaseDC
(
object
->
win_handle
,
hDc
);
/** MSDN: If Windowed is TRUE and either of the BackBufferWidth/Height values is zero,
* then the corresponding dimension of the client area of the hDeviceWindow
...
...
@@ -1324,7 +1293,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateAdditionalSwapChain(IWineD3DDevic
object
->
num_contexts
=
1
;
ENTER_GL
();
object
->
context
[
0
]
=
CreateContext
(
This
,
(
IWineD3DSurfaceImpl
*
)
object
->
frontBuffer
,
display
,
object
->
win
);
object
->
context
[
0
]
=
CreateContext
(
This
,
(
IWineD3DSurfaceImpl
*
)
object
->
frontBuffer
,
object
->
win_handle
,
FALSE
/* pbuffer */
);
LEAVE_GL
();
if
(
!
object
->
context
[
0
])
{
...
...
@@ -1332,8 +1301,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateAdditionalSwapChain(IWineD3DDevic
hr
=
WINED3DERR_NOTAVAILABLE
;
goto
error
;
}
else
{
TRACE
(
"Context created (HWND=%p, glContext=%p
, Window=%ld
)
\n
"
,
object
->
win_handle
,
object
->
context
[
0
]
->
glCtx
,
object
->
win
);
TRACE
(
"Context created (HWND=%p, glContext=%p)
\n
"
,
object
->
win_handle
,
object
->
context
[
0
]
->
glCtx
);
}
/*********************
...
...
dlls/wined3d/directx.c
View file @
ac3927a7
This diff is collapsed.
Click to expand it.
dlls/wined3d/swapchain.c
View file @
ac3927a7
...
...
@@ -24,27 +24,6 @@
#include "wined3d_private.h"
/* TODO: move to shared header (or context manager )*/
/* x11drv GDI escapes */
#define X11DRV_ESCAPE 6789
enum
x11drv_escape_codes
{
X11DRV_GET_DISPLAY
,
/* get X11 display for a DC */
X11DRV_GET_DRAWABLE
,
/* get current drawable for a DC */
X11DRV_GET_FONT
,
/* get current X font for a DC */
};
/* retrieve the X display to use on a given DC */
static
inline
Display
*
get_display
(
HDC
hdc
)
{
Display
*
display
;
enum
x11drv_escape_codes
escape
=
X11DRV_GET_DISPLAY
;
if
(
!
ExtEscape
(
hdc
,
X11DRV_ESCAPE
,
sizeof
(
escape
),
(
LPCSTR
)
&
escape
,
sizeof
(
display
),
(
LPSTR
)
&
display
))
display
=
NULL
;
return
display
;
}
/*TODO: some of the additional parameters may be required to
set the gamma ramp (for some weird reason microsoft have left swap gammaramp in device
but it operates on a swapchain, it may be a good idea to move it to IWineD3DSwapChain for IWineD3D)*/
...
...
@@ -199,13 +178,11 @@ static HRESULT WINAPI IWineD3DSwapChainImpl_Present(IWineD3DSwapChain *iface, CO
if
(
pSourceRect
||
pDestRect
)
FIXME
(
"Unhandled present options %p/%p
\n
"
,
pSourceRect
,
pDestRect
);
/* TODO: If only source rect or dest rect are supplied then clip the window to match */
TRACE
(
"preseting
display %p, drawable %ld
\n
"
,
This
->
context
[
0
]
->
display
,
This
->
context
[
0
]
->
drawable
);
TRACE
(
"preseting
HDC %p
\n
"
,
This
->
context
[
0
]
->
hdc
);
/* Don't call checkGLcall, as glGetError is not applicable here */
if
(
hDestWindowOverride
&&
This
->
win_handle
!=
hDestWindowOverride
)
{
HDC
hDc
;
WINED3DLOCKED_RECT
r
;
Display
*
display
;
BYTE
*
mem
;
TRACE
(
"Performing dest override of swapchain %p from window %p to %p
\n
"
,
This
,
This
->
win_handle
,
hDestWindowOverride
);
...
...
@@ -216,11 +193,7 @@ static HRESULT WINAPI IWineD3DSwapChainImpl_Present(IWineD3DSwapChain *iface, CO
*/
ERR
(
"Cannot change the destination window of the owner of the primary context
\n
"
);
}
else
{
hDc
=
GetDC
(
hDestWindowOverride
);
This
->
win_handle
=
hDestWindowOverride
;
This
->
win
=
(
Window
)
GetPropA
(
hDestWindowOverride
,
"__wine_x11_whole_window"
);
display
=
get_display
(
hDc
);
ReleaseDC
(
hDestWindowOverride
,
hDc
);
/* The old back buffer has to be copied over to the new back buffer. A lockrect - switchcontext - unlockrect
* would suffice in theory, but it is rather nasty and may cause troubles with future changes of the locking code
...
...
@@ -232,7 +205,7 @@ static HRESULT WINAPI IWineD3DSwapChainImpl_Present(IWineD3DSwapChain *iface, CO
IWineD3DSurface_UnlockRect
(
This
->
backBuffer
[
0
]);
DestroyContext
(
This
->
wineD3DDevice
,
This
->
context
[
0
]);
This
->
context
[
0
]
=
CreateContext
(
This
->
wineD3DDevice
,
(
IWineD3DSurfaceImpl
*
)
This
->
frontBuffer
,
display
,
This
->
win
);
This
->
context
[
0
]
=
CreateContext
(
This
->
wineD3DDevice
,
(
IWineD3DSurfaceImpl
*
)
This
->
frontBuffer
,
This
->
win_handle
,
FALSE
/* pbuffer */
);
IWineD3DSurface_LockRect
(
This
->
backBuffer
[
0
],
&
r
,
NULL
,
WINED3DLOCK_DISCARD
);
memcpy
(
r
.
pBits
,
mem
,
r
.
Pitch
*
((
IWineD3DSurfaceImpl
*
)
This
->
backBuffer
[
0
])
->
currentDesc
.
Height
);
...
...
@@ -241,9 +214,9 @@ static HRESULT WINAPI IWineD3DSwapChainImpl_Present(IWineD3DSwapChain *iface, CO
}
}
glXSwapBuffers
(
This
->
context
[
0
]
->
display
,
This
->
context
[
0
]
->
drawable
);
/* TODO: cycle through the swapchain buffers */
SwapBuffers
(
This
->
context
[
0
]
->
hdc
);
/* TODO: cycle through the swapchain buffers */
TRACE
(
"
glX
SwapBuffers called, Starting new frame
\n
"
);
TRACE
(
"SwapBuffers called, Starting new frame
\n
"
);
/* FPS support */
if
(
TRACE_ON
(
fps
))
{
...
...
@@ -564,7 +537,7 @@ WineD3DContext *IWineD3DSwapChainImpl_CreateContextForThread(IWineD3DSwapChain *
TRACE
(
"Creating a new context for swapchain %p, thread %d
\n
"
,
This
,
GetCurrentThreadId
());
ctx
=
CreateContext
(
This
->
wineD3DDevice
,
(
IWineD3DSurfaceImpl
*
)
This
->
frontBuffer
,
This
->
context
[
0
]
->
display
,
This
->
win
);
This
->
context
[
0
]
->
win_handle
,
FALSE
/* pbuffer */
);
if
(
!
ctx
)
{
ERR
(
"Failed to create a new context for the swapchain
\n
"
);
return
NULL
;
...
...
dlls/wined3d/wined3d_private.h
View file @
ac3927a7
...
...
@@ -520,9 +520,10 @@ struct WineD3DContext {
char
texShaderBumpMap
;
/* The actual opengl context */
GLXContext
glCtx
;
Drawable
drawable
;
Display
*
display
;
HGLRC
glCtx
;
HWND
win_handle
;
HDC
hdc
;
HPBUFFERARB
pbuffer
;
BOOL
isPBuffer
;
};
...
...
@@ -534,7 +535,7 @@ typedef enum ContextUsage {
}
ContextUsage
;
void
ActivateContext
(
IWineD3DDeviceImpl
*
device
,
IWineD3DSurface
*
target
,
ContextUsage
usage
);
WineD3DContext
*
CreateContext
(
IWineD3DDeviceImpl
*
This
,
IWineD3DSurfaceImpl
*
target
,
Display
*
display
,
Window
win
);
WineD3DContext
*
CreateContext
(
IWineD3DDeviceImpl
*
This
,
IWineD3DSurfaceImpl
*
target
,
HWND
win
,
BOOL
create_pbuffer
);
void
DestroyContext
(
IWineD3DDeviceImpl
*
This
,
WineD3DContext
*
context
);
void
apply_fbo_state
(
IWineD3DDevice
*
iface
);
...
...
@@ -577,11 +578,9 @@ typedef struct GLPixelFormatDesc GLPixelFormatDesc;
struct
WineD3DAdapter
{
POINT
monitorPoint
;
Display
*
display
;
WineD3D_GL_Info
gl_info
;
const
char
*
driver
;
const
char
*
description
;
GLXFBConfig
*
cfgs
;
int
nCfgs
;
};
...
...
@@ -1439,7 +1438,6 @@ typedef struct IWineD3DSwapChainImpl
unsigned
int
num_contexts
;
HWND
win_handle
;
Window
win
;
}
IWineD3DSwapChainImpl
;
extern
const
IWineD3DSwapChainVtbl
IWineD3DSwapChain_Vtbl
;
...
...
include/wine/wined3d_gl.h
View file @
ac3927a7
...
...
@@ -36,8 +36,6 @@
#define XMD_H
/* This is to prevent the Xmd.h inclusion bug :-/ */
#define GL_GLEXT_LEGACY
#include <GL/gl.h>
#define GLX_GLXEXT_PROTOTYPES
#include <GL/glx.h>
#undef XMD_H
#undef APIENTRY
...
...
@@ -1579,37 +1577,6 @@ typedef void (APIENTRY * PGLFNVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size
/****************************************************
* OpenGL GLX Extensions
* defines and functions pointer
****************************************************/
/****************************************************
* OpenGL GLX Official Version
* defines and functions pointer
****************************************************/
/* GLX_VERSION_1_3 */
typedef
GLXFBConfig
*
(
APIENTRY
*
PGLXFNGLXGETFBCONFIGSPROC
)
(
Display
*
dpy
,
int
screen
,
int
*
nelements
);
typedef
GLXFBConfig
*
(
APIENTRY
*
PGLXFNGLXCHOOSEFBCONFIGPROC
)
(
Display
*
dpy
,
int
screen
,
const
int
*
attrib_list
,
int
*
nelements
);
typedef
int
(
APIENTRY
*
PGLXFNGLXGETFBCONFIGATTRIBPROC
)
(
Display
*
dpy
,
GLXFBConfig
config
,
int
attribute
,
int
*
value
);
typedef
XVisualInfo
*
(
APIENTRY
*
PGLXFNGLXGETVISUALFROMFBCONFIGPROC
)
(
Display
*
dpy
,
GLXFBConfig
config
);
typedef
GLXWindow
(
APIENTRY
*
PGLXFNGLXCREATEWINDOWPROC
)
(
Display
*
dpy
,
GLXFBConfig
config
,
Window
win
,
const
int
*
attrib_list
);
typedef
void
(
APIENTRY
*
PGLXFNGLXDESTROYWINDOWPROC
)
(
Display
*
dpy
,
GLXWindow
win
);
typedef
GLXPixmap
(
APIENTRY
*
PGLXFNGLXCREATEPIXMAPPROC
)
(
Display
*
dpy
,
GLXFBConfig
config
,
Pixmap
pixmap
,
const
int
*
attrib_list
);
typedef
void
(
APIENTRY
*
PGLXFNGLXDESTROYPIXMAPPROC
)
(
Display
*
dpy
,
GLXPixmap
pixmap
);
typedef
GLXPbuffer
(
APIENTRY
*
PGLXFNGLXCREATEPBUFFERPROC
)
(
Display
*
dpy
,
GLXFBConfig
config
,
const
int
*
attrib_list
);
typedef
void
(
APIENTRY
*
PGLXFNGLXDESTROYPBUFFERPROC
)
(
Display
*
dpy
,
GLXPbuffer
pbuf
);
typedef
void
(
APIENTRY
*
PGLXFNGLXQUERYDRAWABLEPROC
)
(
Display
*
dpy
,
GLXDrawable
draw
,
int
attribute
,
unsigned
int
*
value
);
typedef
GLXContext
(
APIENTRY
*
PGLXFNGLXCREATENEWCONTEXTPROC
)
(
Display
*
dpy
,
GLXFBConfig
config
,
int
render_type
,
GLXContext
share_list
,
Bool
direct
);
typedef
Bool
(
APIENTRY
*
PGLXFNGLXMAKECONTEXTCURRENTPROC
)
(
Display
*
dpy
,
GLXDrawable
draw
,
GLXDrawable
read
,
GLXContext
ctx
);
typedef
GLXDrawable
(
APIENTRY
*
PGLXFNGLXGETCURRENTREADDRAWABLEPROC
)
(
void
);
typedef
Display
*
(
APIENTRY
*
PGLXFNGLXGETCURRENTDISPLAYPROC
)
(
void
);
typedef
int
(
APIENTRY
*
PGLXFNGLXQUERYCONTEXTPROC
)
(
Display
*
dpy
,
GLXContext
ctx
,
int
attribute
,
int
*
value
);
typedef
void
(
APIENTRY
*
PGLXFNGLXSELECTEVENTPROC
)
(
Display
*
dpy
,
GLXDrawable
draw
,
unsigned
long
event_mask
);
typedef
void
(
APIENTRY
*
PGLXFNGLXGETSELECTEDEVENTPROC
)
(
Display
*
dpy
,
GLXDrawable
draw
,
unsigned
long
*
event_mask
);
/****************************************************
* Enumerated types
****************************************************/
typedef
enum
_GL_Vendors
{
...
...
@@ -1758,6 +1725,9 @@ typedef enum _GL_SupportedExt {
/* SGI */
SGI_VIDEO_SYNC
,
/* WGL extensions */
WGL_ARB_PBUFFER
,
OPENGL_SUPPORTED_EXT_END
}
GL_SupportedExt
;
...
...
@@ -2129,16 +2099,6 @@ typedef enum _GL_SupportedExt {
USE_GL_FUNC(PGLFNVERTEXATTRIB4USVPROC, glVertexAttrib4usv); \
USE_GL_FUNC(PGLFNVERTEXATTRIBPOINTERPROC, glVertexAttribPointer); \
#define GLX_EXT_FUNCS_GEN \
/** GLX_VERSION_1_3 **/
\
USE_GL_FUNC(PGLXFNGLXCREATEPBUFFERPROC, glXCreatePbuffer); \
USE_GL_FUNC(PGLXFNGLXDESTROYPBUFFERPROC, glXDestroyPbuffer); \
USE_GL_FUNC(PGLXFNGLXCREATEPIXMAPPROC, glXCreatePixmap); \
USE_GL_FUNC(PGLXFNGLXDESTROYPIXMAPPROC, glXDestroyPixmap); \
USE_GL_FUNC(PGLXFNGLXCREATENEWCONTEXTPROC, glXCreateNewContext); \
USE_GL_FUNC(PGLXFNGLXMAKECONTEXTCURRENTPROC, glXMakeContextCurrent); \
USE_GL_FUNC(PGLXFNGLXCHOOSEFBCONFIGPROC, glXChooseFBConfig); \
#undef APIENTRY
#undef CALLBACK
#undef WINAPI
...
...
@@ -2149,6 +2109,108 @@ typedef enum _GL_SupportedExt {
#define APIENTRY WINAPI
/****************************************************
* OpenGL WGL defines and functions pointer
****************************************************/
/* WGL_ARB_extensions_string */
typedef
const
char
*
(
WINAPI
*
WINED3D_PFNWGLGETEXTENSIONSSTRINGARBPROC
)
(
HDC
hdc
);
/* WGL_ARB_pixel_format */
#ifndef WGL_ARB_pixel_format
#define WGL_ARB_pixel_format 1
#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
#define WGL_DRAW_TO_WINDOW_ARB 0x2001
#define WGL_DRAW_TO_BITMAP_ARB 0x2002
#define WGL_ACCELERATION_ARB 0x2003
#define WGL_NEED_PALETTE_ARB 0x2004
#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
#define WGL_SWAP_METHOD_ARB 0x2007
#define WGL_NUMBER_OVERLAYS_ARB 0x2008
#define WGL_NUMBER_UNDERLAYS_ARB 0x2009
#define WGL_TRANSPARENT_ARB 0x200A
#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
#define WGL_SHARE_DEPTH_ARB 0x200C
#define WGL_SHARE_STENCIL_ARB 0x200D
#define WGL_SHARE_ACCUM_ARB 0x200E
#define WGL_SUPPORT_GDI_ARB 0x200F
#define WGL_SUPPORT_OPENGL_ARB 0x2010
#define WGL_DOUBLE_BUFFER_ARB 0x2011
#define WGL_STEREO_ARB 0x2012
#define WGL_PIXEL_TYPE_ARB 0x2013
#define WGL_COLOR_BITS_ARB 0x2014
#define WGL_RED_BITS_ARB 0x2015
#define WGL_RED_SHIFT_ARB 0x2016
#define WGL_GREEN_BITS_ARB 0x2017
#define WGL_GREEN_SHIFT_ARB 0x2018
#define WGL_BLUE_BITS_ARB 0x2019
#define WGL_BLUE_SHIFT_ARB 0x201A
#define WGL_ALPHA_BITS_ARB 0x201B
#define WGL_ALPHA_SHIFT_ARB 0x201C
#define WGL_ACCUM_BITS_ARB 0x201D
#define WGL_ACCUM_RED_BITS_ARB 0x201E
#define WGL_ACCUM_GREEN_BITS_ARB 0x201F
#define WGL_ACCUM_BLUE_BITS_ARB 0x2020
#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
#define WGL_DEPTH_BITS_ARB 0x2022
#define WGL_STENCIL_BITS_ARB 0x2023
#define WGL_AUX_BUFFERS_ARB 0x2024
#define WGL_NO_ACCELERATION_ARB 0x2025
#define WGL_GENERIC_ACCELERATION_ARB 0x2026
#define WGL_FULL_ACCELERATION_ARB 0x2027
#define WGL_SWAP_EXCHANGE_ARB 0x2028
#define WGL_SWAP_COPY_ARB 0x2029
#define WGL_SWAP_UNDEFINED_ARB 0x202A
#define WGL_TYPE_RGBA_ARB 0x202B
#define WGL_TYPE_COLORINDEX_ARB 0x202C
#endif
typedef
BOOL
(
WINAPI
*
WINED3D_PFNWGLGETPIXELFORMATATTRIBIVARBPROC
)
(
HDC
hdc
,
int
iPixelFormat
,
int
iLayerPlane
,
UINT
nAttributes
,
const
int
*
piAttributes
,
int
*
piValues
);
typedef
BOOL
(
WINAPI
*
WINED3D_PFNWGLGETPIXELFORMATATTRIBFVARBPROC
)
(
HDC
hdc
,
int
iPixelFormat
,
int
iLayerPlane
,
UINT
nAttributes
,
const
int
*
piAttributes
,
FLOAT
*
pfValues
);
typedef
BOOL
(
WINAPI
*
WINED3D_PFNWGLCHOOSEPIXELFORMATARBPROC
)
(
HDC
hdc
,
const
int
*
piAttribIList
,
const
FLOAT
*
pfAttribFList
,
UINT
nMaxFormats
,
int
*
piFormats
,
UINT
*
nNumFormats
);
/* WGL_ARB_make_current_read */
typedef
BOOL
(
WINAPI
*
WINED3D_PFNWGLMAKECONTEXTCURRENTARBPROC
)
(
HDC
hDrawDC
,
HDC
hReadDC
,
HGLRC
hglrc
);
typedef
HDC
(
WINAPI
*
WINED3D_PFNWGLGETCURRENTREADDCARBPROC
)
(
void
);
/* WGL_ARB_pbuffer */
#ifndef WGL_ARB_pbuffer
#define WGL_ARB_pbuffer 1
#define WGL_DRAW_TO_PBUFFER_ARB 0x202D
#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E
#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F
#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030
#define WGL_PBUFFER_LARGEST_ARB 0x2033
#define WGL_PBUFFER_WIDTH_ARB 0x2034
#define WGL_PBUFFER_HEIGHT_ARB 0x2035
#define WGL_PBUFFER_LOST_ARB 0x2036
#endif
DECLARE_HANDLE
(
HPBUFFERARB
);
typedef
HPBUFFERARB
(
WINAPI
*
WINED3D_PFNWGLCREATEPBUFFERARBPROC
)
(
HDC
hDC
,
int
iPixelFormat
,
int
iWidth
,
int
iHeight
,
const
int
*
piAttribList
);
typedef
HDC
(
WINAPI
*
WINED3D_PFNWGLGETPBUFFERDCARBPROC
)
(
HPBUFFERARB
hPbuffer
);
typedef
int
(
WINAPI
*
WINED3D_PFNWGLRELEASEPBUFFERDCARBPROC
)
(
HPBUFFERARB
hPbuffer
,
HDC
hDC
);
typedef
BOOL
(
WINAPI
*
WINED3D_PFNWGLDESTROYPBUFFERARBPROC
)
(
HPBUFFERARB
hPbuffer
);
typedef
BOOL
(
WINAPI
*
WINED3D_PFNWGLQUERYPBUFFERARBPROC
)
(
HPBUFFERARB
hPbuffer
,
int
iAttribute
,
int
*
piValue
);
#ifndef WGL_ARB_pixel_format_float
#define WGL_ARB_pixel_format_float 1
#define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0
#endif
#define WGL_EXT_FUNCS_GEN \
USE_GL_FUNC(WINED3D_PFNWGLGETEXTENSIONSSTRINGARBPROC, wglGetExtensionsStringARB); \
USE_GL_FUNC(WINED3D_PFNWGLGETPIXELFORMATATTRIBIVARBPROC, wglGetPixelFormatAttribivARB); \
USE_GL_FUNC(WINED3D_PFNWGLGETPIXELFORMATATTRIBFVARBPROC, wglGetPixelFormatAttribfvARB); \
USE_GL_FUNC(WINED3D_PFNWGLCHOOSEPIXELFORMATARBPROC, wglChoosePixelFormatARB); \
USE_GL_FUNC(WINED3D_PFNWGLMAKECONTEXTCURRENTARBPROC, wglMakeContextCurrentARB); \
USE_GL_FUNC(WINED3D_PFNWGLGETCURRENTREADDCARBPROC, wglGetCurrentReadDCARB); \
USE_GL_FUNC(WINED3D_PFNWGLCREATEPBUFFERARBPROC, wglCreatePbufferARB); \
USE_GL_FUNC(WINED3D_PFNWGLGETPBUFFERDCARBPROC, wglGetPbufferDCARB); \
USE_GL_FUNC(WINED3D_PFNWGLRELEASEPBUFFERDCARBPROC, wglReleasePbufferDCARB); \
USE_GL_FUNC(WINED3D_PFNWGLDESTROYPBUFFERARBPROC, wglDestroyPbufferARB); \
USE_GL_FUNC(WINED3D_PFNWGLQUERYPBUFFERARBPROC, wglQueryPbufferARB);
/****************************************************
* Structures
****************************************************/
...
...
@@ -2208,8 +2270,8 @@ typedef struct _WineD3D_GL_Info {
/** OpenGL EXT and ARB functions ptr */
GL_EXT_FUNCS_GEN
;
/** OpenGL
GLX
functions ptr */
GLX
_EXT_FUNCS_GEN
;
/** OpenGL
WGL
functions ptr */
WGL
_EXT_FUNCS_GEN
;
/** OpenGL 2.0 functions ptr */
/* GL2_FUNCS_GEN; */
/**/
...
...
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