From: Matteo Bruni <mbruni(a)codeweavers.com> --- dlls/wined3d/cs.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c index bf171326926..932080bc406 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -1690,6 +1690,7 @@ void wined3d_device_context_emit_set_samplers(struct wined3d_device_context *con static void wined3d_cs_exec_set_shader(struct wined3d_cs *cs, const void *data) { + const struct wined3d_d3d_info *d3d_info = &cs->c.device->adapter->d3d_info; const struct wined3d_cs_set_shader *op = data; /* CB binding may have been skipped earlier if the shader wasn't set, so make it happen. */ @@ -1697,6 +1698,8 @@ static void wined3d_cs_exec_set_shader(struct wined3d_cs *cs, const void *data) device_invalidate_state(cs->c.device, STATE_CONSTANT_BUFFER(op->type)); cs->state.shader[op->type] = op->shader; device_invalidate_state(cs->c.device, STATE_SHADER(op->type)); + if (op->type == WINED3D_SHADER_TYPE_VERTEX && !d3d_info->vs_clipping) + device_invalidate_state(cs->c.device, STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL)); if (op->type != WINED3D_SHADER_TYPE_COMPUTE) device_invalidate_state(cs->c.device, STATE_GRAPHICS_SHADER_RESOURCE_BINDING); else @@ -1819,10 +1822,14 @@ void wined3d_device_context_set_depth_bounds(struct wined3d_device_context *cont static void wined3d_cs_exec_set_render_state(struct wined3d_cs *cs, const void *data) { + const struct wined3d_d3d_info *d3d_info = &cs->c.device->adapter->d3d_info; const struct wined3d_cs_set_render_state *op = data; cs->state.render_states[op->state] = op->value; device_invalidate_state(cs->c.device, STATE_RENDER(op->state)); + if ((op->state == WINED3D_RS_CLIPPING || op->state == WINED3D_RS_CLIPPLANEENABLE) + && !d3d_info->vs_clipping && cs->state.shader[WINED3D_SHADER_TYPE_VERTEX]) + device_invalidate_state(cs->c.device, STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL)); } void wined3d_device_context_emit_set_render_state(struct wined3d_device_context *context, -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/4652