From: Austin English Subject: wined3d: Allow to specify multisampling AA quality levels via registry Message-Id: Date: Sat, 26 Dec 2015 23:48:37 -0600 For https://bugs.winehq.org/show_bug.cgi?id=12652 -- -Austin From f5f0eca8f43abaae0d5bd7986650dcaff305232f Mon Sep 17 00:00:00 2001 From: Austin English Date: Sat, 26 Dec 2015 23:41:51 -0600 Subject: [PATCH] wined3d: Allow to specify multisampling AA quality levels via registry Signed-off-by: Austin English --- dlls/wined3d/directx.c | 10 +++++++++- dlls/wined3d/wined3d_main.c | 12 ++++++++++++ dlls/wined3d/wined3d_private.h | 1 + 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 4b4209a..c4f2683 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -4425,8 +4425,16 @@ HRESULT CDECL wined3d_check_device_multisample_type(const struct wined3d *wined3 if (quality_levels) { - if (multisample_type == WINED3D_MULTISAMPLE_NON_MASKABLE) + if (wined3d_settings.msaa_quality_levels) + { + *quality_levels = wined3d_settings.msaa_quality_levels; + TRACE("Overriding MSAA quality levels to %i\n", wined3d_settings.msaa_quality_levels); + } + else if (multisample_type == WINED3D_MULTISAMPLE_NON_MASKABLE) + { *quality_levels = gl_info->limits.samples; + FIXME("Setting quality_levels to %d\n", *quality_levels); + } else *quality_levels = 1; } diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c index 0543d97..38a9ff5 100644 --- a/dlls/wined3d/wined3d_main.c +++ b/dlls/wined3d/wined3d_main.c @@ -86,6 +86,7 @@ struct wined3d_settings wined3d_settings = ~0U, /* No GS shader model limit by default. */ ~0U, /* No PS shader model limit by default. */ FALSE, /* 3D support enabled by default. */ + 0, /* Override the WINED3D_MULTISAMPLE_NON_MASKABLE limit */ }; struct wined3d * CDECL wined3d_create(DWORD flags) @@ -290,6 +291,17 @@ static BOOL wined3d_dll_init(HINSTANCE hInstDLL) wined3d_settings.allow_multisampling = FALSE; } } + if (!get_config_key(hkey, appkey, "MultisamplingAAQualityLevels", buffer, size)) + { + int quality_levels = atoi(buffer); + if (quality_levels > 0) + { + wined3d_settings.msaa_quality_levels = quality_levels; + TRACE("Setting MultisamplingAAQualityLevels to %i\n", quality_levels); + } + else + ERR("MultisamplingAAQualityLevels is %i but must be >0\n", quality_levels); + } if (!get_config_key(hkey, appkey, "StrictDrawOrdering", buffer, size) && !strcmp(buffer,"enabled")) { diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 53ef63e..0c23bbb 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -282,6 +282,7 @@ struct wined3d_settings unsigned int max_sm_gs; unsigned int max_sm_ps; BOOL no_3d; + unsigned int msaa_quality_levels; }; extern struct wined3d_settings wined3d_settings DECLSPEC_HIDDEN; -- 2.6.4