[PATCH 1/4] wined3d: Move the wined3d_state field of struct wined3d_cs to a new wined3d_cs_state structure.

Henri Verbeet hverbeet at gmail.com
Tue Mar 2 08:32:21 CST 2021


On Tue, 2 Mar 2021 at 05:42, Zebediah Figura <z.figura12 at gmail.com> wrote:
> This is a proposed approach at implementing deferred contexts. The idea is to
> create a wined3d_cs object per ID3D11DeviceContext. Deferred contexts will have
> their own wined3d_cs_ops structure, and some operations (i.e. maps and queries)
> will be partially split to wined3d_cs_ops methods.
>
> The point of this patch is to avoid allocating space for unused wined3d_state
> objects. Presumably other fields could also be moved to the wined3d_cs_state
> structure as well.
>

As a principle, it's probably fine that an "immediate" cs would have
some additional data that a deferred cs doesn't. I'd suggest to split
that the same way we do in other places though. E.g.:

    struct wined3d_cs
    {
       const struct wined3d_cs_ops *ops;
       ...
    };

    struct wined3d_cs_immediate
    {
       struct wined3d_cs c;
       ...
       struct wined3d_state state;
       ...
    };

    struct wined3d_cs_mt
    {
       struct wined3d_cs_immediate c;
       ...
       HANDLE thread;
       ...
    };



More information about the wine-devel mailing list