intel/compiler/gen10: Disable push constants.
authorRafael Antognolli <rafael.antognolli@intel.com>
Mon, 18 Dec 2017 23:23:11 +0000 (15:23 -0800)
committerRafael Antognolli <rafael.antognolli@intel.com>
Tue, 19 Dec 2017 20:32:24 +0000 (12:32 -0800)
We still have gpu hangs on Cannonlake when using push constants, so
disable them for now until we have a proper fix for these hangs.

v2: Add warning message when creating context too.

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Cc: Ben Widawsky <ben@bwidawsk.net>
Cc: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
src/intel/compiler/brw_fs.cpp
src/mesa/drivers/dri/i965/brw_context.c

index 3717c50e32af0f268aad933b74da9c4800b2065f..6d9f0eccb29baf35028b296facd6a9786585559b 100644 (file)
@@ -2096,6 +2096,15 @@ fs_visitor::assign_constant_locations()
    if (subgroup_id_index >= 0)
       max_push_components--; /* Save a slot for the thread ID */
 
+   /* FIXME: We currently have some GPU hangs that happen apparently when using
+    * push constants. Since we have no solution for such hangs yet, just
+    * go ahead and use pull constants for now.
+    */
+   if (devinfo->gen == 10 && compiler->supports_pull_constants) {
+      compiler->shader_perf_log(log_data, "Disabling push constants.");
+      max_push_components = 0;
+   }
+
    /* We push small arrays, but no bigger than 16 floats.  This is big enough
     * for a vec4 but hopefully not large enough to push out other stuff.  We
     * should probably use a better heuristic at some point.
index 126c187f6298b077972e7fa60aa647560084ede3..b555f7bfdf15d2bd452608df15b58146010c370b 100644 (file)
@@ -1022,6 +1022,13 @@ brwCreateContext(gl_api api,
       return false;
    }
 
+   if (devinfo->gen == 10) {
+      fprintf(stderr,
+              "WARNING: i965 does not fully support Gen10 yet.\n"
+              "Instability or lower performance might occur.\n");
+
+   }
+
    brw_init_state(brw);
 
    intelInitExtensions(ctx);