From: Jacek Caban jacek@codeweavers.com
--- dlls/opengl32/make_opengl | 8 ++--- dlls/opengl32/unix_thunks.c | 14 ++++----- dlls/opengl32/unix_thunks.h | 18 +++++------ dlls/opengl32/unix_wgl.c | 60 +++++++++++++++++-------------------- 4 files changed, 48 insertions(+), 52 deletions(-)
diff --git a/dlls/opengl32/make_opengl b/dlls/opengl32/make_opengl index 3ca110c7ddc..86bd20aefc7 100755 --- a/dlls/opengl32/make_opengl +++ b/dlls/opengl32/make_opengl @@ -529,8 +529,8 @@ sub generate_unix_thunk($$$$) } elsif ($ptype eq "PTR32") { - $ret_expr .= "(UINT_PTR)" unless $ret_type =~ /*/; - $need_manual_thunk = 1 if $ret_type =~ /(GLsync|PROC|GLintptr|*)/; + $ret_expr .= "(UINT_PTR)"; + $need_manual_thunk = 1; } } $ret .= " } *params = args;\n"; @@ -637,9 +637,9 @@ sub generate_wrapper_declaration($$$) my $decl_args = get_func_args( $func, 0 ); my $ret_type = get_func_ret( $func, 0 ); my $ret = "extern "; - $ret_type = "PTR32" if $is_wow64 && $ret_type =~ /*/; $ret .= $ret_type; - $ret .= $is_wow64 ? " wow64_" : " wrap_"; + $ret .= " " unless $ret_type =~ /*$/; + $ret .= $is_wow64 ? "wow64_" : "wrap_"; $ret .= "$name( TEB *teb,"; foreach my $arg (@{$func->[1]}) { diff --git a/dlls/opengl32/unix_thunks.c b/dlls/opengl32/unix_thunks.c index a0e4e9c14c6..c6e9ecdf2de 100644 --- a/dlls/opengl32/unix_thunks.c +++ b/dlls/opengl32/unix_thunks.c @@ -54194,7 +54194,7 @@ static NTSTATUS wow64_ext_glMapBuffer( void *args ) PTR32 ret; } *params = args; TEB *teb = get_teb64( params->teb ); - params->ret = wow64_glMapBuffer( teb, params->target, params->access ); + params->ret = (UINT_PTR)wow64_glMapBuffer( teb, params->target, params->access ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -54209,7 +54209,7 @@ static NTSTATUS wow64_ext_glMapBufferARB( void *args ) PTR32 ret; } *params = args; TEB *teb = get_teb64( params->teb ); - params->ret = wow64_glMapBufferARB( teb, params->target, params->access ); + params->ret = (UINT_PTR)wow64_glMapBufferARB( teb, params->target, params->access ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -54226,7 +54226,7 @@ static NTSTATUS wow64_ext_glMapBufferRange( void *args ) PTR32 ret; } *params = args; TEB *teb = get_teb64( params->teb ); - params->ret = wow64_glMapBufferRange( teb, params->target, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length), params->access ); + params->ret = (UINT_PTR)wow64_glMapBufferRange( teb, params->target, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length), params->access ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -54297,7 +54297,7 @@ static NTSTATUS wow64_ext_glMapNamedBuffer( void *args ) PTR32 ret; } *params = args; TEB *teb = get_teb64( params->teb ); - params->ret = wow64_glMapNamedBuffer( teb, params->buffer, params->access ); + params->ret = (UINT_PTR)wow64_glMapNamedBuffer( teb, params->buffer, params->access ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -54312,7 +54312,7 @@ static NTSTATUS wow64_ext_glMapNamedBufferEXT( void *args ) PTR32 ret; } *params = args; TEB *teb = get_teb64( params->teb ); - params->ret = wow64_glMapNamedBufferEXT( teb, params->buffer, params->access ); + params->ret = (UINT_PTR)wow64_glMapNamedBufferEXT( teb, params->buffer, params->access ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -54329,7 +54329,7 @@ static NTSTATUS wow64_ext_glMapNamedBufferRange( void *args ) PTR32 ret; } *params = args; TEB *teb = get_teb64( params->teb ); - params->ret = wow64_glMapNamedBufferRange( teb, params->buffer, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length), params->access ); + params->ret = (UINT_PTR)wow64_glMapNamedBufferRange( teb, params->buffer, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length), params->access ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } @@ -54346,7 +54346,7 @@ static NTSTATUS wow64_ext_glMapNamedBufferRangeEXT( void *args ) PTR32 ret; } *params = args; TEB *teb = get_teb64( params->teb ); - params->ret = wow64_glMapNamedBufferRangeEXT( teb, params->buffer, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length), params->access ); + params->ret = (UINT_PTR)wow64_glMapNamedBufferRangeEXT( teb, params->buffer, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length), params->access ); set_context_attribute( teb, -1 /* unsupported */, NULL, 0 ); return STATUS_SUCCESS; } diff --git a/dlls/opengl32/unix_thunks.h b/dlls/opengl32/unix_thunks.h index f06960ba97b..4bf2d13c476 100644 --- a/dlls/opengl32/unix_thunks.h +++ b/dlls/opengl32/unix_thunks.h @@ -18,7 +18,7 @@ extern void wrap_glGetBooleanv( TEB *teb, GLenum pname, GLboolean *data ); extern void wrap_glGetDoublev( TEB *teb, GLenum pname, GLdouble *data ); extern void wrap_glGetFloatv( TEB *teb, GLenum pname, GLfloat *data ); extern void wrap_glGetIntegerv( TEB *teb, GLenum pname, GLint *data ); -extern const GLubyte * wrap_glGetString( TEB *teb, GLenum name ); +extern const GLubyte *wrap_glGetString( TEB *teb, GLenum name ); extern void wrap_glReadBuffer( TEB *teb, GLenum src ); extern void wrap_glReadPixels( TEB *teb, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels ); extern void wrap_glViewport( TEB *teb, GLint x, GLint y, GLsizei width, GLsizei height ); @@ -31,7 +31,7 @@ extern void wrap_glFramebufferDrawBuffersEXT( TEB *teb, GLuint framebuffer, GLsi extern void wrap_glFramebufferReadBufferEXT( TEB *teb, GLuint framebuffer, GLenum mode ); extern void wrap_glGetFramebufferParameterivEXT( TEB *teb, GLuint framebuffer, GLenum pname, GLint *params ); extern void wrap_glGetInteger64v( TEB *teb, GLenum pname, GLint64 *data ); -extern const GLubyte * wrap_glGetStringi( TEB *teb, GLenum name, GLuint index ); +extern const GLubyte *wrap_glGetStringi( TEB *teb, GLenum name, GLuint index ); extern void wrap_glNamedFramebufferDrawBuffer( TEB *teb, GLuint framebuffer, GLenum buf ); extern void wrap_glNamedFramebufferDrawBuffers( TEB *teb, GLuint framebuffer, GLsizei n, const GLenum *bufs ); extern void wrap_glNamedFramebufferReadBuffer( TEB *teb, GLuint framebuffer, GLenum src ); @@ -62,13 +62,13 @@ extern void wow64_glGetNamedBufferPointerv( TEB *teb, GLuint buffer, GLenum pnam extern void wow64_glGetNamedBufferPointervEXT( TEB *teb, GLuint buffer, GLenum pname, PTR32 *params ); extern void wow64_glGetSynciv( TEB *teb, GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values ); extern GLboolean wow64_glIsSync( TEB *teb, GLsync sync ); -extern PTR32 wow64_glMapBuffer( TEB *teb, GLenum target, GLenum access ); -extern PTR32 wow64_glMapBufferARB( TEB *teb, GLenum target, GLenum access ); -extern PTR32 wow64_glMapBufferRange( TEB *teb, GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ); -extern PTR32 wow64_glMapNamedBuffer( TEB *teb, GLuint buffer, GLenum access ); -extern PTR32 wow64_glMapNamedBufferEXT( TEB *teb, GLuint buffer, GLenum access ); -extern PTR32 wow64_glMapNamedBufferRange( TEB *teb, GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access ); -extern PTR32 wow64_glMapNamedBufferRangeEXT( TEB *teb, GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access ); +extern void *wow64_glMapBuffer( TEB *teb, GLenum target, GLenum access ); +extern void *wow64_glMapBufferARB( TEB *teb, GLenum target, GLenum access ); +extern void *wow64_glMapBufferRange( TEB *teb, GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ); +extern void *wow64_glMapNamedBuffer( TEB *teb, GLuint buffer, GLenum access ); +extern void *wow64_glMapNamedBufferEXT( TEB *teb, GLuint buffer, GLenum access ); +extern void *wow64_glMapNamedBufferRange( TEB *teb, GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access ); +extern void *wow64_glMapNamedBufferRangeEXT( TEB *teb, GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access ); extern void wow64_glNamedBufferStorage( TEB *teb, GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags ); extern void wow64_glNamedBufferStorageEXT( TEB *teb, GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags ); extern GLboolean wow64_glUnmapBuffer( TEB *teb, GLenum target ); diff --git a/dlls/opengl32/unix_wgl.c b/dlls/opengl32/unix_wgl.c index 085df429202..8b14612fc11 100644 --- a/dlls/opengl32/unix_wgl.c +++ b/dlls/opengl32/unix_wgl.c @@ -2495,13 +2495,13 @@ static struct buffer *create_buffer_storage( TEB *teb, GLenum target, GLuint nam return buffer; }
-static PTR32 wow64_map_buffer( TEB *teb, struct buffer *buffer, GLenum target, GLuint name, GLintptr offset, +static void *wow64_map_buffer( TEB *teb, struct buffer *buffer, GLenum target, GLuint name, GLintptr offset, size_t length, GLbitfield access, void *ptr ) { if (buffer && buffer->map_ptr) { set_gl_error( teb, GL_INVALID_OPERATION ); - return 0; + return NULL; }
if (buffer && buffer->vk_memory) @@ -2522,27 +2522,27 @@ static PTR32 wow64_map_buffer( TEB *teb, struct buffer *buffer, GLenum target, G struct context *ctx = get_current_context( teb, NULL, NULL ); struct vk_device *vk_device = ctx->buffers->vk_device;
- if (!buffer_vm_alloc( teb, buffer, buffer->size )) return 0; + if (!buffer_vm_alloc( teb, buffer, buffer->size )) return NULL; placed_info.pPlacedAddress = buffer->vm_ptr; vr = vk_device->p_vkMapMemory2KHR( vk_device->vk_device, &map_info, &buffer->host_ptr ); if (vr) { ERR( "vkMapMemory2KHR failed: %d\n", vr ); - return 0; + return NULL; } assert( buffer->host_ptr == buffer->vm_ptr ); buffer->map_ptr = (char *)buffer->vm_ptr + offset; TRACE( "returning vk mapping %p\n", buffer->map_ptr ); - return PtrToUlong( buffer->map_ptr ); + return buffer->map_ptr; }
- if (!ptr) return 0; + if (!ptr) return NULL;
if (!buffer) { struct context *ctx = get_current_context( teb, NULL, NULL );
- if (!(buffer = calloc( 1, sizeof(*buffer) ))) return 0; + if (!(buffer = calloc( 1, sizeof(*buffer) ))) return NULL; buffer->name = name ? name : get_target_name( teb, target ); buffer->size = name ? get_named_buffer_param( teb, name, GL_BUFFER_SIZE ) : get_buffer_param( teb, target, GL_BUFFER_SIZE ); rb_put( &ctx->buffers->map, &buffer->name, &buffer->entry ); @@ -2555,7 +2555,7 @@ static PTR32 wow64_map_buffer( TEB *teb, struct buffer *buffer, GLenum target, G { buffer->map_ptr = ptr; TRACE( "returning %p\n", buffer->map_ptr ); - return PtrToUlong( buffer->map_ptr ); + return buffer->map_ptr; }
if (access & GL_MAP_PERSISTENT_BIT) @@ -2578,7 +2578,7 @@ static PTR32 wow64_map_buffer( TEB *teb, struct buffer *buffer, GLenum target, G memcpy( buffer->map_ptr, buffer->host_ptr, length ); } TRACE( "returning copy buffer %p\n", buffer->map_ptr ); - return PtrToUlong( buffer->map_ptr ); + return buffer->map_ptr;
unmap: if (name) @@ -2701,97 +2701,93 @@ void wow64_glGetNamedBufferPointervEXT( TEB *teb, GLuint buffer, GLenum pname, P *params = PtrToUlong(ptr); }
-static PTR32 wow64_gl_map_buffer( TEB *teb, GLenum target, GLenum access, PFN_glMapBuffer gl_map_buffer64 ) +static void *wow64_gl_map_buffer( TEB *teb, GLenum target, GLenum access, PFN_glMapBuffer gl_map_buffer64 ) { GLbitfield range_access = map_range_flags_from_map_flags( access ); struct buffer *buffer; void *ptr = NULL; - PTR32 ret ;
pthread_mutex_lock( &wgl_lock ); buffer = get_target_buffer( teb, target ); if (!buffer || !buffer->vk_memory) ptr = gl_map_buffer64( target, access ); - ret = wow64_map_buffer( teb, buffer, target, 0, 0, 0, range_access, ptr ); + ptr = wow64_map_buffer( teb, buffer, target, 0, 0, 0, range_access, ptr ); pthread_mutex_unlock( &wgl_lock ); - return ret; + return ptr; }
-PTR32 wow64_glMapBuffer( TEB *teb, GLenum target, GLenum access ) +void *wow64_glMapBuffer( TEB *teb, GLenum target, GLenum access ) { const struct opengl_funcs *funcs = teb->glTable; return wow64_gl_map_buffer( teb, target, access, funcs->p_glMapBuffer ); }
-PTR32 wow64_glMapBufferARB( TEB *teb, GLenum target, GLenum access ) +void *wow64_glMapBufferARB( TEB *teb, GLenum target, GLenum access ) { const struct opengl_funcs *funcs = teb->glTable; return wow64_gl_map_buffer( teb, target, access, funcs->p_glMapBufferARB ); }
-PTR32 wow64_glMapBufferRange( TEB *teb, GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ) +void *wow64_glMapBufferRange( TEB *teb, GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ) { const struct opengl_funcs *funcs = teb->glTable; struct buffer *buffer; void *ptr = NULL; - PTR32 ret;
pthread_mutex_lock( &wgl_lock ); buffer = get_target_buffer( teb, target ); if (!buffer || !buffer->vk_memory) ptr = funcs->p_glMapBufferRange( target, offset, length, access ); - ret = wow64_map_buffer( teb, buffer, target, 0, offset, length, access, ptr ); + ptr = wow64_map_buffer( teb, buffer, target, 0, offset, length, access, ptr ); pthread_mutex_unlock( &wgl_lock ); - return ret; + return ptr; }
-static PTR32 wow64_gl_map_named_buffer( TEB *teb, GLuint name, GLenum access, PFN_glMapNamedBuffer gl_map_named_buffer64 ) +static void *wow64_gl_map_named_buffer( TEB *teb, GLuint name, GLenum access, PFN_glMapNamedBuffer gl_map_named_buffer64 ) { GLbitfield range_access = map_range_flags_from_map_flags( access ); struct buffer *buffer; void *ptr = NULL; - PTR32 ret;
pthread_mutex_lock( &wgl_lock ); buffer = get_named_buffer( teb, name ); if (!buffer || !buffer->vk_memory) ptr = gl_map_named_buffer64( name, access ); - ret = wow64_map_buffer( teb, buffer, 0, name, 0, 0, range_access, ptr ); + ptr = wow64_map_buffer( teb, buffer, 0, name, 0, 0, range_access, ptr ); pthread_mutex_unlock( &wgl_lock ); - return ret; + return ptr; }
-PTR32 wow64_glMapNamedBuffer( TEB *teb, GLuint buffer, GLenum access ) +void *wow64_glMapNamedBuffer( TEB *teb, GLuint buffer, GLenum access ) { const struct opengl_funcs *funcs = teb->glTable; return wow64_gl_map_named_buffer( teb, buffer, access, funcs->p_glMapNamedBuffer ); }
-PTR32 wow64_glMapNamedBufferEXT( TEB *teb, GLuint buffer, GLenum access ) +void *wow64_glMapNamedBufferEXT( TEB *teb, GLuint buffer, GLenum access ) { const struct opengl_funcs *funcs = teb->glTable; return wow64_gl_map_named_buffer( teb, buffer, access, funcs->p_glMapNamedBufferEXT ); }
-static NTSTATUS wow64_gl_map_named_buffer_range( TEB *teb, GLuint name, GLintptr offset, GLsizeiptr length, GLbitfield access, - PFN_glMapNamedBufferRange gl_map_named_buffer_range64 ) +static void *wow64_gl_map_named_buffer_range( TEB *teb, GLuint name, GLintptr offset, GLsizeiptr length, GLbitfield access, + PFN_glMapNamedBufferRange gl_map_named_buffer_range64 ) { struct buffer *buffer; void *ptr = NULL; - PTR32 ret;
pthread_mutex_lock( &wgl_lock ); buffer = get_named_buffer( teb, name ); if (!buffer || !buffer->vk_memory) ptr = gl_map_named_buffer_range64( name, offset, length, access ); - ret = wow64_map_buffer( teb, buffer, 0, name, offset, length, access, ptr ); + ptr = wow64_map_buffer( teb, buffer, 0, name, offset, length, access, ptr ); pthread_mutex_unlock( &wgl_lock ); - return ret; + return ptr; }
-PTR32 wow64_glMapNamedBufferRange( TEB *teb, GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access ) +void *wow64_glMapNamedBufferRange( TEB *teb, GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access ) { const struct opengl_funcs *funcs = teb->glTable; return wow64_gl_map_named_buffer_range( teb, buffer, offset, length, access, funcs->p_glMapNamedBufferRange ); }
-PTR32 wow64_glMapNamedBufferRangeEXT( TEB *teb, GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access ) +void *wow64_glMapNamedBufferRangeEXT( TEB *teb, GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access ) { const struct opengl_funcs *funcs = teb->glTable; return wow64_gl_map_named_buffer_range( teb, buffer, offset, length, access, funcs->p_glMapNamedBufferRangeEXT );