Commit 54d8f57c authored by Matteo Bruni's avatar Matteo Bruni Committed by Alexandre Julliard

wined3d: Reselect the current GLSL geometry shader when possible even if the VS changed.

parent 91537b9f
...@@ -7447,7 +7447,9 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const ...@@ -7447,7 +7447,9 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
if (!(context->shader_update_mask & (1u << WINED3D_SHADER_TYPE_GEOMETRY)) if (!(context->shader_update_mask & (1u << WINED3D_SHADER_TYPE_GEOMETRY))
&& ctx_data->glsl_program->gs.id) && ctx_data->glsl_program->gs.id)
{
gs_id = ctx_data->glsl_program->gs.id; gs_id = ctx_data->glsl_program->gs.id;
}
else if (gshader) else if (gshader)
{ {
struct gs_compile_args args; struct gs_compile_args args;
...@@ -7462,12 +7464,18 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const ...@@ -7462,12 +7464,18 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
struct vs_compile_args vs_compile_args; struct vs_compile_args vs_compile_args;
vshader = state->shader[WINED3D_SHADER_TYPE_VERTEX]; vshader = state->shader[WINED3D_SHADER_TYPE_VERTEX];
gshader = state->shader[WINED3D_SHADER_TYPE_GEOMETRY];
find_vs_compile_args(state, vshader, context->stream_info.swizzle_map, &vs_compile_args, d3d_info); find_vs_compile_args(state, vshader, context->stream_info.swizzle_map, &vs_compile_args, d3d_info);
vs_id = find_glsl_vshader(context, priv, vshader, &vs_compile_args); vs_id = find_glsl_vshader(context, priv, vshader, &vs_compile_args);
vs_list = &vshader->linked_programs; vs_list = &vshader->linked_programs;
if ((gshader = state->shader[WINED3D_SHADER_TYPE_GEOMETRY])) if (!(context->shader_update_mask & (1u << WINED3D_SHADER_TYPE_GEOMETRY))
&& ctx_data->glsl_program->gs.id)
{
gs_id = ctx_data->glsl_program->gs.id;
}
else if (gshader)
{ {
struct gs_compile_args gs_compile_args; struct gs_compile_args gs_compile_args;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment