On 11/9/21 10:44 AM, Henri Verbeet wrote:
On Mon, 8 Nov 2021 at 23:50, Zebediah Figura zfigura@codeweavers.com wrote:
+static void wined3d_buffer_set_bo(struct wined3d_buffer *buffer, struct wined3d_context *context, struct wined3d_bo *bo) +{
- struct wined3d_bo *prev_bo = buffer->buffer_object;
- TRACE("buffer %p, context %p, bo %p.\n", buffer, context, bo);
- if (prev_bo)
- {
struct wined3d_bo_user *bo_user;
LIST_FOR_EACH_ENTRY(bo_user, &prev_bo->users, struct wined3d_bo_user, entry)
bo_user->valid = false;
assert(list_empty(&bo->users));
list_move_head(&bo->users, &prev_bo->users);
wined3d_context_destroy_bo(context, prev_bo);
heap_free(prev_bo);
- }
- else
- {
list_add_head(&bo->users, &buffer->bo_user.entry);
- }
- buffer->buffer_object = bo;
- wined3d_buffer_validate_location(buffer, WINED3D_LOCATION_BUFFER);
- wined3d_buffer_invalidate_location(buffer, ~WINED3D_LOCATION_BUFFER);
+}
The location management could now be in wined3d_buffer_update_sub_resource().
Right, meant to do that part and forgot about it >_<