intel/blorp: Disable sampler state prefetching on Gen11
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 24 Jun 2019 22:09:51 +0000 (15:09 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 25 Jun 2019 20:29:31 +0000 (13:29 -0700)
Sampler state prefetching is broken on Gen11, and WA_160668216 says
to disable it.  Apparently sampler state prefetching also has basically
zero impact on performance, so we don't need to worry there.

i965, anv, and iris already handle this correctly, but we missed BLORP.
Ideally the kernel should globally disable this by writing SARCHKMD, at
which point we wouldn't have to worry about it.  But let's be defensive
and handle it ourselves too.

v2: separate out from BTP workaround in case we change that eventually

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> [v1]
src/intel/blorp/blorp_genX_exec.h

index f3e64c56382220398ae1257b20a8bfc401597aff..7a74b1d9d50bdd95b16c4ea86490015693c1d462 100644 (file)
@@ -778,6 +778,10 @@ blorp_emit_ps_config(struct blorp_batch *batch,
       if (GEN_GEN == 11)
          ps.BindingTableEntryCount = 0;
 
+      /* SAMPLER_STATE prefetching is broken on Gen11 - WA_1606682166 */
+      if (GEN_GEN == 11)
+         ps.SamplerCount = 0;
+
       if (prog_data) {
          ps._8PixelDispatchEnable = prog_data->dispatch_8;
          ps._16PixelDispatchEnable = prog_data->dispatch_16;