[PATCH 8/8] wined3d: Implement applying state for compute pipeline.

Henri Verbeet hverbeet at gmail.com
Thu Feb 2 08:07:38 CST 2017


On 2 February 2017 at 12:43, Józef Kucia <jkucia at codeweavers.com> wrote:
> @@ -3520,19 +3546,19 @@ BOOL context_apply_draw_state(struct wined3d_context *context,
>              wined3d_buffer_load_sysmem(state->index_buffer, context);
>      }
>
> -    for (i = 0; i < context->numDirtyEntries; ++i)
> +    for (i = 0, dirty_idx = 0; i < context->numDirtyEntries; ++i)
>      {
>          DWORD rep = context->dirtyArray[i];
> -        DWORD idx = rep / (sizeof(*context->isStateDirty) * CHAR_BIT);
> -        BYTE shift = rep & ((sizeof(*context->isStateDirty) * CHAR_BIT) - 1);
> -        context->isStateDirty[idx] &= ~(1u << shift);
> -        state_table[rep].apply(context, state, rep);
> +        if (!is_compute_state(rep))
> +            apply_state(context, state_table, state, rep);
> +        else
> +            context->dirtyArray[dirty_idx++] = rep;
I'd rather not do this. How important is it to avoid applying compute
dispatch states for draws and vice-versa?

As an aside, "dirtyArray" is mostly redundant, and possibly a little harmful.



More information about the wine-devel mailing list