[PATCH 5/5] wined3d: Invalidate shaders when interpolation qualifiers might change.

Matteo Bruni matteo.mystral at gmail.com
Mon Jun 4 16:33:30 CDT 2018


2018-06-04 21:11 GMT+02:00 Józef Kucia <joseph.kucia at gmail.com>:
> On Mon, Jun 4, 2018 at 8:32 PM, Matteo Bruni <mbruni at codeweavers.com> wrote:
>> Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
>> ---
>>  dlls/wined3d/cs.c | 11 +++++++++++
>>  1 file changed, 11 insertions(+)
>>
>> diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
>> index 3f1ca8ce658..e5ae7f478f8 100644
>> --- a/dlls/wined3d/cs.c
>> +++ b/dlls/wined3d/cs.c
>> @@ -1444,10 +1444,21 @@ void wined3d_cs_emit_set_sampler(struct wined3d_cs *cs, enum wined3d_shader_type
>>
>>  static void wined3d_cs_exec_set_shader(struct wined3d_cs *cs, const void *data)
>>  {
>> +    const struct wined3d_gl_info *gl_info = &cs->device->adapter->gl_info;
>>      const struct wined3d_cs_set_shader *op = data;
>>
>>      cs->state.shader[op->type] = op->shader;
>>      device_invalidate_state(cs->device, STATE_SHADER(op->type));
>> +    if (needs_interpolation_qualifiers_for_shader_outputs(gl_info) && op->type == WINED3D_SHADER_TYPE_PIXEL
>> +            && op->shader && op->shader->reg_maps.shader_version.major >= 4)
>> +    {
>> +        if (cs->state.shader[WINED3D_SHADER_TYPE_GEOMETRY])
>> +            device_invalidate_state(cs->device, STATE_SHADER(WINED3D_SHADER_TYPE_GEOMETRY));
>> +        else if (cs->state.shader[WINED3D_SHADER_TYPE_DOMAIN])
>> +            device_invalidate_state(cs->device, STATE_SHADER(WINED3D_SHADER_TYPE_DOMAIN));
>> +        else if (cs->state.shader[WINED3D_SHADER_TYPE_VERTEX])
>> +            device_invalidate_state(cs->device, STATE_SHADER(WINED3D_SHADER_TYPE_VERTEX));
>> +    }
>>      if (op->type != WINED3D_SHADER_TYPE_COMPUTE)
>>          device_invalidate_state(cs->device, STATE_GRAPHICS_SHADER_RESOURCE_BINDING);
>>      else
>> --
>> 2.16.1
>>
>>
>>
>
> Is this really needed? See glsl_vertex_pipe_pixel_shader().

Indeed, it should be redundant.



More information about the wine-devel mailing list