wined3d: Move the bo_user field to struct wined3d_buffer.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2021-10-20 00:12:00 -05:00 committed by Alexandre Julliard
parent cdf01b2f59
commit d4f8d13b09
5 changed files with 27 additions and 28 deletions

View File

@ -187,8 +187,8 @@ static void wined3d_buffer_gl_destroy_buffer_object(struct wined3d_buffer_gl *bu
wined3d_context_gl_end_transform_feedback(context_gl);
}
buffer_gl->bo_user.valid = false;
list_remove(&buffer_gl->bo_user.entry);
buffer_gl->b.bo_user.valid = false;
list_remove(&buffer_gl->b.bo_user.entry);
wined3d_context_gl_destroy_bo(context_gl, &buffer_gl->bo);
buffer_gl->b.buffer_object = 0;
}
@ -225,7 +225,7 @@ static BOOL wined3d_buffer_gl_create_buffer_object(struct wined3d_buffer_gl *buf
return FALSE;
}
list_add_head(&buffer_gl->bo.b.users, &buffer_gl->bo_user.entry);
list_add_head(&buffer_gl->bo.b.users, &buffer_gl->b.bo_user.entry);
buffer_gl->b.buffer_object = (uintptr_t)bo;
buffer_invalidate_bo_range(&buffer_gl->b, 0, 0);
@ -1439,8 +1439,8 @@ static BOOL wined3d_buffer_vk_create_buffer_object(struct wined3d_buffer_vk *buf
return FALSE;
}
list_init(&buffer_vk->bo_user.entry);
list_add_head(&buffer_vk->bo.b.users, &buffer_vk->bo_user.entry);
list_init(&buffer_vk->b.bo_user.entry);
list_add_head(&buffer_vk->bo.b.users, &buffer_vk->b.bo_user.entry);
buffer_vk->b.buffer_object = (uintptr_t)&buffer_vk->bo;
buffer_invalidate_bo_range(&buffer_vk->b, 0, 0);
@ -1449,13 +1449,13 @@ static BOOL wined3d_buffer_vk_create_buffer_object(struct wined3d_buffer_vk *buf
const VkDescriptorBufferInfo *wined3d_buffer_vk_get_buffer_info(struct wined3d_buffer_vk *buffer_vk)
{
if (buffer_vk->bo_user.valid)
if (buffer_vk->b.bo_user.valid)
return &buffer_vk->buffer_info;
buffer_vk->buffer_info.buffer = buffer_vk->bo.vk_buffer;
buffer_vk->buffer_info.offset = buffer_vk->bo.buffer_offset;
buffer_vk->buffer_info.range = buffer_vk->b.resource.size;
buffer_vk->bo_user.valid = true;
buffer_vk->b.bo_user.valid = true;
return &buffer_vk->buffer_info;
}
@ -1491,8 +1491,8 @@ static void wined3d_buffer_vk_unload_location(struct wined3d_buffer *buffer,
switch (location)
{
case WINED3D_LOCATION_BUFFER:
buffer_vk->bo_user.valid = false;
list_remove(&buffer_vk->bo_user.entry);
buffer_vk->b.bo_user.valid = false;
list_remove(&buffer_vk->b.bo_user.entry);
wined3d_context_vk_destroy_bo(context_vk, &buffer_vk->bo);
buffer_vk->bo.vk_buffer = VK_NULL_HANDLE;
buffer_vk->bo.memory = NULL;

View File

@ -3816,7 +3816,7 @@ static void context_gl_load_shader_resources(struct wined3d_context_gl *context_
buffer_gl = wined3d_buffer_gl(state->cb[i][j].buffer);
wined3d_buffer_load(&buffer_gl->b, &context_gl->c, state);
wined3d_context_gl_reference_bo(context_gl, &buffer_gl->bo);
if (!buffer_gl->bo_user.valid)
if (!buffer_gl->b.bo_user.valid)
device_invalidate_state(context_gl->c.device, STATE_CONSTANT_BUFFER(i));
}
@ -3902,7 +3902,7 @@ static void context_gl_load_stream_output_buffers(struct wined3d_context_gl *con
wined3d_buffer_load(&buffer_gl->b, &context_gl->c, state);
wined3d_buffer_invalidate_location(&buffer_gl->b, ~WINED3D_LOCATION_BUFFER);
wined3d_context_gl_reference_bo(context_gl, &buffer_gl->bo);
if (!buffer_gl->bo_user.valid)
if (!buffer_gl->b.bo_user.valid)
device_invalidate_state(context_gl->c.device, STATE_STREAM_OUTPUT);
}
}
@ -3959,7 +3959,7 @@ static BOOL context_apply_draw_state(struct wined3d_context *context,
e = &context->stream_info.elements[wined3d_bit_scan(&map)];
buffer_gl = wined3d_buffer_gl(state->streams[e->stream_idx].buffer);
if (!buffer_gl->bo_user.valid)
if (!buffer_gl->b.bo_user.valid)
device_invalidate_state(device, STATE_STREAMSRC);
else
wined3d_buffer_load(&buffer_gl->b, context, state);
@ -3976,7 +3976,7 @@ static BOOL context_apply_draw_state(struct wined3d_context *context,
if (context->stream_info.all_vbo)
{
wined3d_buffer_load(&buffer_gl->b, context, state);
if (!buffer_gl->bo_user.valid)
if (!buffer_gl->b.bo_user.valid)
device_invalidate_state(device, STATE_INDEXBUFFER);
wined3d_context_gl_reference_bo(context_gl, &buffer_gl->bo);
}
@ -5101,7 +5101,7 @@ void wined3d_context_gl_load_tex_coords(const struct wined3d_context_gl *context
gl_info->gl_ops.gl.p_glTexCoordPointer(format_gl->vtx_format, format_gl->vtx_type, e->stride,
e->data.addr + state->load_base_vertex_index * e->stride);
gl_info->gl_ops.gl.p_glEnableClientState(GL_TEXTURE_COORD_ARRAY);
wined3d_buffer_gl(state->streams[e->stream_idx].buffer)->bo_user.valid = true;
state->streams[e->stream_idx].buffer->bo_user.valid = true;
}
else
{
@ -5190,7 +5190,7 @@ static void wined3d_context_gl_load_vertex_data(struct wined3d_context_gl *conte
checkGLcall("glVertexPointer(...)");
gl_info->gl_ops.gl.p_glEnableClientState(GL_VERTEX_ARRAY);
checkGLcall("glEnableClientState(GL_VERTEX_ARRAY)");
wined3d_buffer_gl(state->streams[e->stream_idx].buffer)->bo_user.valid = true;
state->streams[e->stream_idx].buffer->bo_user.valid = true;
}
/* Normals */
@ -5214,7 +5214,7 @@ static void wined3d_context_gl_load_vertex_data(struct wined3d_context_gl *conte
checkGLcall("glNormalPointer(...)");
gl_info->gl_ops.gl.p_glEnableClientState(GL_NORMAL_ARRAY);
checkGLcall("glEnableClientState(GL_NORMAL_ARRAY)");
wined3d_buffer_gl(state->streams[e->stream_idx].buffer)->bo_user.valid = true;
state->streams[e->stream_idx].buffer->bo_user.valid = true;
}
else
{
@ -5244,7 +5244,7 @@ static void wined3d_context_gl_load_vertex_data(struct wined3d_context_gl *conte
checkGLcall("glColorPointer(4, GL_UNSIGNED_BYTE, ...)");
gl_info->gl_ops.gl.p_glEnableClientState(GL_COLOR_ARRAY);
checkGLcall("glEnableClientState(GL_COLOR_ARRAY)");
wined3d_buffer_gl(state->streams[e->stream_idx].buffer)->bo_user.valid = true;
state->streams[e->stream_idx].buffer->bo_user.valid = true;
}
else
{
@ -5313,7 +5313,7 @@ static void wined3d_context_gl_load_vertex_data(struct wined3d_context_gl *conte
}
gl_info->gl_ops.gl.p_glEnableClientState(GL_SECONDARY_COLOR_ARRAY_EXT);
checkGLcall("glEnableClientState(GL_SECONDARY_COLOR_ARRAY_EXT)");
wined3d_buffer_gl(state->streams[e->stream_idx].buffer)->bo_user.valid = true;
state->streams[e->stream_idx].buffer->bo_user.valid = true;
}
else
{
@ -5407,7 +5407,7 @@ static void wined3d_context_gl_load_numbered_arrays(struct wined3d_context_gl *c
format_gl = wined3d_format_gl(element->format);
stream = &state->streams[element->stream_idx];
wined3d_buffer_gl(stream->buffer)->bo_user.valid = true;
stream->buffer->bo_user.valid = true;
if ((stream->flags & WINED3DSTREAMSOURCE_INSTANCEDATA) && !context->instance_count)
context->instance_count = state->streams[0].frequency;

View File

@ -3091,7 +3091,7 @@ static void wined3d_context_vk_load_shader_resources(struct wined3d_context_vk *
buffer_vk = wined3d_buffer_vk(buffer);
wined3d_buffer_load(buffer, &context_vk->c, state);
if (!buffer_vk->bo_user.valid)
if (!buffer_vk->b.bo_user.valid)
{
if (pipeline == WINED3D_PIPELINE_GRAPHICS)
context_invalidate_state(&context_vk->c, STATE_GRAPHICS_CONSTANT_BUFFER(binding->shader_type));
@ -3257,7 +3257,7 @@ VkCommandBuffer wined3d_context_vk_apply_draw_state(struct wined3d_context_vk *c
buffer_vk = wined3d_buffer_vk(buffer);
wined3d_buffer_load(&buffer_vk->b, &context_vk->c, state);
wined3d_buffer_vk_barrier(buffer_vk, context_vk, WINED3D_BIND_VERTEX_BUFFER);
if (!buffer_vk->bo_user.valid)
if (!buffer_vk->b.bo_user.valid)
context_invalidate_state(&context_vk->c, STATE_STREAMSRC);
}
@ -3272,7 +3272,7 @@ VkCommandBuffer wined3d_context_vk_apply_draw_state(struct wined3d_context_vk *c
wined3d_buffer_load(&buffer_vk->b, &context_vk->c, state);
wined3d_buffer_vk_barrier(buffer_vk, context_vk, WINED3D_BIND_STREAM_OUTPUT);
wined3d_buffer_invalidate_location(&buffer_vk->b, ~WINED3D_LOCATION_BUFFER);
if (!buffer_vk->bo_user.valid)
if (!buffer_vk->b.bo_user.valid)
context_vk->update_stream_output = 1;
}
context_vk->c.transform_feedback_active = 1;
@ -3283,7 +3283,7 @@ VkCommandBuffer wined3d_context_vk_apply_draw_state(struct wined3d_context_vk *c
buffer_vk = wined3d_buffer_vk(state->index_buffer);
wined3d_buffer_load(&buffer_vk->b, &context_vk->c, state);
wined3d_buffer_vk_barrier(buffer_vk, context_vk, WINED3D_BIND_INDEX_BUFFER);
if (!buffer_vk->bo_user.valid)
if (!buffer_vk->b.bo_user.valid)
context_invalidate_state(&context_vk->c, STATE_INDEXBUFFER);
}

View File

@ -4458,7 +4458,7 @@ static void indexbuffer(struct wined3d_context *context, const struct wined3d_st
buffer_gl = wined3d_buffer_gl(state->index_buffer);
GL_EXTCALL(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffer_gl->bo.id));
buffer_gl->bo_user.valid = true;
buffer_gl->b.bo_user.valid = true;
}
static void depth_clip(const struct wined3d_rasterizer_state *r, const struct wined3d_gl_info *gl_info)
@ -4575,7 +4575,7 @@ static void state_cb(struct wined3d_context *context, const struct wined3d_state
buffer_gl = wined3d_buffer_gl(buffer_state->buffer);
GL_EXTCALL(glBindBufferRange(GL_UNIFORM_BUFFER, base + i, buffer_gl->bo.id,
buffer_state->offset, buffer_state->size));
buffer_gl->bo_user.valid = true;
buffer_gl->b.bo_user.valid = true;
}
checkGLcall("bind constant buffers");
}
@ -4649,7 +4649,7 @@ static void state_so(struct wined3d_context *context, const struct wined3d_state
}
size = buffer_gl->b.resource.size - offset;
GL_EXTCALL(glBindBufferRange(GL_TRANSFORM_FEEDBACK_BUFFER, i, buffer_gl->bo.id, offset, size));
buffer_gl->bo_user.valid = true;
buffer_gl->b.bo_user.valid = true;
}
checkGLcall("bind transform feedback buffers");
}

View File

@ -5012,6 +5012,7 @@ struct wined3d_buffer
DWORD locations;
void *map_ptr;
uintptr_t buffer_object;
struct wined3d_bo_user bo_user;
struct wined3d_range *maps;
SIZE_T maps_size, modified_areas;
@ -5054,7 +5055,6 @@ struct wined3d_buffer_gl
struct wined3d_buffer b;
struct wined3d_bo_gl bo;
struct wined3d_bo_user bo_user;
};
static inline struct wined3d_buffer_gl *wined3d_buffer_gl(struct wined3d_buffer *buffer)
@ -5076,7 +5076,6 @@ struct wined3d_buffer_vk
struct wined3d_buffer b;
struct wined3d_bo_vk bo;
struct wined3d_bo_user bo_user;
VkDescriptorBufferInfo buffer_info;
uint32_t bind_mask;
};