From: Zebediah Figura zfigura@codeweavers.com
Make the fields names consistent with each other and with the usual scheme for field naming. --- dlls/wined3d/buffer.c | 52 +++++++++++++++++----------------- dlls/wined3d/wined3d_private.h | 7 +++-- 2 files changed, 31 insertions(+), 28 deletions(-)
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c index 082d502ff98..9f162a890e3 100644 --- a/dlls/wined3d/buffer.c +++ b/dlls/wined3d/buffer.c @@ -70,38 +70,38 @@ static void buffer_invalidate_bo_range(struct wined3d_buffer *buffer, unsigned i goto invalidate_all; }
- if (!wined3d_array_reserve((void **)&buffer->maps, &buffer->maps_size, - buffer->modified_areas + 1, sizeof(*buffer->maps))) + if (!wined3d_array_reserve((void **)&buffer->dirty_ranges, &buffer->dirty_ranges_capacity, + buffer->dirty_range_count + 1, sizeof(*buffer->dirty_ranges))) { - ERR("Failed to allocate maps array, invalidating entire buffer.\n"); + ERR("Failed to allocate dirty ranges array, invalidating entire buffer.\n"); goto invalidate_all; }
- buffer->maps[buffer->modified_areas].offset = offset; - buffer->maps[buffer->modified_areas].size = size; - ++buffer->modified_areas; + buffer->dirty_ranges[buffer->dirty_range_count].offset = offset; + buffer->dirty_ranges[buffer->dirty_range_count].size = size; + ++buffer->dirty_range_count; return;
invalidate_all: - buffer->modified_areas = 1; - buffer->maps[0].offset = 0; - buffer->maps[0].size = buffer->resource.size; + buffer->dirty_range_count = 1; + buffer->dirty_ranges[0].offset = 0; + buffer->dirty_ranges[0].size = buffer->resource.size; }
-static inline void buffer_clear_dirty_areas(struct wined3d_buffer *This) +static inline void buffer_clear_dirty_areas(struct wined3d_buffer *buffer) { - This->modified_areas = 0; + buffer->dirty_range_count = 0; }
static BOOL buffer_is_dirty(const struct wined3d_buffer *buffer) { - return !!buffer->modified_areas; + return !!buffer->dirty_range_count; }
static BOOL buffer_is_fully_dirty(const struct wined3d_buffer *buffer) { - return buffer->modified_areas == 1 - && !buffer->maps->offset && buffer->maps->size == buffer->resource.size; + return buffer->dirty_range_count == 1 + && !buffer->dirty_ranges[0].offset && buffer->dirty_ranges[0].size == buffer->resource.size; }
void wined3d_buffer_validate_location(struct wined3d_buffer *buffer, uint32_t location) @@ -534,10 +534,10 @@ static void buffer_conversion_upload(struct wined3d_buffer *buffer, struct wined return; }
- for (range_idx = 0; range_idx < buffer->modified_areas; ++range_idx) + for (range_idx = 0; range_idx < buffer->dirty_range_count; ++range_idx) { - start = buffer->maps[range_idx].offset; - end = start + buffer->maps[range_idx].size; + start = buffer->dirty_ranges[range_idx].offset; + end = start + buffer->dirty_ranges[range_idx].size;
memcpy(data + start, (BYTE *)buffer->resource.heap_memory + start, end - start); for (i = start / buffer->stride; i < min((end / buffer->stride) + 1, vertex_count); ++i) @@ -568,7 +568,8 @@ static void buffer_conversion_upload(struct wined3d_buffer *buffer, struct wined dst.addr = NULL; src.buffer_object = NULL; src.addr = data; - wined3d_context_copy_bo_address(context, &dst, &src, buffer->modified_areas, buffer->maps, WINED3D_MAP_WRITE); + wined3d_context_copy_bo_address(context, &dst, &src, + buffer->dirty_range_count, buffer->dirty_ranges, WINED3D_MAP_WRITE);
heap_free(data); } @@ -657,11 +658,11 @@ BOOL wined3d_buffer_load_location(struct wined3d_buffer *buffer, { uint32_t map_flags = WINED3D_MAP_WRITE;
- if (buffer->modified_areas == 1 && !buffer->maps[0].offset - && buffer->maps[0].size == buffer->resource.size) + if (buffer_is_fully_dirty(buffer)) map_flags |= WINED3D_MAP_DISCARD;
- wined3d_context_copy_bo_address(context, &dst, &src, buffer->modified_areas, buffer->maps, map_flags); + wined3d_context_copy_bo_address(context, &dst, &src, + buffer->dirty_range_count, buffer->dirty_ranges, map_flags); } else { @@ -776,7 +777,7 @@ static void wined3d_buffer_destroy_object(void *object) context_release(context); } heap_free(buffer->conversion_map); - heap_free(buffer->maps); + heap_free(buffer->dirty_ranges); }
void wined3d_buffer_cleanup(struct wined3d_buffer *buffer) @@ -1079,7 +1080,6 @@ static HRESULT buffer_resource_sub_resource_map(struct wined3d_resource *resourc static HRESULT buffer_resource_sub_resource_unmap(struct wined3d_resource *resource, unsigned int sub_resource_idx) { struct wined3d_buffer *buffer = buffer_from_resource(resource); - unsigned int range_count = buffer->modified_areas; struct wined3d_device *device = resource->device; struct wined3d_context *context; struct wined3d_bo_address addr; @@ -1112,7 +1112,7 @@ static HRESULT buffer_resource_sub_resource_unmap(struct wined3d_resource *resou
addr.buffer_object = buffer->buffer_object; addr.addr = 0; - wined3d_context_unmap_bo_address(context, &addr, range_count, buffer->maps); + wined3d_context_unmap_bo_address(context, &addr, buffer->dirty_range_count, buffer->dirty_ranges);
context_release(context);
@@ -1399,7 +1399,7 @@ static HRESULT wined3d_buffer_init(struct wined3d_buffer *buffer, struct wined3d return E_OUTOFMEMORY; }
- if (!(buffer->maps = heap_alloc(sizeof(*buffer->maps)))) + if (!(buffer->dirty_ranges = heap_alloc(sizeof(*buffer->dirty_ranges)))) { ERR("Out of memory.\n"); buffer_resource_unload(resource); @@ -1407,7 +1407,7 @@ static HRESULT wined3d_buffer_init(struct wined3d_buffer *buffer, struct wined3d wined3d_resource_wait_idle(resource); return E_OUTOFMEMORY; } - buffer->maps_size = 1; + buffer->dirty_ranges_capacity = 1;
if (buffer->locations & WINED3D_LOCATION_DISCARDED) buffer->resource.client.addr.buffer_object = CLIENT_BO_DISCARDED; diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 0b72bf298e2..4506186229a 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -3832,8 +3832,11 @@ struct wined3d_buffer struct wined3d_bo *buffer_object; struct wined3d_bo_user bo_user;
- struct wined3d_range *maps; - SIZE_T maps_size, modified_areas; + /* For buffers which are GPU accessible but for which BUFFER is not + * currently a valid location, this is a list of areas that need to be + * uploaded to BUFFER. */ + struct wined3d_range *dirty_ranges; + SIZE_T dirty_range_count, dirty_ranges_capacity;
/* conversion stuff */ UINT decl_change_count, full_conversion_count;