From: Elizabeth Figura zfigura@codeweavers.com
--- dlls/wined3d/ffp_gl.c | 10 ---------- dlls/wined3d/glsl_shader.c | 3 +++ 2 files changed, 3 insertions(+), 10 deletions(-)
diff --git a/dlls/wined3d/ffp_gl.c b/dlls/wined3d/ffp_gl.c index 1b9a9b90285..34a9cff2ae4 100644 --- a/dlls/wined3d/ffp_gl.c +++ b/dlls/wined3d/ffp_gl.c @@ -527,21 +527,11 @@ static void blend_dbb(struct wined3d_context *context, const struct wined3d_stat
void state_clipping(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - struct wined3d_context_gl *context_gl = wined3d_context_gl(context); - uint32_t enable_mask; - /* glEnable(GL_CLIP_PLANEx) doesn't apply to (ARB backend) vertex shaders. * The enabled / disabled planes are hardcoded into the shader. Update the * shader to update the enabled clipplanes. In case of fixed function, we * need to update the clipping field from ffp_vertex_settings. */ context->shader_update_mask |= 1u << WINED3D_SHADER_TYPE_VERTEX; - - /* If enabling / disabling all - * TODO: Is this correct? Doesn't D3DRS_CLIPPING disable clipping on the viewport frustrum? - */ - enable_mask = state->render_states[WINED3D_RS_CLIPPING] ? - state->render_states[WINED3D_RS_CLIPPLANEENABLE] : 0; - wined3d_context_gl_enable_clip_distances(context_gl, enable_mask); }
static void renderstate_stencil_twosided(struct wined3d_context *context, GLint face, diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index f4a11e2cd4d..f9ef78dcb44 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -10858,6 +10858,9 @@ static void shader_glsl_update_graphics_program(struct shader_glsl_priv *priv, current_vertex_color_clamp = glsl_program->vs.vertex_color_clamp; if (glsl_program->shader_controlled_clip_distances) wined3d_context_gl_enable_clip_distances(context_gl, glsl_program->clip_distance_mask); + else if ((context_gl->c.shader_update_mask & (1u << WINED3D_SHADER_TYPE_VERTEX)) + && state->render_states[WINED3D_RS_CLIPPING]) + wined3d_context_gl_enable_clip_distances(context_gl, state->render_states[WINED3D_RS_CLIPPLANEENABLE]); } else {