diff --git a/.pick_status.json b/.pick_status.json index 80af26a21ac..27fb8bcc048 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -174,7 +174,7 @@ "description": "intel/compiler: Fix stackIDs on Xe2+", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/intel/compiler/brw_lower_logical_sends.cpp b/src/intel/compiler/brw_lower_logical_sends.cpp index 466fe3b4bc7..739b27ccbc6 100644 --- a/src/intel/compiler/brw_lower_logical_sends.cpp +++ b/src/intel/compiler/brw_lower_logical_sends.cpp @@ -2374,9 +2374,17 @@ lower_trace_ray_logical_send(const brw_builder &bld, brw_inst *inst) * payload register. */ if (!synchronous) { + /* For Xe2+, Bspec 64643: + * "StackID": The maximum number of StackIDs can be 2^12- 1. + * + * For platforms < Xe2, The maximum number of StackIDs can be 2^11 - 1. + */ + brw_reg stack_id_mask = devinfo->ver >= 20 ? + brw_imm_uw(0xfff) : + brw_imm_uw(0x7ff); bld.AND(subscript(payload, BRW_TYPE_UW, 1), retype(brw_vec8_grf(1 * unit, 0), BRW_TYPE_UW), - brw_imm_uw(0x7ff)); + stack_id_mask); } /* Update the original instruction. */