From: Paul Gofman <pgofman@codeweavers.com> --- dlls/opengl32/make_opengl | 29 ++++- dlls/opengl32/unix_thunks.c | 226 ++++++++++++++++++++++-------------- 2 files changed, 162 insertions(+), 93 deletions(-) diff --git a/dlls/opengl32/make_opengl b/dlls/opengl32/make_opengl index 6d0cfd9029c..9013f347e13 100755 --- a/dlls/opengl32/make_opengl +++ b/dlls/opengl32/make_opengl @@ -489,7 +489,14 @@ sub generate_unix_thunk($$$$) if ($ptype ne "PTR32") { - $call_args .= " params->$pname,"; + if (grep(/^$pname/, @{$map_default_fbo_thunks{$name}})) + { + $call_args .= " $pname,"; + } + else + { + $call_args .= " params->$pname,"; + } } elsif (defined $pointer_array_count{$_} && ($arg_type =~ /\*.*\*/ || $arg_type =~ /(sizei|int)ptr.*\*/)) { @@ -578,12 +585,28 @@ sub generate_unix_thunk($$$$) } else { - $call_args .= " params->$pname,"; + if (grep(/^$pname/, @{$map_default_fbo_thunks{$name}})) + { + $call_args .= " $pname,"; + } + else + { + $call_args .= " params->$pname,"; + } } } $call_args .= " params->ret," if $func_ret =~ /HPBUFFERARB|HGLRC|GLsync/; $ret .= " struct $name\_params *params = args;\n"; } + foreach my $arg (@{$func->[1]}) + { + my $pname = get_arg_name( $arg ); + if (grep(/^$pname/, @{$map_default_fbo_thunks{$name}})) + { + $ret .= " GLuint $pname = params->$pname;\n"; + } + } + $ret .= $vars; if ($use_dc || $use_pbuffer || $use_context) { @@ -606,7 +629,7 @@ sub generate_unix_thunk($$$$) my $target = "GL_DRAW_FRAMEBUFFER"; $target = "GL_READ_FRAMEBUFFER" if $arg =~ "readFramebuffer"; $target = "params->target" if $call_args =~ "params->target"; - $ret .= " if (!params->$arg) params->$arg = get_default_fbo( $teb, $target );\n"; + $ret .= " if (!$arg) $arg = get_default_fbo( $teb, $target );\n"; } $ret .= " resolve_default_fbo( $teb, TRUE );\n" if defined $resolve_default_fbo_thunks{$name}; $ret .= " push_default_fbo( $teb );\n" if defined $hide_default_fbo_thunks{$name}; diff --git a/dlls/opengl32/unix_thunks.c b/dlls/opengl32/unix_thunks.c index 3a93f2e61e0..883b30cf3ea 100644 --- a/dlls/opengl32/unix_thunks.c +++ b/dlls/opengl32/unix_thunks.c @@ -3986,10 +3986,11 @@ static NTSTATUS ext_glBindFragmentShaderATI( void *args ) static NTSTATUS ext_glBindFramebuffer( void *args ) { struct glBindFramebuffer_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glBindFramebuffer) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, params->target ); - funcs->p_glBindFramebuffer( params->target, params->framebuffer ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, params->target ); + funcs->p_glBindFramebuffer( params->target, framebuffer ); set_current_fbo( params->teb, params->target, params->framebuffer ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; @@ -3998,10 +3999,11 @@ static NTSTATUS ext_glBindFramebuffer( void *args ) static NTSTATUS ext_glBindFramebufferEXT( void *args ) { struct glBindFramebufferEXT_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glBindFramebufferEXT) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, params->target ); - funcs->p_glBindFramebufferEXT( params->target, params->framebuffer ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, params->target ); + funcs->p_glBindFramebufferEXT( params->target, framebuffer ); set_current_fbo( params->teb, params->target, params->framebuffer ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; @@ -4720,11 +4722,13 @@ static NTSTATUS ext_glBlitFramebufferLayersEXT( void *args ) static NTSTATUS ext_glBlitNamedFramebuffer( void *args ) { struct glBlitNamedFramebuffer_params *params = args; + GLuint readFramebuffer = params->readFramebuffer; + GLuint drawFramebuffer = params->drawFramebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glBlitNamedFramebuffer) return STATUS_NOT_IMPLEMENTED; - if (!params->readFramebuffer) params->readFramebuffer = get_default_fbo( params->teb, GL_READ_FRAMEBUFFER ); - if (!params->drawFramebuffer) params->drawFramebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glBlitNamedFramebuffer( params->readFramebuffer, params->drawFramebuffer, params->srcX0, params->srcY0, params->srcX1, params->srcY1, params->dstX0, params->dstY0, params->dstX1, params->dstY1, params->mask, params->filter ); + if (!readFramebuffer) readFramebuffer = get_default_fbo( params->teb, GL_READ_FRAMEBUFFER ); + if (!drawFramebuffer) drawFramebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glBlitNamedFramebuffer( readFramebuffer, drawFramebuffer, params->srcX0, params->srcY0, params->srcX1, params->srcY1, params->dstX0, params->dstY0, params->dstX1, params->dstY1, params->mask, params->filter ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -4892,10 +4896,11 @@ static NTSTATUS ext_glCheckFramebufferStatusEXT( void *args ) static NTSTATUS ext_glCheckNamedFramebufferStatus( void *args ) { struct glCheckNamedFramebufferStatus_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glCheckNamedFramebufferStatus) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, params->target ); - params->ret = funcs->p_glCheckNamedFramebufferStatus( params->framebuffer, params->target ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, params->target ); + params->ret = funcs->p_glCheckNamedFramebufferStatus( framebuffer, params->target ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -4903,10 +4908,11 @@ static NTSTATUS ext_glCheckNamedFramebufferStatus( void *args ) static NTSTATUS ext_glCheckNamedFramebufferStatusEXT( void *args ) { struct glCheckNamedFramebufferStatusEXT_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glCheckNamedFramebufferStatusEXT) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, params->target ); - params->ret = funcs->p_glCheckNamedFramebufferStatusEXT( params->framebuffer, params->target ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, params->target ); + params->ret = funcs->p_glCheckNamedFramebufferStatusEXT( framebuffer, params->target ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -5134,10 +5140,11 @@ static NTSTATUS ext_glClearNamedBufferSubDataEXT( void *args ) static NTSTATUS ext_glClearNamedFramebufferfi( void *args ) { struct glClearNamedFramebufferfi_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glClearNamedFramebufferfi) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glClearNamedFramebufferfi( params->framebuffer, params->buffer, params->drawbuffer, params->depth, params->stencil ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glClearNamedFramebufferfi( framebuffer, params->buffer, params->drawbuffer, params->depth, params->stencil ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -5145,10 +5152,11 @@ static NTSTATUS ext_glClearNamedFramebufferfi( void *args ) static NTSTATUS ext_glClearNamedFramebufferfv( void *args ) { struct glClearNamedFramebufferfv_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glClearNamedFramebufferfv) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glClearNamedFramebufferfv( params->framebuffer, params->buffer, params->drawbuffer, params->value ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glClearNamedFramebufferfv( framebuffer, params->buffer, params->drawbuffer, params->value ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -5156,10 +5164,11 @@ static NTSTATUS ext_glClearNamedFramebufferfv( void *args ) static NTSTATUS ext_glClearNamedFramebufferiv( void *args ) { struct glClearNamedFramebufferiv_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glClearNamedFramebufferiv) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glClearNamedFramebufferiv( params->framebuffer, params->buffer, params->drawbuffer, params->value ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glClearNamedFramebufferiv( framebuffer, params->buffer, params->drawbuffer, params->value ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -5167,10 +5176,11 @@ static NTSTATUS ext_glClearNamedFramebufferiv( void *args ) static NTSTATUS ext_glClearNamedFramebufferuiv( void *args ) { struct glClearNamedFramebufferuiv_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glClearNamedFramebufferuiv) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glClearNamedFramebufferuiv( params->framebuffer, params->buffer, params->drawbuffer, params->value ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glClearNamedFramebufferuiv( framebuffer, params->buffer, params->drawbuffer, params->value ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -11205,50 +11215,55 @@ static NTSTATUS ext_glGetNamedBufferSubDataEXT( void *args ) static NTSTATUS ext_glGetNamedFramebufferAttachmentParameteriv( void *args ) { struct glGetNamedFramebufferAttachmentParameteriv_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glGetNamedFramebufferAttachmentParameteriv) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glGetNamedFramebufferAttachmentParameteriv( params->framebuffer, params->attachment, params->pname, params->params ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glGetNamedFramebufferAttachmentParameteriv( framebuffer, params->attachment, params->pname, params->params ); return STATUS_SUCCESS; } static NTSTATUS ext_glGetNamedFramebufferAttachmentParameterivEXT( void *args ) { struct glGetNamedFramebufferAttachmentParameterivEXT_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glGetNamedFramebufferAttachmentParameterivEXT) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glGetNamedFramebufferAttachmentParameterivEXT( params->framebuffer, params->attachment, params->pname, params->params ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glGetNamedFramebufferAttachmentParameterivEXT( framebuffer, params->attachment, params->pname, params->params ); return STATUS_SUCCESS; } static NTSTATUS ext_glGetNamedFramebufferParameterfvAMD( void *args ) { struct glGetNamedFramebufferParameterfvAMD_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glGetNamedFramebufferParameterfvAMD) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glGetNamedFramebufferParameterfvAMD( params->framebuffer, params->pname, params->numsamples, params->pixelindex, params->size, params->values ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glGetNamedFramebufferParameterfvAMD( framebuffer, params->pname, params->numsamples, params->pixelindex, params->size, params->values ); return STATUS_SUCCESS; } static NTSTATUS ext_glGetNamedFramebufferParameteriv( void *args ) { struct glGetNamedFramebufferParameteriv_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glGetNamedFramebufferParameteriv) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glGetNamedFramebufferParameteriv( params->framebuffer, params->pname, params->param ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glGetNamedFramebufferParameteriv( framebuffer, params->pname, params->param ); return STATUS_SUCCESS; } static NTSTATUS ext_glGetNamedFramebufferParameterivEXT( void *args ) { struct glGetNamedFramebufferParameterivEXT_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glGetNamedFramebufferParameterivEXT) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glGetNamedFramebufferParameterivEXT( params->framebuffer, params->pname, params->params ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glGetNamedFramebufferParameterivEXT( framebuffer, params->pname, params->params ); return STATUS_SUCCESS; } @@ -13981,10 +13996,11 @@ static NTSTATUS ext_glInvalidateFramebuffer( void *args ) static NTSTATUS ext_glInvalidateNamedFramebufferData( void *args ) { struct glInvalidateNamedFramebufferData_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glInvalidateNamedFramebufferData) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glInvalidateNamedFramebufferData( params->framebuffer, params->numAttachments, params->attachments ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glInvalidateNamedFramebufferData( framebuffer, params->numAttachments, params->attachments ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -13992,10 +14008,11 @@ static NTSTATUS ext_glInvalidateNamedFramebufferData( void *args ) static NTSTATUS ext_glInvalidateNamedFramebufferSubData( void *args ) { struct glInvalidateNamedFramebufferSubData_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glInvalidateNamedFramebufferSubData) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glInvalidateNamedFramebufferSubData( params->framebuffer, params->numAttachments, params->attachments, params->x, params->y, params->width, params->height ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glInvalidateNamedFramebufferSubData( framebuffer, params->numAttachments, params->attachments, params->x, params->y, params->width, params->height ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -17679,10 +17696,11 @@ static NTSTATUS ext_glNamedFramebufferDrawBuffers( void *args ) static NTSTATUS ext_glNamedFramebufferParameteri( void *args ) { struct glNamedFramebufferParameteri_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glNamedFramebufferParameteri) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glNamedFramebufferParameteri( params->framebuffer, params->pname, params->param ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glNamedFramebufferParameteri( framebuffer, params->pname, params->param ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -17690,10 +17708,11 @@ static NTSTATUS ext_glNamedFramebufferParameteri( void *args ) static NTSTATUS ext_glNamedFramebufferParameteriEXT( void *args ) { struct glNamedFramebufferParameteriEXT_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glNamedFramebufferParameteriEXT) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glNamedFramebufferParameteriEXT( params->framebuffer, params->pname, params->param ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glNamedFramebufferParameteriEXT( framebuffer, params->pname, params->param ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -17731,10 +17750,11 @@ static NTSTATUS ext_glNamedFramebufferRenderbufferEXT( void *args ) static NTSTATUS ext_glNamedFramebufferSampleLocationsfvARB( void *args ) { struct glNamedFramebufferSampleLocationsfvARB_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glNamedFramebufferSampleLocationsfvARB) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glNamedFramebufferSampleLocationsfvARB( params->framebuffer, params->start, params->count, params->v ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glNamedFramebufferSampleLocationsfvARB( framebuffer, params->start, params->count, params->v ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -17742,10 +17762,11 @@ static NTSTATUS ext_glNamedFramebufferSampleLocationsfvARB( void *args ) static NTSTATUS ext_glNamedFramebufferSampleLocationsfvNV( void *args ) { struct glNamedFramebufferSampleLocationsfvNV_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glNamedFramebufferSampleLocationsfvNV) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glNamedFramebufferSampleLocationsfvNV( params->framebuffer, params->start, params->count, params->v ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glNamedFramebufferSampleLocationsfvNV( framebuffer, params->start, params->count, params->v ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -17753,10 +17774,11 @@ static NTSTATUS ext_glNamedFramebufferSampleLocationsfvNV( void *args ) static NTSTATUS ext_glNamedFramebufferSamplePositionsfvAMD( void *args ) { struct glNamedFramebufferSamplePositionsfvAMD_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glNamedFramebufferSamplePositionsfvAMD) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glNamedFramebufferSamplePositionsfvAMD( params->framebuffer, params->numsamples, params->pixelindex, params->values ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glNamedFramebufferSamplePositionsfvAMD( framebuffer, params->numsamples, params->pixelindex, params->values ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -17844,10 +17866,11 @@ static NTSTATUS ext_glNamedFramebufferTextureLayerEXT( void *args ) static NTSTATUS ext_glNamedFramebufferTextureMultiviewOVR( void *args ) { struct glNamedFramebufferTextureMultiviewOVR_params *params = args; + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = params->teb->glTable; if (!funcs->p_glNamedFramebufferTextureMultiviewOVR) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glNamedFramebufferTextureMultiviewOVR( params->framebuffer, params->attachment, params->texture, params->level, params->baseViewIndex, params->numViews ); + if (!framebuffer) framebuffer = get_default_fbo( params->teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glNamedFramebufferTextureMultiviewOVR( framebuffer, params->attachment, params->texture, params->level, params->baseViewIndex, params->numViews ); set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -40246,10 +40269,11 @@ static NTSTATUS wow64_ext_glBindFramebuffer( void *args ) GLuint framebuffer; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glBindFramebuffer) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, params->target ); - funcs->p_glBindFramebuffer( params->target, params->framebuffer ); + if (!framebuffer) framebuffer = get_default_fbo( teb, params->target ); + funcs->p_glBindFramebuffer( params->target, framebuffer ); set_current_fbo( teb, params->target, params->framebuffer ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; @@ -40264,10 +40288,11 @@ static NTSTATUS wow64_ext_glBindFramebufferEXT( void *args ) GLuint framebuffer; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glBindFramebufferEXT) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, params->target ); - funcs->p_glBindFramebufferEXT( params->target, params->framebuffer ); + if (!framebuffer) framebuffer = get_default_fbo( teb, params->target ); + funcs->p_glBindFramebufferEXT( params->target, framebuffer ); set_current_fbo( teb, params->target, params->framebuffer ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; @@ -41514,11 +41539,13 @@ static NTSTATUS wow64_ext_glBlitNamedFramebuffer( void *args ) GLenum filter; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint readFramebuffer = params->readFramebuffer; + GLuint drawFramebuffer = params->drawFramebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glBlitNamedFramebuffer) return STATUS_NOT_IMPLEMENTED; - if (!params->readFramebuffer) params->readFramebuffer = get_default_fbo( teb, GL_READ_FRAMEBUFFER ); - if (!params->drawFramebuffer) params->drawFramebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glBlitNamedFramebuffer( params->readFramebuffer, params->drawFramebuffer, params->srcX0, params->srcY0, params->srcX1, params->srcY1, params->dstX0, params->dstY0, params->dstX1, params->dstY1, params->mask, params->filter ); + if (!readFramebuffer) readFramebuffer = get_default_fbo( teb, GL_READ_FRAMEBUFFER ); + if (!drawFramebuffer) drawFramebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glBlitNamedFramebuffer( readFramebuffer, drawFramebuffer, params->srcX0, params->srcY0, params->srcX1, params->srcY1, params->dstX0, params->dstY0, params->dstX1, params->dstY1, params->mask, params->filter ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -41842,10 +41869,11 @@ static NTSTATUS wow64_ext_glCheckNamedFramebufferStatus( void *args ) GLenum ret; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glCheckNamedFramebufferStatus) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, params->target ); - params->ret = funcs->p_glCheckNamedFramebufferStatus( params->framebuffer, params->target ); + if (!framebuffer) framebuffer = get_default_fbo( teb, params->target ); + params->ret = funcs->p_glCheckNamedFramebufferStatus( framebuffer, params->target ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -41860,10 +41888,11 @@ static NTSTATUS wow64_ext_glCheckNamedFramebufferStatusEXT( void *args ) GLenum ret; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glCheckNamedFramebufferStatusEXT) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, params->target ); - params->ret = funcs->p_glCheckNamedFramebufferStatusEXT( params->framebuffer, params->target ); + if (!framebuffer) framebuffer = get_default_fbo( teb, params->target ); + params->ret = funcs->p_glCheckNamedFramebufferStatusEXT( framebuffer, params->target ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -42266,10 +42295,11 @@ static NTSTATUS wow64_ext_glClearNamedFramebufferfi( void *args ) GLint stencil; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glClearNamedFramebufferfi) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glClearNamedFramebufferfi( params->framebuffer, params->buffer, params->drawbuffer, params->depth, params->stencil ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glClearNamedFramebufferfi( framebuffer, params->buffer, params->drawbuffer, params->depth, params->stencil ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -42285,10 +42315,11 @@ static NTSTATUS wow64_ext_glClearNamedFramebufferfv( void *args ) PTR32 value; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glClearNamedFramebufferfv) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glClearNamedFramebufferfv( params->framebuffer, params->buffer, params->drawbuffer, ULongToPtr(params->value) ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glClearNamedFramebufferfv( framebuffer, params->buffer, params->drawbuffer, ULongToPtr(params->value) ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -42304,10 +42335,11 @@ static NTSTATUS wow64_ext_glClearNamedFramebufferiv( void *args ) PTR32 value; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glClearNamedFramebufferiv) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glClearNamedFramebufferiv( params->framebuffer, params->buffer, params->drawbuffer, ULongToPtr(params->value) ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glClearNamedFramebufferiv( framebuffer, params->buffer, params->drawbuffer, ULongToPtr(params->value) ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -42323,10 +42355,11 @@ static NTSTATUS wow64_ext_glClearNamedFramebufferuiv( void *args ) PTR32 value; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glClearNamedFramebufferuiv) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glClearNamedFramebufferuiv( params->framebuffer, params->buffer, params->drawbuffer, ULongToPtr(params->value) ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glClearNamedFramebufferuiv( framebuffer, params->buffer, params->drawbuffer, ULongToPtr(params->value) ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -53033,10 +53066,11 @@ static NTSTATUS wow64_ext_glGetNamedFramebufferAttachmentParameteriv( void *args PTR32 params; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glGetNamedFramebufferAttachmentParameteriv) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glGetNamedFramebufferAttachmentParameteriv( params->framebuffer, params->attachment, params->pname, ULongToPtr(params->params) ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glGetNamedFramebufferAttachmentParameteriv( framebuffer, params->attachment, params->pname, ULongToPtr(params->params) ); return STATUS_SUCCESS; } @@ -53051,10 +53085,11 @@ static NTSTATUS wow64_ext_glGetNamedFramebufferAttachmentParameterivEXT( void *a PTR32 params; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glGetNamedFramebufferAttachmentParameterivEXT) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glGetNamedFramebufferAttachmentParameterivEXT( params->framebuffer, params->attachment, params->pname, ULongToPtr(params->params) ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glGetNamedFramebufferAttachmentParameterivEXT( framebuffer, params->attachment, params->pname, ULongToPtr(params->params) ); return STATUS_SUCCESS; } @@ -53071,10 +53106,11 @@ static NTSTATUS wow64_ext_glGetNamedFramebufferParameterfvAMD( void *args ) PTR32 values; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glGetNamedFramebufferParameterfvAMD) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glGetNamedFramebufferParameterfvAMD( params->framebuffer, params->pname, params->numsamples, params->pixelindex, params->size, ULongToPtr(params->values) ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glGetNamedFramebufferParameterfvAMD( framebuffer, params->pname, params->numsamples, params->pixelindex, params->size, ULongToPtr(params->values) ); return STATUS_SUCCESS; } @@ -53088,10 +53124,11 @@ static NTSTATUS wow64_ext_glGetNamedFramebufferParameteriv( void *args ) PTR32 param; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glGetNamedFramebufferParameteriv) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glGetNamedFramebufferParameteriv( params->framebuffer, params->pname, ULongToPtr(params->param) ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glGetNamedFramebufferParameteriv( framebuffer, params->pname, ULongToPtr(params->param) ); return STATUS_SUCCESS; } @@ -53105,10 +53142,11 @@ static NTSTATUS wow64_ext_glGetNamedFramebufferParameterivEXT( void *args ) PTR32 params; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glGetNamedFramebufferParameterivEXT) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glGetNamedFramebufferParameterivEXT( params->framebuffer, params->pname, ULongToPtr(params->params) ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glGetNamedFramebufferParameterivEXT( framebuffer, params->pname, ULongToPtr(params->params) ); return STATUS_SUCCESS; } @@ -58076,10 +58114,11 @@ static NTSTATUS wow64_ext_glInvalidateNamedFramebufferData( void *args ) PTR32 attachments; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glInvalidateNamedFramebufferData) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glInvalidateNamedFramebufferData( params->framebuffer, params->numAttachments, ULongToPtr(params->attachments) ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glInvalidateNamedFramebufferData( framebuffer, params->numAttachments, ULongToPtr(params->attachments) ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -58098,10 +58137,11 @@ static NTSTATUS wow64_ext_glInvalidateNamedFramebufferSubData( void *args ) GLsizei height; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glInvalidateNamedFramebufferSubData) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glInvalidateNamedFramebufferSubData( params->framebuffer, params->numAttachments, ULongToPtr(params->attachments), params->x, params->y, params->width, params->height ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glInvalidateNamedFramebufferSubData( framebuffer, params->numAttachments, ULongToPtr(params->attachments), params->x, params->y, params->width, params->height ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -64529,10 +64569,11 @@ static NTSTATUS wow64_ext_glNamedFramebufferParameteri( void *args ) GLint param; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glNamedFramebufferParameteri) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glNamedFramebufferParameteri( params->framebuffer, params->pname, params->param ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glNamedFramebufferParameteri( framebuffer, params->pname, params->param ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -64547,10 +64588,11 @@ static NTSTATUS wow64_ext_glNamedFramebufferParameteriEXT( void *args ) GLint param; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glNamedFramebufferParameteriEXT) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glNamedFramebufferParameteriEXT( params->framebuffer, params->pname, params->param ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glNamedFramebufferParameteriEXT( framebuffer, params->pname, params->param ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -64618,10 +64660,11 @@ static NTSTATUS wow64_ext_glNamedFramebufferSampleLocationsfvARB( void *args ) PTR32 v; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glNamedFramebufferSampleLocationsfvARB) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glNamedFramebufferSampleLocationsfvARB( params->framebuffer, params->start, params->count, ULongToPtr(params->v) ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glNamedFramebufferSampleLocationsfvARB( framebuffer, params->start, params->count, ULongToPtr(params->v) ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -64637,10 +64680,11 @@ static NTSTATUS wow64_ext_glNamedFramebufferSampleLocationsfvNV( void *args ) PTR32 v; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glNamedFramebufferSampleLocationsfvNV) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glNamedFramebufferSampleLocationsfvNV( params->framebuffer, params->start, params->count, ULongToPtr(params->v) ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glNamedFramebufferSampleLocationsfvNV( framebuffer, params->start, params->count, ULongToPtr(params->v) ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -64656,10 +64700,11 @@ static NTSTATUS wow64_ext_glNamedFramebufferSamplePositionsfvAMD( void *args ) PTR32 values; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glNamedFramebufferSamplePositionsfvAMD) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glNamedFramebufferSamplePositionsfvAMD( params->framebuffer, params->numsamples, params->pixelindex, ULongToPtr(params->values) ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glNamedFramebufferSamplePositionsfvAMD( framebuffer, params->numsamples, params->pixelindex, ULongToPtr(params->values) ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -64828,10 +64873,11 @@ static NTSTATUS wow64_ext_glNamedFramebufferTextureMultiviewOVR( void *args ) GLsizei numViews; } *params = args; TEB *teb = get_teb64( params->teb ); + GLuint framebuffer = params->framebuffer; const struct opengl_funcs *funcs = teb->glTable; if (!funcs->p_glNamedFramebufferTextureMultiviewOVR) return STATUS_NOT_IMPLEMENTED; - if (!params->framebuffer) params->framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); - funcs->p_glNamedFramebufferTextureMultiviewOVR( params->framebuffer, params->attachment, params->texture, params->level, params->baseViewIndex, params->numViews ); + if (!framebuffer) framebuffer = get_default_fbo( teb, GL_DRAW_FRAMEBUFFER ); + funcs->p_glNamedFramebufferTextureMultiviewOVR( framebuffer, params->attachment, params->texture, params->level, params->baseViewIndex, params->numViews ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10046