Re: [PATCH 4/6] wined3d: Implement compute pipeline UAV binding.
On 8 February 2017 at 11:54, Józef Kucia <jkucia(a)codeweavers.com> wrote:
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c index 422f3f1..f2e10a8 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -44,6 +44,7 @@ enum wined3d_cs_op WINED3D_CS_OP_SET_TEXTURE, WINED3D_CS_OP_SET_SHADER_RESOURCE_VIEW, WINED3D_CS_OP_SET_UNORDERED_ACCESS_VIEW, + WINED3D_CS_OP_SET_COMPUTE_UAV, It's a little undesirable to introduce multiple operations that are largely the same, although I don't necessarily see a good way to avoid it either right now.
@@ -1053,6 +1054,35 @@ static void wined3d_cs_exec_set_unordered_access_view(struct wined3d_cs *cs, con device_invalidate_state(cs->device, STATE_UNORDERED_ACCESS_VIEW_BINDING); }
+void wined3d_cs_emit_set_compute_unordered_access_view(struct wined3d_cs *cs, unsigned int view_idx, + struct wined3d_unordered_access_view *view) +{ + struct wined3d_cs_set_unordered_access_view *op; + + op = cs->ops->require_space(cs, sizeof(*op)); + op->opcode = WINED3D_CS_OP_SET_COMPUTE_UAV; + op->view_idx = view_idx; + op->view = view; + + cs->ops->submit(cs); +} + +static void wined3d_cs_exec_set_compute_unordered_access_view(struct wined3d_cs *cs, const void *data) +{ + const struct wined3d_cs_set_unordered_access_view *op = data; + struct wined3d_unordered_access_view *prev; + + prev = cs->state.compute_unordered_access_view[op->view_idx]; + cs->state.compute_unordered_access_view[op->view_idx] = op->view; + + if (op->view) + InterlockedIncrement(&op->view->resource->bind_count); + if (prev) + InterlockedDecrement(&prev->resource->bind_count); + + device_invalidate_state(cs->device, STATE_COMPUTE_UNORDERED_ACCESS_VIEW_BINDING); +} I should have noticed this when WINED3D_CS_OP_SET_UNORDERED_ACCESS_VIEW was introduced, but these are between wined3d_cs_exec_set_shader_resource_view() and wined3d_cs_emit_set_shader_resource_view(), please don't do that. More generally, all the other handlers have execution above emission, I think it's best to stick with that.
participants (1)
-
Henri Verbeet