Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/wined3d/adapter_vk.c | 16 +++++++++------- dlls/wined3d/buffer.c | 8 ++++---- dlls/wined3d/context_gl.c | 13 +++++++------ dlls/wined3d/directx.c | 8 ++++---- dlls/wined3d/surface.c | 4 ++-- dlls/wined3d/texture.c | 22 +++++++++++----------- dlls/wined3d/view.c | 6 +++--- dlls/wined3d/wined3d_private.h | 7 ++++--- 8 files changed, 44 insertions(+), 40 deletions(-)
diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index db94187e774..fa0097cd8fa 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -960,8 +960,9 @@ static void *adapter_vk_map_bo_address(struct wined3d_context *context, VkMappedMemoryRange range; void *map_ptr;
- if (!(bo = (struct wined3d_bo_vk *)data->buffer_object)) + if (!data->buffer_object) return data->addr; + bo = wined3d_bo_vk(data->buffer_object);
vk_info = context_vk->vk_info; device_vk = wined3d_device_vk(context->device); @@ -1065,8 +1066,9 @@ static void adapter_vk_unmap_bo_address(struct wined3d_context *context, struct wined3d_bo_vk *bo; unsigned int i;
- if (!(bo = (struct wined3d_bo_vk *)data->buffer_object)) + if (!data->buffer_object) return; + bo = wined3d_bo_vk(data->buffer_object);
if (!bo->b.coherent) { @@ -1092,8 +1094,8 @@ void adapter_vk_copy_bo_address(struct wined3d_context *context, void *dst_ptr, *src_ptr; VkBufferCopy region;
- src_bo = (struct wined3d_bo_vk *)src->buffer_object; - dst_bo = (struct wined3d_bo_vk *)dst->buffer_object; + src_bo = src->buffer_object ? wined3d_bo_vk(src->buffer_object) : NULL; + dst_bo = dst->buffer_object ? wined3d_bo_vk(dst->buffer_object) : NULL;
if (dst_bo && !dst->addr && size == dst_bo->size) map_flags |= WINED3D_MAP_DISCARD; @@ -1164,7 +1166,7 @@ void adapter_vk_copy_bo_address(struct wined3d_context *context, return; }
- staging.buffer_object = (uintptr_t)&staging_bo; + staging.buffer_object = &staging_bo.b; staging.addr = NULL; adapter_vk_copy_bo_address(context, &staging, src, size); adapter_vk_copy_bo_address(context, dst, &staging, size); @@ -1184,7 +1186,7 @@ void adapter_vk_copy_bo_address(struct wined3d_context *context, return; }
- staging.buffer_object = (uintptr_t)&staging_bo; + staging.buffer_object = &staging_bo.b; staging.addr = NULL; adapter_vk_copy_bo_address(context, &staging, src, size); adapter_vk_copy_bo_address(context, dst, &staging, size); @@ -1251,7 +1253,7 @@ static bool adapter_vk_alloc_bo(struct wined3d_device *device, struct wined3d_re ERR("Failed to map bo.\n"); }
- addr->buffer_object = (uintptr_t)bo_vk; + addr->buffer_object = &bo_vk->b; addr->addr = NULL; return true; } diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c index d5840a488b5..b07f1510b74 100644 --- a/dlls/wined3d/buffer.c +++ b/dlls/wined3d/buffer.c @@ -665,7 +665,7 @@ DWORD wined3d_buffer_get_memory(struct wined3d_buffer *buffer, struct wined3d_co } if (locations & WINED3D_LOCATION_BUFFER) { - data->buffer_object = (uintptr_t)buffer->buffer_object; + data->buffer_object = buffer->buffer_object; data->addr = NULL; return WINED3D_LOCATION_BUFFER; } @@ -977,7 +977,7 @@ static HRESULT buffer_resource_sub_resource_map(struct wined3d_resource *resourc
if (count == 1) { - addr.buffer_object = (uintptr_t)buffer->buffer_object; + addr.buffer_object = buffer->buffer_object; addr.addr = 0; buffer->map_ptr = wined3d_context_map_bo_address(context, &addr, resource->size, flags); /* We are accessing buffer->resource.client from the CS thread, @@ -1057,7 +1057,7 @@ static HRESULT buffer_resource_sub_resource_unmap(struct wined3d_resource *resou
context = context_acquire(device, NULL, 0);
- addr.buffer_object = (uintptr_t)buffer->buffer_object; + addr.buffer_object = buffer->buffer_object; addr.addr = 0; wined3d_context_unmap_bo_address(context, &addr, range_count, buffer->maps);
@@ -1587,7 +1587,7 @@ static void wined3d_buffer_vk_upload_ranges(struct wined3d_buffer *buffer, struc if (!range_count) return;
- dst.buffer_object = (uintptr_t)buffer->buffer_object; + dst.buffer_object = buffer->buffer_object; dst.addr = NULL;
flags = WINED3D_MAP_WRITE; diff --git a/dlls/wined3d/context_gl.c b/dlls/wined3d/context_gl.c index 210d8e0b925..e91bff9328b 100644 --- a/dlls/wined3d/context_gl.c +++ b/dlls/wined3d/context_gl.c @@ -2729,13 +2729,13 @@ map: void *wined3d_context_gl_map_bo_address(struct wined3d_context_gl *context_gl, const struct wined3d_bo_address *data, size_t size, uint32_t flags) { - struct wined3d_bo_gl *bo; + struct wined3d_bo *bo; void *map_ptr;
- if (!(bo = (struct wined3d_bo_gl *)data->buffer_object)) + if (!(bo = data->buffer_object)) return data->addr;
- if (!(map_ptr = wined3d_bo_gl_map(bo, context_gl, (uintptr_t)data->addr, size, flags))) + if (!(map_ptr = wined3d_bo_gl_map(wined3d_bo_gl(bo), context_gl, (uintptr_t)data->addr, size, flags))) ERR("Failed to map bo.\n");
return map_ptr; @@ -2782,8 +2782,9 @@ void wined3d_context_gl_unmap_bo_address(struct wined3d_context_gl *context_gl, const struct wined3d_gl_info *gl_info; struct wined3d_bo_gl *bo;
- if (!(bo = (struct wined3d_bo_gl *)data->buffer_object)) + if (!data->buffer_object) return; + bo = wined3d_bo_gl(data->buffer_object);
flush_bo_ranges(context_gl, wined3d_const_bo_address(data), range_count, ranges);
@@ -2816,8 +2817,8 @@ void wined3d_context_gl_copy_bo_address(struct wined3d_context_gl *context_gl, BYTE *dst_ptr, *src_ptr;
gl_info = context_gl->gl_info; - src_bo = (struct wined3d_bo_gl *)src->buffer_object; - dst_bo = (struct wined3d_bo_gl *)dst->buffer_object; + src_bo = src->buffer_object ? wined3d_bo_gl(src->buffer_object) : NULL; + dst_bo = dst->buffer_object ? wined3d_bo_gl(dst->buffer_object) : NULL;
if (dst_bo && src_bo) { diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 06387452b89..40567cf1a2c 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -2774,7 +2774,7 @@ static void *adapter_no3d_map_bo_address(struct wined3d_context *context, { if (data->buffer_object) { - ERR("Unsupported buffer object %#lx.\n", data->buffer_object); + ERR("Unsupported buffer object %p.\n", data->buffer_object); return NULL; }
@@ -2785,16 +2785,16 @@ static void adapter_no3d_unmap_bo_address(struct wined3d_context *context, const struct wined3d_bo_address *data, unsigned int range_count, const struct wined3d_range *ranges) { if (data->buffer_object) - ERR("Unsupported buffer object %#lx.\n", data->buffer_object); + ERR("Unsupported buffer object %p.\n", data->buffer_object); }
static void adapter_no3d_copy_bo_address(struct wined3d_context *context, const struct wined3d_bo_address *dst, const struct wined3d_bo_address *src, size_t size) { if (dst->buffer_object) - ERR("Unsupported dst buffer object %#lx.\n", dst->buffer_object); + ERR("Unsupported dst buffer object %p.\n", dst->buffer_object); if (src->buffer_object) - ERR("Unsupported src buffer object %#lx.\n", src->buffer_object); + ERR("Unsupported src buffer object %p.\n", src->buffer_object); if (dst->buffer_object || src->buffer_object) return; memcpy(dst->addr, src->addr, size); diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index 8a4ca4f5781..79dc0bd06b6 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -469,7 +469,7 @@ void texture2d_read_from_framebuffer(struct wined3d_texture *texture, unsigned i
if (data.buffer_object) { - GL_EXTCALL(glBindBuffer(GL_PIXEL_PACK_BUFFER, ((struct wined3d_bo_gl *)data.buffer_object)->id)); + GL_EXTCALL(glBindBuffer(GL_PIXEL_PACK_BUFFER, wined3d_bo_gl(data.buffer_object)->id)); checkGLcall("glBindBuffer"); }
@@ -527,7 +527,7 @@ error: if (data.buffer_object) { GL_EXTCALL(glBindBuffer(GL_PIXEL_PACK_BUFFER, 0)); - wined3d_context_gl_reference_bo(context_gl, (struct wined3d_bo_gl *)data.buffer_object); + wined3d_context_gl_reference_bo(context_gl, wined3d_bo_gl(data.buffer_object)); checkGLcall("glBindBuffer"); }
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index df42f2d766b..370eaaf08e5 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c @@ -830,7 +830,7 @@ void wined3d_texture_get_memory(struct wined3d_texture *texture, unsigned int su if (locations & WINED3D_LOCATION_BUFFER) { data->addr = NULL; - data->buffer_object = (uintptr_t)&sub_resource->bo; + data->buffer_object = &sub_resource->bo.b; return; }
@@ -2476,7 +2476,7 @@ static void wined3d_texture_gl_upload_data(struct wined3d_context *context, return; }
- bo.buffer_object = src_bo_addr->buffer_object; + bo.buffer_object = (struct wined3d_bo *)src_bo_addr->buffer_object; bo.addr = (BYTE *)src_bo_addr->addr + src_box->front * src_slice_pitch; if (dst_texture->resource.format_flags & WINED3DFMT_FLAG_BLOCKS) { @@ -2555,7 +2555,7 @@ static void wined3d_texture_gl_upload_data(struct wined3d_context *context, { if (bo.buffer_object) { - GL_EXTCALL(glBindBuffer(GL_PIXEL_UNPACK_BUFFER, ((struct wined3d_bo_gl *)bo.buffer_object)->id)); + GL_EXTCALL(glBindBuffer(GL_PIXEL_UNPACK_BUFFER, wined3d_bo_gl(bo.buffer_object)->id)); checkGLcall("glBindBuffer"); }
@@ -2565,7 +2565,7 @@ static void wined3d_texture_gl_upload_data(struct wined3d_context *context, if (bo.buffer_object) { GL_EXTCALL(glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0)); - wined3d_context_gl_reference_bo(context_gl, (struct wined3d_bo_gl *)bo.buffer_object); + wined3d_context_gl_reference_bo(context_gl, wined3d_bo_gl(bo.buffer_object)); checkGLcall("glBindBuffer"); } } @@ -2585,7 +2585,7 @@ static void wined3d_texture_gl_upload_data(struct wined3d_context *context, static void wined3d_texture_gl_download_data_slow_path(struct wined3d_texture_gl *texture_gl, unsigned int sub_resource_idx, struct wined3d_context_gl *context_gl, const struct wined3d_bo_address *data) { - struct wined3d_bo_gl *bo = (struct wined3d_bo_gl *)data->buffer_object; + struct wined3d_bo_gl *bo = wined3d_bo_gl(data->buffer_object); const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_texture_sub_resource *sub_resource; unsigned int dst_row_pitch, dst_slice_pitch; @@ -2824,7 +2824,7 @@ static void wined3d_texture_gl_download_data(struct wined3d_context *context, unsigned int src_level, src_width, src_height, src_depth; unsigned int src_row_pitch, src_slice_pitch; const struct wined3d_format_gl *format_gl; - struct wined3d_bo_gl *dst_bo; + struct wined3d_bo *dst_bo; BOOL srgb = FALSE; GLenum target;
@@ -2899,9 +2899,9 @@ static void wined3d_texture_gl_download_data(struct wined3d_context *context, return; }
- if ((dst_bo = (struct wined3d_bo_gl *)dst_bo_addr->buffer_object)) + if ((dst_bo = dst_bo_addr->buffer_object)) { - GL_EXTCALL(glBindBuffer(GL_PIXEL_PACK_BUFFER, dst_bo->id)); + GL_EXTCALL(glBindBuffer(GL_PIXEL_PACK_BUFFER, wined3d_bo_gl(dst_bo)->id)); checkGLcall("glBindBuffer"); }
@@ -2925,7 +2925,7 @@ static void wined3d_texture_gl_download_data(struct wined3d_context *context, if (dst_bo) { GL_EXTCALL(glBindBuffer(GL_PIXEL_PACK_BUFFER, 0)); - wined3d_context_gl_reference_bo(context_gl, dst_bo); + wined3d_context_gl_reference_bo(context_gl, wined3d_bo_gl(dst_bo)); checkGLcall("glBindBuffer"); } } @@ -4729,7 +4729,7 @@ static void wined3d_texture_vk_upload_data(struct wined3d_context *context, return; }
- staging_bo_addr.buffer_object = (uintptr_t)&staging_bo; + staging_bo_addr.buffer_object = &staging_bo.b; staging_bo_addr.addr = NULL; if (!(map_ptr = wined3d_context_map_bo_address(context, &staging_bo_addr, sub_resource->size, WINED3D_MAP_DISCARD | WINED3D_MAP_WRITE))) @@ -4992,7 +4992,7 @@ static void wined3d_texture_vk_download_data(struct wined3d_context *context, wined3d_context_vk_submit_command_buffer(context_vk, 0, NULL, NULL, 0, NULL); wined3d_context_vk_wait_command_buffer(context_vk, src_texture_vk->image.command_buffer_id);
- staging_bo_addr.buffer_object = (uintptr_t)&staging_bo; + staging_bo_addr.buffer_object = &staging_bo.b; staging_bo_addr.addr = NULL; if (!(map_ptr = wined3d_context_map_bo_address(context, &staging_bo_addr, sub_resource->size, WINED3D_MAP_READ))) diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c index cbcfed4a21e..0d8001f5cbe 100644 --- a/dlls/wined3d/view.c +++ b/dlls/wined3d/view.c @@ -1616,7 +1616,7 @@ void wined3d_unordered_access_view_set_counter(struct wined3d_unordered_access_v src.buffer_object = 0; src.addr = (void *)&value;
- dst.buffer_object = view->counter_bo; + dst.buffer_object = (struct wined3d_bo *)view->counter_bo; dst.addr = NULL;
wined3d_context_copy_bo_address(context, &dst, &src, sizeof(uint32_t)); @@ -2092,9 +2092,9 @@ void wined3d_unordered_access_view_vk_clear(struct wined3d_unordered_access_view goto out; }
- cb_source_address.buffer_object = 0; + cb_source_address.buffer_object = NULL; cb_source_address.addr = (BYTE *)&constants; - cb_destination_address.buffer_object = (UINT_PTR)&constants_bo; + cb_destination_address.buffer_object = &constants_bo.b; cb_destination_address.addr = 0;
adapter_vk_copy_bo_address(&context_vk->c, &cb_destination_address, &cb_source_address, sizeof(constants)); diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index a0cc553c829..c2b56a6e60c 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1621,9 +1621,9 @@ static inline struct wined3d_bo_gl *wined3d_bo_gl(struct wined3d_bo *bo) return CONTAINING_RECORD(bo, struct wined3d_bo_gl, b); }
-static inline GLuint wined3d_bo_gl_id(uintptr_t bo) +static inline GLuint wined3d_bo_gl_id(struct wined3d_bo *bo) { - return bo ? ((struct wined3d_bo_gl *)bo)->id : 0; + return bo ? wined3d_bo_gl(bo)->id : 0; }
struct wined3d_bo_user @@ -1681,7 +1681,7 @@ void wined3d_bo_slab_vk_unmap(struct wined3d_bo_slab_vk *slab_vk,
struct wined3d_bo_address { - UINT_PTR buffer_object; + struct wined3d_bo *buffer_object; BYTE *addr; };
@@ -4411,6 +4411,7 @@ struct wined3d_texture DWORD locations; union { + struct wined3d_bo b; struct wined3d_bo_gl gl; struct wined3d_bo_vk vk; } bo;