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 b49d29b1cc2f1beb7536ce31089c47f2862d7f0b..7ab527364781bb9d00c4952dd719772a63b385b5 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 82ad45aea8e48473ee385b4ee144c0591100d9ea..fedbe0c9203d07c694f6e392f78985ecd149bb5f 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;