From: Józef Kucia jkucia@codeweavers.com
Signed-off-by: Józef Kucia jkucia@codeweavers.com ---
For bug 45315.
Version 2: Change wording.
--- dlls/wined3d/directx.c | 9 ++++++++- dlls/wined3d/wined3d_main.c | 4 ++-- dlls/wined3d/wined3d_private.h | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 9bc9c31e0a43..baab2e9c1a31 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -2608,7 +2608,14 @@ static const struct fragment_pipeline *select_fragment_implementation(const stru
static const struct wined3d_shader_backend_ops *select_shader_backend(const struct wined3d_gl_info *gl_info) { - BOOL glsl = wined3d_settings.glslRequested && gl_info->glsl_version >= MAKEDWORD_VERSION(1, 20); + BOOL glsl = wined3d_settings.use_glsl && gl_info->glsl_version >= MAKEDWORD_VERSION(1, 20); + if (!gl_info->supported[WINED3D_GL_LEGACY_CONTEXT] && !wined3d_settings.use_glsl) + { + ERR_(winediag)("Ignoring the UseGLSL registry key. " + "GLSL is the only shader backend available on core profile contexts. " + "You need to explicitly set GL version to use legacy contexts.\n"); + glsl = TRUE; + }
if (glsl && gl_info->supported[ARB_VERTEX_SHADER] && gl_info->supported[ARB_FRAGMENT_SHADER]) return &glsl_shader_backend; diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c index e322b4de0744..f8a84a17adb4 100644 --- a/dlls/wined3d/wined3d_main.c +++ b/dlls/wined3d/wined3d_main.c @@ -225,8 +225,8 @@ static BOOL wined3d_dll_init(HINSTANCE hInstDLL) if (!strcmp(buffer,"disabled")) { ERR_(winediag)("The GLSL shader backend has been disabled. You get to keep all the pieces if it breaks.\n"); - TRACE("Use of GL Shading Language disabled\n"); - wined3d_settings.glslRequested = FALSE; + TRACE("Use of GL Shading Language disabled.\n"); + wined3d_settings.use_glsl = FALSE; } } if (!get_config_key(hkey, appkey, "OffscreenRenderingMode", buffer, size) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 33bc463b94c3..d190f7ccfd68 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -385,7 +385,7 @@ struct wined3d_settings unsigned int cs_multithreaded; BOOL explicit_gl_version; DWORD max_gl_version; - BOOL glslRequested; + BOOL use_glsl; int offscreen_rendering_mode; unsigned short pci_vendor_id; unsigned short pci_device_id;