From 561f9ae74b2b7da06bb4830aaca8d017a3dd2746 Mon Sep 17 00:00:00 2001 From: Ilia Mirkin Date: Tue, 15 Jun 2021 00:49:02 -0400 Subject: [PATCH] st/mesa: always report the max samples as supported MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is required by GL. Doing this even when the backend driver does not support it leads to creating attachments which are not renderable. This is not ideal, but does pass tests. This covers scenarios such as missing MSAA for 128-bit formats on Sandybridge, and missing 8x MSAA on 128-bit formats on NVIDIA Tesla generation boards. Signed-off-by: Ilia Mirkin Reviewed-by: Marek Olšák Part-of: --- src/mesa/state_tracker/st_format.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c index d21e916808c..381c01bbac8 100644 --- a/src/mesa/state_tracker/st_format.c +++ b/src/mesa/state_tracker/st_format.c @@ -1392,6 +1392,7 @@ st_QuerySamplesForFormat(struct gl_context *ctx, GLenum target, struct st_context *st = st_context(ctx); enum pipe_format format; unsigned i, bind, num_sample_counts = 0; + unsigned min_max_samples; (void) target; @@ -1400,6 +1401,13 @@ st_QuerySamplesForFormat(struct gl_context *ctx, GLenum target, else bind = PIPE_BIND_RENDER_TARGET; + if (_mesa_is_enum_format_integer(internalFormat)) + min_max_samples = ctx->Const.MaxIntegerSamples; + else if (_mesa_is_depth_or_stencil_format(internalFormat)) + min_max_samples = ctx->Const.MaxDepthTextureSamples; + else + min_max_samples = ctx->Const.MaxColorTextureSamples; + /* If an sRGB framebuffer is unsupported, sRGB formats behave like linear * formats. */ @@ -1413,7 +1421,7 @@ st_QuerySamplesForFormat(struct gl_context *ctx, GLenum target, PIPE_TEXTURE_2D, i, i, bind, false, false); - if (format != PIPE_FORMAT_NONE) { + if (format != PIPE_FORMAT_NONE || i == min_max_samples) { samples[num_sample_counts++] = i; } }