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:
parent
cdf01b2f59
commit
d4f8d13b09
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue