intel/fs: Don't pull CS push constants if uses_inline_data
authorJason Ekstrand <jason@jlekstrand.net>
Wed, 17 Jun 2020 04:06:56 +0000 (23:06 -0500)
committerMarge Bot <eric+marge@anholt.net>
Tue, 22 Jun 2021 21:09:25 +0000 (21:09 +0000)
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>

src/intel/compiler/brw_compiler.h
src/intel/compiler/brw_fs.cpp

index ea50894..e7c7278 100644 (file)
@@ -1035,6 +1035,7 @@ struct brw_cs_prog_data {
 
    bool uses_barrier;
    bool uses_num_work_groups;
+   bool uses_inline_data;
    bool uses_btd_stack_ids;
 
    struct {
index f8bce4e..9cdd64e 100644 (file)
@@ -1670,7 +1670,16 @@ fs_visitor::assign_curb_setup()
 
    uint64_t used = 0;
 
-   if (stage == MESA_SHADER_COMPUTE && devinfo->verx10 >= 125) {
+   if (stage == MESA_SHADER_COMPUTE &&
+       brw_cs_prog_data(prog_data)->uses_inline_data) {
+      /* With COMPUTE_WALKER, we can push up to one register worth of data via
+       * the inline data parameter in the COMPUTE_WALKER command itself.
+       *
+       * TODO: Support inline data and push at the same time.
+       */
+      assert(devinfo->verx10 >= 125);
+      assert(uniform_push_length <= 1);
+   } else if (stage == MESA_SHADER_COMPUTE && devinfo->verx10 >= 125) {
       fs_builder ubld = bld.exec_all().group(8, 0).at(
          cfg->first_block(), cfg->first_block()->start());