HACK: Don't re-configure L3$ in render stages pre-BDW
authorJason Ekstrand <jason.ekstrand@intel.com>
Sat, 12 Mar 2016 16:54:41 +0000 (08:54 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Sat, 12 Mar 2016 16:57:16 +0000 (08:57 -0800)
This fixes a "regression" on Haswell and prior caused by merging the gen7
and gen8 flush_state functions.  Haswell should still work just fine if
you're on a 4.4 kernel, but we really should make it detect the command
parser version and do something intelligent.

src/intel/vulkan/genX_cmd_buffer.c

index c3d2043dcdfc20c91444ba912e8f82520a147f7d..723f6d81a391f87cd57d8c4178bdb33246911e5f 100644 (file)
@@ -324,7 +324,18 @@ genX(cmd_buffer_flush_state)(struct anv_cmd_buffer *cmd_buffer)
 
    assert((pipeline->active_stages & VK_SHADER_STAGE_COMPUTE_BIT) == 0);
 
+#if GEN_GEN >= 8
+   /* FIXME (jason): Currently, the config_l3 function causes problems on
+    * Haswell and prior if you have a kernel older than 4.4.  In order to
+    * work, it requires a couple of registers be white-listed in the
+    * command parser and they weren't added until 4.4.  What we should do
+    * is check the command parser version and make it a no-op if your
+    * command parser is either off or too old.  Compute won't work 100%,
+    * but at least 3-D will.  In the mean time, I'm going to make this
+    * gen8+ only so that we can get Haswell working again.
+    */
    genX(cmd_buffer_config_l3)(cmd_buffer, false);
+#endif
 
    genX(flush_pipeline_select_3d)(cmd_buffer);