Module: wine Branch: master Commit: 3624e1191d6e0000117b07a66407ad2294f339e2 URL: https://gitlab.winehq.org/wine/wine/-/commit/3624e1191d6e0000117b07a66407ad2...
Author: Zebediah Figura zfigura@codeweavers.com Date: Thu Jan 5 19:10:18 2023 -0600
wined3d: Store the sample count in struct wined3d_d3d_info.
Read that in wined3d_swapchain_apply_sample_count_override().
---
dlls/wined3d/adapter_gl.c | 1 + dlls/wined3d/adapter_vk.c | 6 ++++++ dlls/wined3d/swapchain.c | 4 +--- dlls/wined3d/wined3d_private.h | 1 + 4 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c index e1cc1119e85..d253a8d70bb 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c @@ -5195,6 +5195,7 @@ static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_ d3d_info->limits.max_rt_count = gl_info->limits.buffers; d3d_info->limits.max_clip_distances = gl_info->limits.user_clip_distances; d3d_info->limits.texture_size = gl_info->limits.texture_size; + d3d_info->limits.sample_count = gl_info->limits.samples;
gl_info->gl_ops.gl.p_glGetFloatv(gl_info->supported[WINED3D_GL_LEGACY_CONTEXT] ? GL_ALIASED_POINT_SIZE_RANGE : GL_POINT_SIZE_RANGE, f); diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index bc1039e0358..a27e8e41d88 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -2290,6 +2290,7 @@ static void wined3d_adapter_vk_init_d3d_info(struct wined3d_adapter_vk *adapter_ struct wined3d_physical_device_info device_info; struct wined3d_vertex_caps vertex_caps; struct fragment_caps fragment_caps; + unsigned int sample_counts_mask; struct shader_caps shader_caps;
get_physical_device_info(adapter_vk, &device_info); @@ -2316,6 +2317,11 @@ static void wined3d_adapter_vk_init_d3d_info(struct wined3d_adapter_vk *adapter_ d3d_info->limits.max_clip_distances = WINED3D_MAX_CLIP_DISTANCES; d3d_info->limits.texture_size = adapter_vk->device_limits.maxImageDimension2D; d3d_info->limits.pointsize_max = adapter_vk->device_limits.pointSizeRange[1]; + sample_counts_mask = adapter_vk->device_limits.framebufferColorSampleCounts + | adapter_vk->device_limits.framebufferDepthSampleCounts + | adapter_vk->device_limits.framebufferStencilSampleCounts + | adapter_vk->device_limits.framebufferNoAttachmentsSampleCounts; + d3d_info->limits.sample_count = (1u << wined3d_log2i(sample_counts_mask));
d3d_info->wined3d_creation_flags = wined3d_creation_flags;
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c index ac6f9ea6222..f8179e2a70d 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -1353,7 +1353,6 @@ static void wined3d_swapchain_apply_sample_count_override(const struct wined3d_s enum wined3d_format_id format_id, enum wined3d_multisample_type *type, unsigned int *quality) { const struct wined3d_adapter *adapter; - const struct wined3d_gl_info *gl_info; const struct wined3d_format *format; enum wined3d_multisample_type t;
@@ -1361,11 +1360,10 @@ static void wined3d_swapchain_apply_sample_count_override(const struct wined3d_s return;
adapter = swapchain->device->adapter; - gl_info = &adapter->gl_info; if (!(format = wined3d_get_format(adapter, format_id, WINED3D_BIND_RENDER_TARGET))) return;
- if ((t = min(wined3d_settings.sample_count, gl_info->limits.samples))) + if ((t = min(wined3d_settings.sample_count, adapter->d3d_info.limits.sample_count))) while (!(format->multisample_types & 1u << (t - 1))) ++t; TRACE("Using sample count %u.\n", t); diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 4805127d72c..9a78cd2d122 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -213,6 +213,7 @@ struct wined3d_d3d_limits unsigned int max_rt_count; unsigned int max_clip_distances; unsigned int texture_size; + unsigned int sample_count; float pointsize_max; };