[PATCH 1/5] wined3d: Introduce wined3d_device_apply_stateblock().
Zebediah Figura
z.figura12 at gmail.com
Tue Dec 10 12:24:28 CST 2019
On 12/10/19 2:39 AM, Matteo Bruni wrote:
> On Sat, Dec 7, 2019 at 5:11 PM Zebediah Figura <z.figura12 at gmail.com> wrote:
>>
>> Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
>> ---
>> dlls/wined3d/device.c | 93 +++++++++++++++++++++++++++++++++++++++
>> dlls/wined3d/wined3d.spec | 1 +
>> include/wine/wined3d.h | 1 +
>> 3 files changed, 95 insertions(+)
>>
>> diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
>> index 0ae841d4e35..50029dfbec2 100644
>> --- a/dlls/wined3d/device.c
>> +++ b/dlls/wined3d/device.c
>> @@ -3829,6 +3829,99 @@ struct wined3d_texture * CDECL wined3d_device_get_texture(const struct wined3d_d
>> return device->state.textures[stage];
>> }
>>
>> +void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device,
>> + struct wined3d_stateblock *stateblock)
>> +{
>> + const struct wined3d_d3d_info *d3d_info = &stateblock->device->adapter->d3d_info;
>> + const struct wined3d_stateblock_state *state = &stateblock->stateblock_state;
>> + unsigned int i, j;
>> +
>> + TRACE("device %p, stateblock %p.\n", device, stateblock);
>> +
>> + wined3d_stateblock_init_contained_states(stateblock);
>> +
>> + wined3d_device_set_vertex_shader(device, state->vs);
>> + wined3d_device_set_pixel_shader(device, state->ps);
>
> Can we make use of the stateblock flags to only update the changed
> states instead of all of them?
I think so. I mostly didn't do it because it was less code, but it's
probably worth not making lots of redundant calls to wined3d_device_set_*().
>
>> + for (i = 0; i < d3d_info->limits.vs_uniform_count; ++i)
>> + wined3d_device_set_vs_consts_f(device, i, 1, &state->vs_consts_f[i]);
>
> Either only update the changed constants or set all of them in one go, IMO.
...good point :D
>
> Somewhat related, I have a few patches optimizing / improving our
> handling of those flags but I don't expect them to be ready before
> code freeze (and I don't want to conflict with your patches,
> especially now).
>
More information about the wine-devel
mailing list