From adf2da3ef2b1a71e6033191757ba6702f5883ee9 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: (cherry picked from commit dc2c3cf06ba647c81400f936ec0ef2ffc2123aae) --- .pick_status.json | 2 +- 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 + 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index d1d6d590161..8efa082718f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -6414,7 +6414,7 @@ "description": "intel: Disable 16x MSAA support on Xe3", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null 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 e5905f8296a..d23296fafa6 100644 --- a/src/gallium/drivers/iris/iris_state.c +++ b/src/gallium/drivers/iris/iris_state.c @@ -3796,7 +3796,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 234e2fe7c9c..4cb7471b7c9 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 982fc98c7eb..68d9b1d8115 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,