intel/compiler: user payload starts after TUE header & its padding
authorMarcin Ślusarz <marcin.slusarz@intel.com>
Mon, 24 Oct 2022 12:59:41 +0000 (14:59 +0200)
committerEric Engestrom <eric@engestrom.ch>
Wed, 14 Dec 2022 20:47:00 +0000 (20:47 +0000)
All data written by the user are offset by TUE header size.
Without this patch we copy the correct amount of user data, but both
"from" and "to" offsets are wrong.

Fixes: 37e78803d7b ("intel/compiler: use nir_lower_task_shader pass")

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19409>
(cherry picked from commit db0e6f9a07b49a95d99c2b2c25fd8a008466c4e8)

.pick_status.json
src/intel/compiler/brw_mesh.cpp

index d43bdb7..636bcc1 100644 (file)
         "description": "intel/compiler: user payload starts after TUE header & its padding",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": "37e78803d7b088afde8c79b7cf82ee29d4835651"
     },
index 2d777c3..1e60d9d 100644 (file)
@@ -251,6 +251,10 @@ brw_compile_task(const struct brw_compiler *compiler,
    nir_lower_task_shader_options lower_ts_opt = {
       .payload_to_shared_for_atomics = true,
       .payload_to_shared_for_small_types = true,
+      /* The actual payload data starts after the TUE header and padding,
+       * so skip those when copying.
+       */
+      .payload_offset_in_bytes = prog_data->map.per_task_data_start_dw * 4,
    };
    NIR_PASS(_, nir, nir_lower_task_shader, lower_ts_opt);