wined3d: Store the sample count in struct wined3d_d3d_info.

Read that in wined3d_swapchain_apply_sample_count_override().
This commit is contained in:
Zebediah Figura 2023-01-05 19:10:18 -06:00 committed by Alexandre Julliard
parent 1cab38b6ae
commit 3624e1191d
4 changed files with 9 additions and 3 deletions

View file

@ -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);

View file

@ -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;

View file

@ -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);

View file

@ -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;
};