From dc2c3cf06ba647c81400f936ec0ef2ffc2123aae Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Wed, 11 Jun 2025 21:37:08 -0700 Subject: [PATCH] intel: Disable 16x MSAA support on Xe3 16x MSAA isn't supported at all on certain Xe3 variants, and on its way out on the rest. Most vendors choose not to support it, and many apps offer more modern multisampling and upscaling techniques these days. Only 2/4/8x are supported going forward. Cc: mesa-stable Reviewed-by: Lionel Landwerlin Reviewed-by: Sagar Ghuge Part-of: --- src/gallium/drivers/iris/iris_formats.c | 2 +- src/gallium/drivers/iris/iris_state.c | 3 ++- src/intel/isl/isl.c | 2 +- src/intel/vulkan/anv_physical_device.c | 1 + 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/iris/iris_formats.c b/src/gallium/drivers/iris/iris_formats.c index 01cc3c2d871..1447667da21 100644 --- a/src/gallium/drivers/iris/iris_formats.c +++ b/src/gallium/drivers/iris/iris_formats.c @@ -112,7 +112,7 @@ iris_is_format_supported(struct pipe_screen *pscreen, { struct iris_screen *screen = (struct iris_screen *) pscreen; const struct intel_device_info *devinfo = screen->devinfo; - uint32_t max_samples = devinfo->ver == 8 ? 8 : 16; + uint32_t max_samples = devinfo->ver == 8 || devinfo->ver >= 30 ? 8 : 16; if (sample_count > max_samples || !util_is_power_of_two_or_zero(sample_count)) diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c index 7c0cceb1b33..391edced54e 100644 --- a/src/gallium/drivers/iris/iris_state.c +++ b/src/gallium/drivers/iris/iris_state.c @@ -3795,7 +3795,8 @@ iris_set_framebuffer_state(struct pipe_context *ctx, ice->state.dirty |= IRIS_DIRTY_MULTISAMPLE; /* We need to toggle 3DSTATE_PS::32 Pixel Dispatch Enable */ - if (GFX_VER >= 9 && (cso->samples == 16 || samples == 16)) + if (GFX_VER >= 9 && GFX_VER < 30 && + (cso->samples == 16 || samples == 16)) ice->state.stage_dirty |= IRIS_STAGE_DIRTY_FS; /* We may need to emit blend state for Wa_14018912822. */ diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c index 07a78528f5a..a73b54f08b1 100644 --- a/src/intel/isl/isl.c +++ b/src/intel/isl/isl.c @@ -511,7 +511,7 @@ isl_device_get_supported_tilings(const struct isl_device *dev) isl_sample_count_mask_t ATTRIBUTE_CONST isl_device_get_sample_counts(const struct isl_device *dev) { - if (ISL_GFX_VER(dev) >= 9) { + if (ISL_GFX_VER(dev) >= 9 && ISL_GFX_VER(dev) < 30) { return ISL_SAMPLE_COUNT_1_BIT | ISL_SAMPLE_COUNT_2_BIT | ISL_SAMPLE_COUNT_4_BIT | diff --git a/src/intel/vulkan/anv_physical_device.c b/src/intel/vulkan/anv_physical_device.c index d9c638375f3..21e91eabd90 100644 --- a/src/intel/vulkan/anv_physical_device.c +++ b/src/intel/vulkan/anv_physical_device.c @@ -478,6 +478,7 @@ get_features(const struct anv_physical_device *pdevice, .sparseResidency8Samples = has_sparse_or_fake && pdevice->info.verx10 != 125, .sparseResidency16Samples = has_sparse_or_fake && + pdevice->info.ver < 30 && pdevice->info.verx10 != 125, .variableMultisampleRate = true, .inheritedQueries = true,