intel/eu: Add a brw_urb_desc helper
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 9 Aug 2019 02:16:32 +0000 (19:16 -0700)
committerMarge Bot <eric+marge@anholt.net>
Tue, 23 Jun 2020 17:43:53 +0000 (17:43 +0000)
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5596>

src/intel/compiler/brw_eu.h

index 9ed481e10e63b69029f5bc50d51dc0bdf901a6e0..1d509eb026ceef1e228570f615f76c27fb692106 100644 (file)
@@ -311,6 +311,28 @@ brw_message_ex_desc_ex_mlen(UNUSED const struct gen_device_info *devinfo,
    return GET_BITS(ex_desc, 9, 6);
 }
 
+static inline uint32_t
+brw_urb_desc(const struct gen_device_info *devinfo,
+             unsigned msg_type,
+             bool per_slot_offset_present,
+             bool channel_mask_present,
+             unsigned global_offset)
+{
+   if (devinfo->gen >= 8) {
+      return (SET_BITS(per_slot_offset_present, 17, 17) |
+              SET_BITS(channel_mask_present, 15, 15) |
+              SET_BITS(global_offset, 14, 4) |
+              SET_BITS(msg_type, 3, 0));
+   } else if (devinfo->gen >= 7) {
+      assert(!channel_mask_present);
+      return (SET_BITS(per_slot_offset_present, 16, 16) |
+              SET_BITS(global_offset, 13, 3) |
+              SET_BITS(msg_type, 3, 0));
+   } else {
+      unreachable("unhandled URB write generation");
+   }
+}
+
 /**
  * Construct a message descriptor immediate with the specified sampler
  * function controls.