intel/blorp: Set key->msaa_16 unconditionally on Gfx9+
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 8 Dec 2022 03:29:43 +0000 (19:29 -0800)
committerMarge Bot <emma+marge@anholt.net>
Fri, 9 Dec 2022 10:18:25 +0000 (10:18 +0000)
This will result in us using the TXF_CMS_W message rather than the
TXF_CMS message on Skylake through Tigerlake for 2/4/8x MSAA blits,
which is technically slightly worse.  However, it shouldn't be that
much worse: the TXF_CMS message was removed altogether on Alchemist.

iris and anv set key->msaa_16 unconditionally, to avoid paying the
cost of shader recompiles for a miniscule gain.  crocus and hasvk
don't need to set it as they don't support 16x MSAA.  BLORP already
recompiles based on the sample count, so it could easily keep doing
this for the minor benefit.  But avoiding it will let us drop the
entire msaa_16 key field out of the compiler, which is nice.

Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20223>

src/intel/blorp/blorp_blit.c
src/intel/blorp/blorp_clear.c

index b49d29b..7ab5273 100644 (file)
@@ -1527,7 +1527,7 @@ brw_blorp_get_blit_kernel_fs(struct blorp_batch *batch,
 
    struct brw_wm_prog_key wm_key;
    brw_blorp_init_wm_prog_key(&wm_key);
-   wm_key.base.tex.msaa_16 = key->tex_samples == 16;
+   wm_key.base.tex.msaa_16 = blorp->isl_dev->info->ver >= 9;
    wm_key.multisample_fbo = key->rt_samples > 1;
 
    program = blorp_compile_fs(blorp, mem_ctx, nir, &wm_key, false,
@@ -1567,7 +1567,7 @@ brw_blorp_get_blit_kernel_cs(struct blorp_batch *batch,
 
    struct brw_cs_prog_key cs_key;
    brw_blorp_init_cs_prog_key(&cs_key);
-   cs_key.base.tex.msaa_16 = prog_key->tex_samples == 16;
+   cs_key.base.tex.msaa_16 = blorp->isl_dev->info->ver >= 9;
    assert(prog_key->rt_samples == 1);
 
    program = blorp_compile_cs(blorp, mem_ctx, nir, &cs_key, &prog_data);
index 82ad45a..fedbe0c 100644 (file)
@@ -1371,7 +1371,7 @@ blorp_params_get_mcs_partial_resolve_kernel(struct blorp_batch *batch,
 
    struct brw_wm_prog_key wm_key;
    brw_blorp_init_wm_prog_key(&wm_key);
-   wm_key.base.tex.msaa_16 = blorp_key.num_samples == 16;
+   wm_key.base.tex.msaa_16 = blorp->isl_dev->info->ver >= 9;
    wm_key.multisample_fbo = true;
 
    struct brw_wm_prog_data prog_data;