opengl32: Use the unixlib interface for more WGL functions.

This commit is contained in:
Rémi Bernon 2022-10-07 18:34:09 +02:00 committed by Alexandre Julliard
parent 494251add7
commit 077c46261a
4 changed files with 374 additions and 222 deletions

View file

@ -140,6 +140,36 @@ my %khronos_types =
"khronos_uint32_t" => "unsigned int",
"khronos_float_t" => "float",
);
my %manual_win_functions =
(
"glDebugEntry" => 1,
"wglChoosePixelFormat" => 1,
"wglCreateLayerContext" => 1,
"wglDescribeLayerPlane" => 1,
"wglGetCurrentContext" => 1,
"wglGetCurrentDC" => 1,
"wglGetDefaultProcAddress" => 1,
"wglGetLayerPaletteEntries" => 1,
"wglRealizeLayerPalette" => 1,
"wglSetLayerPaletteEntries" => 1,
"wglSwapLayerBuffers" => 1,
"wglUseFontBitmapsA" => 1,
"wglUseFontBitmapsW" => 1,
"wglUseFontOutlinesA" => 1,
"wglUseFontOutlinesW" => 1,
);
my %manual_win_thunks =
(
"glGetIntegerv" => 1,
"glGetString" => 1,
"glGetStringi" => 1,
"wglGetCurrentReadDCARB" => 1,
"wglGetPixelFormat" => 1,
"wglGetProcAddress" => 1,
"wglSwapBuffers" => 1,
);
#
# Used to convert some types
#
@ -419,25 +449,6 @@ my %wgl_functions;
my %gl_enums;
my (%gl_types, @gl_types); # also use an array to preserve declaration order
my %manual_win_functions =
(
"glDebugEntry" => 1,
"wglChoosePixelFormat" => 1,
"wglCreateLayerContext" => 1,
"wglDescribeLayerPlane" => 1,
"wglGetCurrentContext" => 1,
"wglGetCurrentDC" => 1,
"wglGetDefaultProcAddress" => 1,
"wglGetLayerPaletteEntries" => 1,
"wglRealizeLayerPalette" => 1,
"wglSetLayerPaletteEntries" => 1,
"wglSwapLayerBuffers" => 1,
"wglUseFontBitmapsA" => 1,
"wglUseFontBitmapsW" => 1,
"wglUseFontOutlinesA" => 1,
"wglUseFontOutlinesW" => 1,
);
my %remapped_wgl_functions =
(
"ChoosePixelFormat" => "wglChoosePixelFormat",
@ -498,23 +509,10 @@ sub is_supported_api($)
# some functions need a hand-written wrapper
sub needs_wrapper($$)
{
my %funcs =
(
"glDebugEntry" => 1,
"glDebugMessageCallback" => 1,
"glDebugMessageCallbackAMD" => 1,
"glDebugMessageCallbackARB" => 1,
"glGetIntegerv" => 1,
"glGetString" => 1,
"glGetStringi" => 1,
"wglGetCurrentReadDCARB" => 1,
"wglGetPixelFormat" => 1,
"wglGetProcAddress" => 1,
"wglSwapBuffers" => 1,
);
my ($name, $func) = @_;
return 1 if defined $funcs{$name};
return 1 if $name =~ /^glDebugMessageCallback/;
# check if return value needs special handling
(my $type = $func->[0]->textContent()) =~ s/ $//;
return 1 if defined $remap_types{$type};
@ -881,26 +879,26 @@ print OUT "WINE_DEFAULT_DEBUG_CHANNEL(opengl);\n";
foreach (sort keys %wgl_functions)
{
next if defined $manual_win_functions{$_};
next if needs_wrapper( $_, $wgl_functions{$_} );
next if defined $manual_win_thunks{$_};
print OUT "\n" . generate_win_thunk($_, $wgl_functions{$_});
}
foreach (sort keys %norm_functions)
{
next if defined $manual_win_functions{$_};
next if needs_wrapper( $_, $norm_functions{$_} );
next if defined $manual_win_thunks{$_};
print OUT "\n" . generate_win_thunk($_, $norm_functions{$_});
}
foreach (sort keys %ext_functions)
{
next if defined $manual_win_functions{$_};
next if needs_wrapper( $_, $ext_functions{$_} );
next if defined $manual_win_thunks{$_};
print OUT "\nstatic " . generate_win_thunk($_, $ext_functions{$_});
}
print OUT "\n";
foreach (sort keys %ext_functions)
{
next unless defined $manual_win_functions{$_} || needs_wrapper( $_, $ext_functions{$_} );
next unless defined $manual_win_functions{$_} || $manual_win_thunks{$_};
my $decl_args = get_func_args( $ext_functions{$_}, 1, 0, "" );
my $func_ret = get_func_ret( $ext_functions{$_}, 0 );
printf OUT "extern %s WINAPI %s(%s) DECLSPEC_HIDDEN;\n", $func_ret, $_, $decl_args;
@ -941,6 +939,21 @@ print OUT "#include \"opengl_ext.h\"\n\n";
foreach (sort keys %wgl_functions)
{
next if defined $manual_win_functions{$_};
next unless needs_wrapper( $_, $wgl_functions{$_} );
print OUT "extern NTSTATUS wgl_$_( void *args ) DECLSPEC_HIDDEN;\n";
}
foreach (sort keys %ext_functions)
{
next if defined $manual_win_functions{$_};
next unless needs_wrapper( $_, $ext_functions{$_} );
print OUT "extern NTSTATUS ext_$_( void *args ) DECLSPEC_HIDDEN;\n";
}
print OUT "\n";
foreach (sort keys %wgl_functions)
{
next if defined $manual_win_functions{$_};
next if needs_wrapper( $_, $wgl_functions{$_} );
print OUT generate_unix_thunk($_, $wgl_functions{$_}, "wgl");
}
foreach (sort keys %norm_functions)
@ -951,6 +964,7 @@ foreach (sort keys %norm_functions)
foreach (sort keys %ext_functions)
{
next if defined $manual_win_functions{$_};
next if needs_wrapper( $_, $ext_functions{$_} );
print OUT generate_unix_thunk($_, $ext_functions{$_}, "ext");
}

View file

@ -17,6 +17,33 @@
WINE_DEFAULT_DEBUG_CHANNEL(opengl);
BOOL WINAPI wglCopyContext( HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask )
{
struct wglCopyContext_params args = { .hglrcSrc = hglrcSrc, .hglrcDst = hglrcDst, .mask = mask, };
NTSTATUS status;
TRACE( "hglrcSrc %p, hglrcDst %p, mask %u\n", hglrcSrc, hglrcDst, mask );
if ((status = UNIX_CALL( wglCopyContext, &args ))) WARN( "wglCopyContext returned %#x\n", status );
return args.ret;
}
HGLRC WINAPI wglCreateContext( HDC hDc )
{
struct wglCreateContext_params args = { .hDc = hDc, };
NTSTATUS status;
TRACE( "hDc %p\n", hDc );
if ((status = UNIX_CALL( wglCreateContext, &args ))) WARN( "wglCreateContext returned %#x\n", status );
return args.ret;
}
BOOL WINAPI wglDeleteContext( HGLRC oldContext )
{
struct wglDeleteContext_params args = { .oldContext = oldContext, };
NTSTATUS status;
TRACE( "oldContext %p\n", oldContext );
if ((status = UNIX_CALL( wglDeleteContext, &args ))) WARN( "wglDeleteContext returned %#x\n", status );
return args.ret;
}
int WINAPI wglDescribePixelFormat( HDC hdc, int ipfd, UINT cjpfd, PIXELFORMATDESCRIPTOR *ppfd )
{
struct wglDescribePixelFormat_params args = { .hdc = hdc, .ipfd = ipfd, .cjpfd = cjpfd, .ppfd = ppfd, };
@ -26,6 +53,15 @@ int WINAPI wglDescribePixelFormat( HDC hdc, int ipfd, UINT cjpfd, PIXELFORMATDES
return args.ret;
}
BOOL WINAPI wglMakeCurrent( HDC hDc, HGLRC newContext )
{
struct wglMakeCurrent_params args = { .hDc = hDc, .newContext = newContext, };
NTSTATUS status;
TRACE( "hDc %p, newContext %p\n", hDc, newContext );
if ((status = UNIX_CALL( wglMakeCurrent, &args ))) WARN( "wglMakeCurrent returned %#x\n", status );
return args.ret;
}
BOOL WINAPI wglSetPixelFormat( HDC hdc, int ipfd, const PIXELFORMATDESCRIPTOR *ppfd )
{
struct wglSetPixelFormat_params args = { .hdc = hdc, .ipfd = ipfd, .ppfd = ppfd, };
@ -35,6 +71,15 @@ BOOL WINAPI wglSetPixelFormat( HDC hdc, int ipfd, const PIXELFORMATDESCRIPTOR *p
return args.ret;
}
BOOL WINAPI wglShareLists( HGLRC hrcSrvShare, HGLRC hrcSrvSource )
{
struct wglShareLists_params args = { .hrcSrvShare = hrcSrvShare, .hrcSrvSource = hrcSrvSource, };
NTSTATUS status;
TRACE( "hrcSrvShare %p, hrcSrvSource %p\n", hrcSrvShare, hrcSrvSource );
if ((status = UNIX_CALL( wglShareLists, &args ))) WARN( "wglShareLists returned %#x\n", status );
return args.ret;
}
void WINAPI glAccum( GLenum op, GLfloat value )
{
struct glAccum_params args = { .op = op, .value = value, };
@ -5418,6 +5463,30 @@ static void WINAPI glCurrentPaletteMatrixARB( GLint index )
if ((status = UNIX_CALL( glCurrentPaletteMatrixARB, &args ))) WARN( "glCurrentPaletteMatrixARB returned %#x\n", status );
}
static void WINAPI glDebugMessageCallback( GLDEBUGPROC callback, const void *userParam )
{
struct glDebugMessageCallback_params args = { .callback = callback, .userParam = userParam, };
NTSTATUS status;
TRACE( "callback %p, userParam %p\n", callback, userParam );
if ((status = UNIX_CALL( glDebugMessageCallback, &args ))) WARN( "glDebugMessageCallback returned %#x\n", status );
}
static void WINAPI glDebugMessageCallbackAMD( GLDEBUGPROCAMD callback, void *userParam )
{
struct glDebugMessageCallbackAMD_params args = { .callback = callback, .userParam = userParam, };
NTSTATUS status;
TRACE( "callback %p, userParam %p\n", callback, userParam );
if ((status = UNIX_CALL( glDebugMessageCallbackAMD, &args ))) WARN( "glDebugMessageCallbackAMD returned %#x\n", status );
}
static void WINAPI glDebugMessageCallbackARB( GLDEBUGPROCARB callback, const void *userParam )
{
struct glDebugMessageCallbackARB_params args = { .callback = callback, .userParam = userParam, };
NTSTATUS status;
TRACE( "callback %p, userParam %p\n", callback, userParam );
if ((status = UNIX_CALL( glDebugMessageCallbackARB, &args ))) WARN( "glDebugMessageCallbackARB returned %#x\n", status );
}
static void WINAPI glDebugMessageControl( GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled )
{
struct glDebugMessageControl_params args = { .source = source, .type = type, .severity = severity, .count = count, .ids = ids, .enabled = enabled, };
@ -24187,6 +24256,15 @@ static void * WINAPI wglAllocateMemoryNV( GLsizei size, GLfloat readfreq, GLfloa
return args.ret;
}
static BOOL WINAPI wglBindTexImageARB( HPBUFFERARB hPbuffer, int iBuffer )
{
struct wglBindTexImageARB_params args = { .hPbuffer = hPbuffer, .iBuffer = iBuffer, };
NTSTATUS status;
TRACE( "hPbuffer %p, iBuffer %d\n", hPbuffer, iBuffer );
if ((status = UNIX_CALL( wglBindTexImageARB, &args ))) WARN( "wglBindTexImageARB returned %#x\n", status );
return args.ret;
}
static BOOL WINAPI wglChoosePixelFormatARB( HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats )
{
struct wglChoosePixelFormatARB_params args = { .hdc = hdc, .piAttribIList = piAttribIList, .pfAttribFList = pfAttribFList, .nMaxFormats = nMaxFormats, .piFormats = piFormats, .nNumFormats = nNumFormats, };
@ -24196,6 +24274,33 @@ static BOOL WINAPI wglChoosePixelFormatARB( HDC hdc, const int *piAttribIList, c
return args.ret;
}
static HGLRC WINAPI wglCreateContextAttribsARB( HDC hDC, HGLRC hShareContext, const int *attribList )
{
struct wglCreateContextAttribsARB_params args = { .hDC = hDC, .hShareContext = hShareContext, .attribList = attribList, };
NTSTATUS status;
TRACE( "hDC %p, hShareContext %p, attribList %p\n", hDC, hShareContext, attribList );
if ((status = UNIX_CALL( wglCreateContextAttribsARB, &args ))) WARN( "wglCreateContextAttribsARB returned %#x\n", status );
return args.ret;
}
static HPBUFFERARB WINAPI wglCreatePbufferARB( HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList )
{
struct wglCreatePbufferARB_params args = { .hDC = hDC, .iPixelFormat = iPixelFormat, .iWidth = iWidth, .iHeight = iHeight, .piAttribList = piAttribList, };
NTSTATUS status;
TRACE( "hDC %p, iPixelFormat %d, iWidth %d, iHeight %d, piAttribList %p\n", hDC, iPixelFormat, iWidth, iHeight, piAttribList );
if ((status = UNIX_CALL( wglCreatePbufferARB, &args ))) WARN( "wglCreatePbufferARB returned %#x\n", status );
return args.ret;
}
static BOOL WINAPI wglDestroyPbufferARB( HPBUFFERARB hPbuffer )
{
struct wglDestroyPbufferARB_params args = { .hPbuffer = hPbuffer, };
NTSTATUS status;
TRACE( "hPbuffer %p\n", hPbuffer );
if ((status = UNIX_CALL( wglDestroyPbufferARB, &args ))) WARN( "wglDestroyPbufferARB returned %#x\n", status );
return args.ret;
}
static void WINAPI wglFreeMemoryNV( void *pointer )
{
struct wglFreeMemoryNV_params args = { .pointer = pointer, };
@ -24222,6 +24327,15 @@ static const char * WINAPI wglGetExtensionsStringEXT(void)
return args.ret;
}
static HDC WINAPI wglGetPbufferDCARB( HPBUFFERARB hPbuffer )
{
struct wglGetPbufferDCARB_params args = { .hPbuffer = hPbuffer, };
NTSTATUS status;
TRACE( "hPbuffer %p\n", hPbuffer );
if ((status = UNIX_CALL( wglGetPbufferDCARB, &args ))) WARN( "wglGetPbufferDCARB returned %#x\n", status );
return args.ret;
}
static BOOL WINAPI wglGetPixelFormatAttribfvARB( HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues )
{
struct wglGetPixelFormatAttribfvARB_params args = { .hdc = hdc, .iPixelFormat = iPixelFormat, .iLayerPlane = iLayerPlane, .nAttributes = nAttributes, .piAttributes = piAttributes, .pfValues = pfValues, };
@ -24249,6 +24363,15 @@ static int WINAPI wglGetSwapIntervalEXT(void)
return args.ret;
}
static BOOL WINAPI wglMakeContextCurrentARB( HDC hDrawDC, HDC hReadDC, HGLRC hglrc )
{
struct wglMakeContextCurrentARB_params args = { .hDrawDC = hDrawDC, .hReadDC = hReadDC, .hglrc = hglrc, };
NTSTATUS status;
TRACE( "hDrawDC %p, hReadDC %p, hglrc %p\n", hDrawDC, hReadDC, hglrc );
if ((status = UNIX_CALL( wglMakeContextCurrentARB, &args ))) WARN( "wglMakeContextCurrentARB returned %#x\n", status );
return args.ret;
}
static BOOL WINAPI wglQueryCurrentRendererIntegerWINE( GLenum attribute, GLuint *value )
{
struct wglQueryCurrentRendererIntegerWINE_params args = { .attribute = attribute, .value = value, };
@ -24267,6 +24390,15 @@ static const GLchar * WINAPI wglQueryCurrentRendererStringWINE( GLenum attribute
return args.ret;
}
static BOOL WINAPI wglQueryPbufferARB( HPBUFFERARB hPbuffer, int iAttribute, int *piValue )
{
struct wglQueryPbufferARB_params args = { .hPbuffer = hPbuffer, .iAttribute = iAttribute, .piValue = piValue, };
NTSTATUS status;
TRACE( "hPbuffer %p, iAttribute %d, piValue %p\n", hPbuffer, iAttribute, piValue );
if ((status = UNIX_CALL( wglQueryPbufferARB, &args ))) WARN( "wglQueryPbufferARB returned %#x\n", status );
return args.ret;
}
static BOOL WINAPI wglQueryRendererIntegerWINE( HDC dc, GLint renderer, GLenum attribute, GLuint *value )
{
struct wglQueryRendererIntegerWINE_params args = { .dc = dc, .renderer = renderer, .attribute = attribute, .value = value, };
@ -24285,6 +24417,33 @@ static const GLchar * WINAPI wglQueryRendererStringWINE( HDC dc, GLint renderer,
return args.ret;
}
static int WINAPI wglReleasePbufferDCARB( HPBUFFERARB hPbuffer, HDC hDC )
{
struct wglReleasePbufferDCARB_params args = { .hPbuffer = hPbuffer, .hDC = hDC, };
NTSTATUS status;
TRACE( "hPbuffer %p, hDC %p\n", hPbuffer, hDC );
if ((status = UNIX_CALL( wglReleasePbufferDCARB, &args ))) WARN( "wglReleasePbufferDCARB returned %#x\n", status );
return args.ret;
}
static BOOL WINAPI wglReleaseTexImageARB( HPBUFFERARB hPbuffer, int iBuffer )
{
struct wglReleaseTexImageARB_params args = { .hPbuffer = hPbuffer, .iBuffer = iBuffer, };
NTSTATUS status;
TRACE( "hPbuffer %p, iBuffer %d\n", hPbuffer, iBuffer );
if ((status = UNIX_CALL( wglReleaseTexImageARB, &args ))) WARN( "wglReleaseTexImageARB returned %#x\n", status );
return args.ret;
}
static BOOL WINAPI wglSetPbufferAttribARB( HPBUFFERARB hPbuffer, const int *piAttribList )
{
struct wglSetPbufferAttribARB_params args = { .hPbuffer = hPbuffer, .piAttribList = piAttribList, };
NTSTATUS status;
TRACE( "hPbuffer %p, piAttribList %p\n", hPbuffer, piAttribList );
if ((status = UNIX_CALL( wglSetPbufferAttribARB, &args ))) WARN( "wglSetPbufferAttribARB returned %#x\n", status );
return args.ret;
}
static BOOL WINAPI wglSetPixelFormatWINE( HDC hdc, int format )
{
struct wglSetPixelFormatWINE_params args = { .hdc = hdc, .format = format, };
@ -24303,21 +24462,8 @@ static BOOL WINAPI wglSwapIntervalEXT( int interval )
return args.ret;
}
extern void WINAPI glDebugMessageCallback( GLDEBUGPROC callback, const void *userParam ) DECLSPEC_HIDDEN;
extern void WINAPI glDebugMessageCallbackAMD( GLDEBUGPROCAMD callback, void *userParam ) DECLSPEC_HIDDEN;
extern void WINAPI glDebugMessageCallbackARB( GLDEBUGPROCARB callback, const void *userParam ) DECLSPEC_HIDDEN;
extern const GLubyte * WINAPI glGetStringi( GLenum name, GLuint index ) DECLSPEC_HIDDEN;
extern BOOL WINAPI wglBindTexImageARB( HPBUFFERARB hPbuffer, int iBuffer ) DECLSPEC_HIDDEN;
extern HGLRC WINAPI wglCreateContextAttribsARB( HDC hDC, HGLRC hShareContext, const int *attribList ) DECLSPEC_HIDDEN;
extern HPBUFFERARB WINAPI wglCreatePbufferARB( HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList ) DECLSPEC_HIDDEN;
extern BOOL WINAPI wglDestroyPbufferARB( HPBUFFERARB hPbuffer ) DECLSPEC_HIDDEN;
extern HDC WINAPI wglGetCurrentReadDCARB(void) DECLSPEC_HIDDEN;
extern HDC WINAPI wglGetPbufferDCARB( HPBUFFERARB hPbuffer ) DECLSPEC_HIDDEN;
extern BOOL WINAPI wglMakeContextCurrentARB( HDC hDrawDC, HDC hReadDC, HGLRC hglrc ) DECLSPEC_HIDDEN;
extern BOOL WINAPI wglQueryPbufferARB( HPBUFFERARB hPbuffer, int iAttribute, int *piValue ) DECLSPEC_HIDDEN;
extern int WINAPI wglReleasePbufferDCARB( HPBUFFERARB hPbuffer, HDC hDC ) DECLSPEC_HIDDEN;
extern BOOL WINAPI wglReleaseTexImageARB( HPBUFFERARB hPbuffer, int iBuffer ) DECLSPEC_HIDDEN;
extern BOOL WINAPI wglSetPbufferAttribARB( HPBUFFERARB hPbuffer, const int *piAttribList ) DECLSPEC_HIDDEN;
const int extension_registry_size = 2694;
const OpenGL_extension extension_registry[2694] =

View file

@ -13,30 +13,24 @@
#include "opengl_ext.h"
static NTSTATUS wgl_wglCopyContext( void *args )
{
struct wglCopyContext_params *params = args;
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
params->ret = funcs->wgl.p_wglCopyContext( (struct wgl_context *)params->hglrcSrc, (struct wgl_context *)params->hglrcDst, params->mask );
return STATUS_SUCCESS;
}
static NTSTATUS wgl_wglCreateContext( void *args )
{
struct wglCreateContext_params *params = args;
const struct opengl_funcs *funcs = get_dc_funcs( params->hDc );
if (!funcs || !funcs->wgl.p_wglCreateContext) return STATUS_NOT_IMPLEMENTED;
params->ret = (HGLRC)funcs->wgl.p_wglCreateContext( params->hDc );
return STATUS_SUCCESS;
}
static NTSTATUS wgl_wglDeleteContext( void *args )
{
struct wglDeleteContext_params *params = args;
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
params->ret = funcs->wgl.p_wglDeleteContext( (struct wgl_context *)params->oldContext );
return STATUS_SUCCESS;
}
extern NTSTATUS wgl_wglCopyContext( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS wgl_wglCreateContext( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS wgl_wglDeleteContext( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS wgl_wglMakeCurrent( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS wgl_wglShareLists( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS ext_glDebugMessageCallback( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS ext_glDebugMessageCallbackAMD( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS ext_glDebugMessageCallbackARB( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS ext_wglBindTexImageARB( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS ext_wglCreateContextAttribsARB( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS ext_wglCreatePbufferARB( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS ext_wglDestroyPbufferARB( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS ext_wglGetPbufferDCARB( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS ext_wglMakeContextCurrentARB( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS ext_wglQueryPbufferARB( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS ext_wglReleasePbufferDCARB( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS ext_wglReleaseTexImageARB( void *args ) DECLSPEC_HIDDEN;
extern NTSTATUS ext_wglSetPbufferAttribARB( void *args ) DECLSPEC_HIDDEN;
static NTSTATUS wgl_wglDescribePixelFormat( void *args )
{
@ -64,15 +58,6 @@ static NTSTATUS wgl_wglGetProcAddress( void *args )
return STATUS_SUCCESS;
}
static NTSTATUS wgl_wglMakeCurrent( void *args )
{
struct wglMakeCurrent_params *params = args;
const struct opengl_funcs *funcs = get_dc_funcs( params->hDc );
if (!funcs || !funcs->wgl.p_wglMakeCurrent) return STATUS_NOT_IMPLEMENTED;
params->ret = funcs->wgl.p_wglMakeCurrent( params->hDc, (struct wgl_context *)params->newContext );
return STATUS_SUCCESS;
}
static NTSTATUS wgl_wglSetPixelFormat( void *args )
{
struct wglSetPixelFormat_params *params = args;
@ -82,14 +67,6 @@ static NTSTATUS wgl_wglSetPixelFormat( void *args )
return STATUS_SUCCESS;
}
static NTSTATUS wgl_wglShareLists( void *args )
{
struct wglShareLists_params *params = args;
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
params->ret = funcs->wgl.p_wglShareLists( (struct wgl_context *)params->hrcSrvShare, (struct wgl_context *)params->hrcSrvSource );
return STATUS_SUCCESS;
}
static NTSTATUS wgl_wglSwapBuffers( void *args )
{
struct wglSwapBuffers_params *params = args;
@ -5451,30 +5428,6 @@ static NTSTATUS ext_glCurrentPaletteMatrixARB( void *args )
return STATUS_SUCCESS;
}
static NTSTATUS ext_glDebugMessageCallback( void *args )
{
struct glDebugMessageCallback_params *params = args;
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
funcs->ext.p_glDebugMessageCallback( params->callback, params->userParam );
return STATUS_SUCCESS;
}
static NTSTATUS ext_glDebugMessageCallbackAMD( void *args )
{
struct glDebugMessageCallbackAMD_params *params = args;
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
funcs->ext.p_glDebugMessageCallbackAMD( params->callback, params->userParam );
return STATUS_SUCCESS;
}
static NTSTATUS ext_glDebugMessageCallbackARB( void *args )
{
struct glDebugMessageCallbackARB_params *params = args;
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
funcs->ext.p_glDebugMessageCallbackARB( params->callback, params->userParam );
return STATUS_SUCCESS;
}
static NTSTATUS ext_glDebugMessageControl( void *args )
{
struct glDebugMessageControl_params *params = args;
@ -24098,14 +24051,6 @@ static NTSTATUS ext_wglAllocateMemoryNV( void *args )
return STATUS_SUCCESS;
}
static NTSTATUS ext_wglBindTexImageARB( void *args )
{
struct wglBindTexImageARB_params *params = args;
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
params->ret = funcs->ext.p_wglBindTexImageARB( (struct wgl_pbuffer *)params->hPbuffer, params->iBuffer );
return STATUS_SUCCESS;
}
static NTSTATUS ext_wglChoosePixelFormatARB( void *args )
{
struct wglChoosePixelFormatARB_params *params = args;
@ -24115,32 +24060,6 @@ static NTSTATUS ext_wglChoosePixelFormatARB( void *args )
return STATUS_SUCCESS;
}
static NTSTATUS ext_wglCreateContextAttribsARB( void *args )
{
struct wglCreateContextAttribsARB_params *params = args;
const struct opengl_funcs *funcs = get_dc_funcs( params->hDC );
if (!funcs || !funcs->ext.p_wglCreateContextAttribsARB) return STATUS_NOT_IMPLEMENTED;
params->ret = (HGLRC)funcs->ext.p_wglCreateContextAttribsARB( params->hDC, (struct wgl_context *)params->hShareContext, params->attribList );
return STATUS_SUCCESS;
}
static NTSTATUS ext_wglCreatePbufferARB( void *args )
{
struct wglCreatePbufferARB_params *params = args;
const struct opengl_funcs *funcs = get_dc_funcs( params->hDC );
if (!funcs || !funcs->ext.p_wglCreatePbufferARB) return STATUS_NOT_IMPLEMENTED;
params->ret = (HPBUFFERARB)funcs->ext.p_wglCreatePbufferARB( params->hDC, params->iPixelFormat, params->iWidth, params->iHeight, params->piAttribList );
return STATUS_SUCCESS;
}
static NTSTATUS ext_wglDestroyPbufferARB( void *args )
{
struct wglDestroyPbufferARB_params *params = args;
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
params->ret = funcs->ext.p_wglDestroyPbufferARB( (struct wgl_pbuffer *)params->hPbuffer );
return STATUS_SUCCESS;
}
static NTSTATUS ext_wglFreeMemoryNV( void *args )
{
struct wglFreeMemoryNV_params *params = args;
@ -24174,14 +24093,6 @@ static NTSTATUS ext_wglGetExtensionsStringEXT( void *args )
return STATUS_SUCCESS;
}
static NTSTATUS ext_wglGetPbufferDCARB( void *args )
{
struct wglGetPbufferDCARB_params *params = args;
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
params->ret = funcs->ext.p_wglGetPbufferDCARB( (struct wgl_pbuffer *)params->hPbuffer );
return STATUS_SUCCESS;
}
static NTSTATUS ext_wglGetPixelFormatAttribfvARB( void *args )
{
struct wglGetPixelFormatAttribfvARB_params *params = args;
@ -24208,15 +24119,6 @@ static NTSTATUS ext_wglGetSwapIntervalEXT( void *args )
return STATUS_SUCCESS;
}
static NTSTATUS ext_wglMakeContextCurrentARB( void *args )
{
struct wglMakeContextCurrentARB_params *params = args;
const struct opengl_funcs *funcs = get_dc_funcs( params->hDrawDC );
if (!funcs || !funcs->ext.p_wglMakeContextCurrentARB) return STATUS_NOT_IMPLEMENTED;
params->ret = funcs->ext.p_wglMakeContextCurrentARB( params->hDrawDC, params->hReadDC, (struct wgl_context *)params->hglrc );
return STATUS_SUCCESS;
}
static NTSTATUS ext_wglQueryCurrentRendererIntegerWINE( void *args )
{
struct wglQueryCurrentRendererIntegerWINE_params *params = args;
@ -24233,14 +24135,6 @@ static NTSTATUS ext_wglQueryCurrentRendererStringWINE( void *args )
return STATUS_SUCCESS;
}
static NTSTATUS ext_wglQueryPbufferARB( void *args )
{
struct wglQueryPbufferARB_params *params = args;
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
params->ret = funcs->ext.p_wglQueryPbufferARB( (struct wgl_pbuffer *)params->hPbuffer, params->iAttribute, params->piValue );
return STATUS_SUCCESS;
}
static NTSTATUS ext_wglQueryRendererIntegerWINE( void *args )
{
struct wglQueryRendererIntegerWINE_params *params = args;
@ -24259,30 +24153,6 @@ static NTSTATUS ext_wglQueryRendererStringWINE( void *args )
return STATUS_SUCCESS;
}
static NTSTATUS ext_wglReleasePbufferDCARB( void *args )
{
struct wglReleasePbufferDCARB_params *params = args;
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
params->ret = funcs->ext.p_wglReleasePbufferDCARB( (struct wgl_pbuffer *)params->hPbuffer, params->hDC );
return STATUS_SUCCESS;
}
static NTSTATUS ext_wglReleaseTexImageARB( void *args )
{
struct wglReleaseTexImageARB_params *params = args;
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
params->ret = funcs->ext.p_wglReleaseTexImageARB( (struct wgl_pbuffer *)params->hPbuffer, params->iBuffer );
return STATUS_SUCCESS;
}
static NTSTATUS ext_wglSetPbufferAttribARB( void *args )
{
struct wglSetPbufferAttribARB_params *params = args;
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
params->ret = funcs->ext.p_wglSetPbufferAttribARB( (struct wgl_pbuffer *)params->hPbuffer, params->piAttribList );
return STATUS_SUCCESS;
}
static NTSTATUS ext_wglSetPixelFormatWINE( void *args )
{
struct wglSetPixelFormatWINE_params *params = args;

View file

@ -35,8 +35,6 @@
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(wgl);
struct wgl_handle wgl_handles[MAX_WGL_HANDLES];
static struct wgl_handle *next_free;
static unsigned int handle_count;
@ -107,7 +105,7 @@ static void free_handle_ptr( struct wgl_handle *ptr )
LeaveCriticalSection( &wgl_section );
}
BOOL WINAPI wglCopyContext( HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask )
static BOOL wrap_wglCopyContext( HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask )
{
struct wgl_handle *src, *dst;
BOOL ret = FALSE;
@ -123,7 +121,7 @@ BOOL WINAPI wglCopyContext( HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask )
return ret;
}
HGLRC WINAPI wglCreateContext( HDC hdc )
static HGLRC wrap_wglCreateContext( HDC hdc )
{
HGLRC ret = 0;
struct wgl_context *drv_ctx;
@ -142,7 +140,7 @@ HGLRC WINAPI wglCreateContext( HDC hdc )
return ret;
}
BOOL WINAPI wglDeleteContext( HGLRC hglrc )
static BOOL wrap_wglDeleteContext( HGLRC hglrc )
{
struct wgl_handle *ptr = get_handle_ptr( hglrc, HANDLE_CONTEXT );
@ -163,7 +161,7 @@ BOOL WINAPI wglDeleteContext( HGLRC hglrc )
return TRUE;
}
BOOL WINAPI wglMakeCurrent( HDC hdc, HGLRC hglrc )
static BOOL wrap_wglMakeCurrent( HDC hdc, HGLRC hglrc )
{
BOOL ret = TRUE;
struct wgl_handle *ptr, *prev = get_current_context_ptr();
@ -206,7 +204,7 @@ BOOL WINAPI wglMakeCurrent( HDC hdc, HGLRC hglrc )
return ret;
}
BOOL WINAPI wglShareLists( HGLRC hglrcSrc, HGLRC hglrcDst )
static BOOL wrap_wglShareLists( HGLRC hglrcSrc, HGLRC hglrcDst )
{
BOOL ret = FALSE;
struct wgl_handle *src, *dst;
@ -222,7 +220,7 @@ BOOL WINAPI wglShareLists( HGLRC hglrcSrc, HGLRC hglrcDst )
return ret;
}
BOOL WINAPI wglBindTexImageARB( HPBUFFERARB handle, int buffer )
static BOOL wrap_wglBindTexImageARB( HPBUFFERARB handle, int buffer )
{
struct wgl_handle *ptr = get_handle_ptr( handle, HANDLE_PBUFFER );
BOOL ret;
@ -233,7 +231,7 @@ BOOL WINAPI wglBindTexImageARB( HPBUFFERARB handle, int buffer )
return ret;
}
HGLRC WINAPI wglCreateContextAttribsARB( HDC hdc, HGLRC share, const int *attribs )
static HGLRC wrap_wglCreateContextAttribsARB( HDC hdc, HGLRC share, const int *attribs )
{
HGLRC ret = 0;
struct wgl_context *drv_ctx;
@ -281,7 +279,7 @@ HGLRC WINAPI wglCreateContextAttribsARB( HDC hdc, HGLRC share, const int *attrib
return ret;
}
HPBUFFERARB WINAPI wglCreatePbufferARB( HDC hdc, int format, int width, int height, const int *attribs )
static HPBUFFERARB wrap_wglCreatePbufferARB( HDC hdc, int format, int width, int height, const int *attribs )
{
HPBUFFERARB ret;
struct wgl_pbuffer *pbuffer;
@ -294,7 +292,7 @@ HPBUFFERARB WINAPI wglCreatePbufferARB( HDC hdc, int format, int width, int heig
return ret;
}
BOOL WINAPI wglDestroyPbufferARB( HPBUFFERARB handle )
static BOOL wrap_wglDestroyPbufferARB( HPBUFFERARB handle )
{
struct wgl_handle *ptr = get_handle_ptr( handle, HANDLE_PBUFFER );
@ -304,7 +302,7 @@ BOOL WINAPI wglDestroyPbufferARB( HPBUFFERARB handle )
return TRUE;
}
HDC WINAPI wglGetPbufferDCARB( HPBUFFERARB handle )
static HDC wrap_wglGetPbufferDCARB( HPBUFFERARB handle )
{
struct wgl_handle *ptr = get_handle_ptr( handle, HANDLE_PBUFFER );
HDC ret;
@ -315,7 +313,7 @@ HDC WINAPI wglGetPbufferDCARB( HPBUFFERARB handle )
return ret;
}
BOOL WINAPI wglMakeContextCurrentARB( HDC draw_hdc, HDC read_hdc, HGLRC hglrc )
static BOOL wrap_wglMakeContextCurrentARB( HDC draw_hdc, HDC read_hdc, HGLRC hglrc )
{
BOOL ret = TRUE;
struct wgl_handle *ptr, *prev = get_current_context_ptr();
@ -354,7 +352,7 @@ BOOL WINAPI wglMakeContextCurrentARB( HDC draw_hdc, HDC read_hdc, HGLRC hglrc )
return ret;
}
BOOL WINAPI wglQueryPbufferARB( HPBUFFERARB handle, int attrib, int *value )
static BOOL wrap_wglQueryPbufferARB( HPBUFFERARB handle, int attrib, int *value )
{
struct wgl_handle *ptr = get_handle_ptr( handle, HANDLE_PBUFFER );
BOOL ret;
@ -365,7 +363,7 @@ BOOL WINAPI wglQueryPbufferARB( HPBUFFERARB handle, int attrib, int *value )
return ret;
}
int WINAPI wglReleasePbufferDCARB( HPBUFFERARB handle, HDC hdc )
static int wrap_wglReleasePbufferDCARB( HPBUFFERARB handle, HDC hdc )
{
struct wgl_handle *ptr = get_handle_ptr( handle, HANDLE_PBUFFER );
BOOL ret;
@ -376,7 +374,7 @@ int WINAPI wglReleasePbufferDCARB( HPBUFFERARB handle, HDC hdc )
return ret;
}
BOOL WINAPI wglReleaseTexImageARB( HPBUFFERARB handle, int buffer )
static BOOL wrap_wglReleaseTexImageARB( HPBUFFERARB handle, int buffer )
{
struct wgl_handle *ptr = get_handle_ptr( handle, HANDLE_PBUFFER );
BOOL ret;
@ -387,7 +385,7 @@ BOOL WINAPI wglReleaseTexImageARB( HPBUFFERARB handle, int buffer )
return ret;
}
BOOL WINAPI wglSetPbufferAttribARB( HPBUFFERARB handle, const int *attribs )
static BOOL wrap_wglSetPbufferAttribARB( HPBUFFERARB handle, const int *attribs )
{
struct wgl_handle *ptr = get_handle_ptr( handle, HANDLE_PBUFFER );
BOOL ret;
@ -422,38 +420,162 @@ static void gl_debug_message_callback( GLenum source, GLenum type, GLuint id, GL
callback( &params, sizeof(params) );
}
void WINAPI glDebugMessageCallback( GLDEBUGPROC callback, const void *userParam )
static void WINAPI wrap_glDebugMessageCallback( GLDEBUGPROC callback, const void *userParam )
{
struct wgl_handle *ptr = get_current_context_ptr();
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
TRACE( "(%p, %p)\n", callback, userParam );
if (!funcs->ext.p_glDebugMessageCallback) return;
ptr->u.context->debug_callback = callback;
ptr->u.context->debug_user = userParam;
funcs->ext.p_glDebugMessageCallback( gl_debug_message_callback, ptr );
}
void WINAPI glDebugMessageCallbackAMD( GLDEBUGPROCAMD callback, void *userParam )
static void WINAPI wrap_glDebugMessageCallbackAMD( GLDEBUGPROCAMD callback, void *userParam )
{
struct wgl_handle *ptr = get_current_context_ptr();
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
TRACE( "(%p, %p)\n", callback, userParam );
if (!funcs->ext.p_glDebugMessageCallbackAMD) return;
ptr->u.context->debug_callback = callback;
ptr->u.context->debug_user = userParam;
funcs->ext.p_glDebugMessageCallbackAMD( gl_debug_message_callback, ptr );
}
void WINAPI glDebugMessageCallbackARB( GLDEBUGPROCARB callback, const void *userParam )
static void WINAPI wrap_glDebugMessageCallbackARB( GLDEBUGPROCARB callback, const void *userParam )
{
struct wgl_handle *ptr = get_current_context_ptr();
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
TRACE( "(%p, %p)\n", callback, userParam );
if (!funcs->ext.p_glDebugMessageCallbackARB) return;
ptr->u.context->debug_callback = callback;
ptr->u.context->debug_user = userParam;
funcs->ext.p_glDebugMessageCallbackARB( gl_debug_message_callback, ptr );
}
NTSTATUS wgl_wglCopyContext( void *args )
{
struct wglCopyContext_params *params = args;
params->ret = wrap_wglCopyContext( params->hglrcSrc, params->hglrcDst, params->mask );
return STATUS_SUCCESS;
}
NTSTATUS wgl_wglCreateContext( void *args )
{
struct wglCreateContext_params *params = args;
params->ret = wrap_wglCreateContext( params->hDc );
return STATUS_SUCCESS;
}
NTSTATUS wgl_wglDeleteContext( void *args )
{
struct wglDeleteContext_params *params = args;
params->ret = wrap_wglDeleteContext( params->oldContext );
return STATUS_SUCCESS;
}
NTSTATUS wgl_wglMakeCurrent( void *args )
{
struct wglMakeCurrent_params *params = args;
params->ret = wrap_wglMakeCurrent( params->hDc, params->newContext );
return STATUS_SUCCESS;
}
NTSTATUS wgl_wglShareLists( void *args )
{
struct wglShareLists_params *params = args;
params->ret = wrap_wglShareLists( params->hrcSrvShare, params->hrcSrvSource );
return STATUS_SUCCESS;
}
NTSTATUS ext_glDebugMessageCallback( void *args )
{
struct glDebugMessageCallback_params *params = args;
wrap_glDebugMessageCallback( params->callback, params->userParam );
return STATUS_SUCCESS;
}
NTSTATUS ext_glDebugMessageCallbackAMD( void *args )
{
struct glDebugMessageCallbackAMD_params *params = args;
wrap_glDebugMessageCallbackAMD( params->callback, params->userParam );
return STATUS_SUCCESS;
}
NTSTATUS ext_glDebugMessageCallbackARB( void *args )
{
struct glDebugMessageCallbackARB_params *params = args;
wrap_glDebugMessageCallbackARB( params->callback, params->userParam );
return STATUS_SUCCESS;
}
NTSTATUS ext_wglBindTexImageARB( void *args )
{
struct wglBindTexImageARB_params *params = args;
params->ret = wrap_wglBindTexImageARB( params->hPbuffer, params->iBuffer );
return STATUS_SUCCESS;
}
NTSTATUS ext_wglCreateContextAttribsARB( void *args )
{
struct wglCreateContextAttribsARB_params *params = args;
params->ret = wrap_wglCreateContextAttribsARB( params->hDC, params->hShareContext, params->attribList );
return STATUS_SUCCESS;
}
NTSTATUS ext_wglCreatePbufferARB( void *args )
{
struct wglCreatePbufferARB_params *params = args;
params->ret = wrap_wglCreatePbufferARB( params->hDC, params->iPixelFormat, params->iWidth, params->iHeight, params->piAttribList );
return STATUS_SUCCESS;
}
NTSTATUS ext_wglDestroyPbufferARB( void *args )
{
struct wglDestroyPbufferARB_params *params = args;
params->ret = wrap_wglDestroyPbufferARB( params->hPbuffer );
return STATUS_SUCCESS;
}
NTSTATUS ext_wglGetPbufferDCARB( void *args )
{
struct wglGetPbufferDCARB_params *params = args;
params->ret = wrap_wglGetPbufferDCARB( params->hPbuffer );
return STATUS_SUCCESS;
}
NTSTATUS ext_wglMakeContextCurrentARB( void *args )
{
struct wglMakeContextCurrentARB_params *params = args;
params->ret = wrap_wglMakeContextCurrentARB( params->hDrawDC, params->hReadDC, params->hglrc );
return STATUS_SUCCESS;
}
NTSTATUS ext_wglQueryPbufferARB( void *args )
{
struct wglQueryPbufferARB_params *params = args;
params->ret = wrap_wglQueryPbufferARB( params->hPbuffer, params->iAttribute, params->piValue );
return STATUS_SUCCESS;
}
NTSTATUS ext_wglReleasePbufferDCARB( void *args )
{
struct wglReleasePbufferDCARB_params *params = args;
params->ret = wrap_wglReleasePbufferDCARB( params->hPbuffer, params->hDC );
return STATUS_SUCCESS;
}
NTSTATUS ext_wglReleaseTexImageARB( void *args )
{
struct wglReleaseTexImageARB_params *params = args;
params->ret = wrap_wglReleaseTexImageARB( params->hPbuffer, params->iBuffer );
return STATUS_SUCCESS;
}
NTSTATUS ext_wglSetPbufferAttribARB( void *args )
{
struct wglSetPbufferAttribARB_params *params = args;
params->ret = wrap_wglSetPbufferAttribARB( params->hPbuffer, params->piAttribList );
return STATUS_SUCCESS;
}