[PATCH 2/9] wined3d: Factor out acquire_graphics_pipeline_resources().
Józef Kucia
joseph.kucia at gmail.com
Wed Nov 1 16:08:41 CDT 2017
From: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
dlls/wined3d/cs.c | 42 +++++++++++++++++++++++++-----------------
1 file changed, 25 insertions(+), 17 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 04e01da9e0a9..afc4b05df59d 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -809,25 +809,11 @@ static void wined3d_cs_exec_draw(struct wined3d_cs *cs, const void *data)
state->unordered_access_view[WINED3D_PIPELINE_GRAPHICS]);
}
-void wined3d_cs_emit_draw(struct wined3d_cs *cs, GLenum primitive_type, unsigned int patch_vertex_count,
- int base_vertex_idx, unsigned int start_idx, unsigned int index_count,
- unsigned int start_instance, unsigned int instance_count, BOOL indexed)
+static void acquire_graphics_pipeline_resources(const struct wined3d_state *state,
+ BOOL indexed, const struct wined3d_gl_info *gl_info)
{
- const struct wined3d_state *state = &cs->device->state;
- struct wined3d_cs_draw *op;
unsigned int i;
- op = cs->ops->require_space(cs, sizeof(*op), WINED3D_CS_QUEUE_DEFAULT);
- op->opcode = WINED3D_CS_OP_DRAW;
- op->primitive_type = primitive_type;
- op->patch_vertex_count = patch_vertex_count;
- op->base_vertex_idx = base_vertex_idx;
- op->start_idx = start_idx;
- op->index_count = index_count;
- op->start_instance = start_instance;
- op->instance_count = instance_count;
- op->indexed = indexed;
-
if (indexed)
wined3d_resource_acquire(&state->index_buffer->resource);
for (i = 0; i < ARRAY_SIZE(state->streams); ++i)
@@ -845,7 +831,7 @@ void wined3d_cs_emit_draw(struct wined3d_cs *cs, GLenum primitive_type, unsigned
if (state->textures[i])
wined3d_resource_acquire(&state->textures[i]->resource);
}
- for (i = 0; i < cs->device->adapter->gl_info.limits.buffers; ++i)
+ for (i = 0; i < gl_info->limits.buffers; ++i)
{
if (state->fb->render_targets[i])
wined3d_resource_acquire(state->fb->render_targets[i]->resource);
@@ -855,6 +841,28 @@ void wined3d_cs_emit_draw(struct wined3d_cs *cs, GLenum primitive_type, unsigned
acquire_shader_resources(state, ~(1u << WINED3D_SHADER_TYPE_COMPUTE));
acquire_unordered_access_resources(state->shader[WINED3D_SHADER_TYPE_PIXEL],
state->unordered_access_view[WINED3D_PIPELINE_GRAPHICS]);
+}
+
+void wined3d_cs_emit_draw(struct wined3d_cs *cs, GLenum primitive_type, unsigned int patch_vertex_count,
+ int base_vertex_idx, unsigned int start_idx, unsigned int index_count,
+ unsigned int start_instance, unsigned int instance_count, BOOL indexed)
+{
+ const struct wined3d_gl_info *gl_info = &cs->device->adapter->gl_info;
+ const struct wined3d_state *state = &cs->device->state;
+ struct wined3d_cs_draw *op;
+
+ op = cs->ops->require_space(cs, sizeof(*op), WINED3D_CS_QUEUE_DEFAULT);
+ op->opcode = WINED3D_CS_OP_DRAW;
+ op->primitive_type = primitive_type;
+ op->patch_vertex_count = patch_vertex_count;
+ op->base_vertex_idx = base_vertex_idx;
+ op->start_idx = start_idx;
+ op->index_count = index_count;
+ op->start_instance = start_instance;
+ op->instance_count = instance_count;
+ op->indexed = indexed;
+
+ acquire_graphics_pipeline_resources(state, indexed, gl_info);
cs->ops->submit(cs, WINED3D_CS_QUEUE_DEFAULT);
}
--
2.13.6
More information about the wine-patches
mailing list