The registry key helps to add multisample textures support incrementally without breaking the current support for multisample renderbuffers. It might be also useful to have a possibility to disable multisample textures when they are the default code path for multisampling in wined3d.
Signed-off-by: Józef Kucia jkucia@codeweavers.com ---
Multisample textures provide a superset of functionality in comparision to multisample renderbuffers. The plan is to use multisample textures by default, and prefer them to multisample renderbuffers.
--- dlls/wined3d/directx.c | 2 ++ dlls/wined3d/wined3d_main.c | 3 +++ dlls/wined3d/wined3d_private.h | 1 + 3 files changed, 6 insertions(+)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 1be6d2bce9a9..6dee5ed234fe 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -4244,6 +4244,8 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter, WARN("Disabling ARB_draw_indirect because ARB_base_instance is not supported.\n"); gl_info->supported[ARB_DRAW_INDIRECT] = FALSE; } + if (gl_info->supported[ARB_TEXTURE_MULTISAMPLE] && !wined3d_settings.multisample_textures) + gl_info->supported[ARB_TEXTURE_MULTISAMPLE] = FALSE;
wined3d_adapter_init_limits(gl_info);
diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c index 28a34a71b6f4..d3d3f2d5a227 100644 --- a/dlls/wined3d/wined3d_main.c +++ b/dlls/wined3d/wined3d_main.c @@ -81,6 +81,7 @@ struct wined3d_settings wined3d_settings = PCI_DEVICE_NONE,/* PCI Device ID */ 0, /* The default of memory is set in init_driver_info */ NULL, /* No wine logo by default */ + FALSE, /* Prefer multisample renderbuffers to multisample textures by default. */ ~0u, /* Don't force a specific sample count by default. */ FALSE, /* No strict draw ordering. */ FALSE, /* Don't range check relative addressing indices in float constants. */ @@ -284,6 +285,8 @@ static BOOL wined3d_dll_init(HINSTANCE hInstDLL) if (!wined3d_settings.logo) ERR("Failed to allocate logo path memory.\n"); else memcpy(wined3d_settings.logo, buffer, len); } + if (!get_config_key_dword(hkey, appkey, "MultisampleTextures", &wined3d_settings.multisample_textures)) + ERR_(winediag)("Setting multisample textures to %#x.\n", wined3d_settings.multisample_textures); if (!get_config_key_dword(hkey, appkey, "SampleCount", &wined3d_settings.sample_count)) ERR_(winediag)("Forcing sample count to %u. This may not be compatible with all applications.\n", wined3d_settings.sample_count); diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index e2527f2a224a..915e10d42d4c 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -391,6 +391,7 @@ struct wined3d_settings /* Memory tracking and object counting. */ UINT64 emulated_textureram; char *logo; + unsigned int multisample_textures; unsigned int sample_count; BOOL strict_draw_ordering; BOOL check_float_constants;