v3d: generate packet unpack functions
authorIago Toral Quiroga <itoral@igalia.com>
Fri, 26 Jul 2019 06:57:52 +0000 (08:57 +0200)
committerIago Toral Quiroga <itoral@igalia.com>
Thu, 8 Aug 2019 06:36:52 +0000 (08:36 +0200)
These were not being compiled because of the lack of __gen_unpack_address.

v2:
 - Shift raw address correctly (Eric).

Reviewed-by: Eric Anholt <eric@anholt.net>
src/gallium/drivers/v3d/v3d_cl.h

index 0b3058f4fdd1d1c83dc68e7b0ff4ea05b165182b..271d407132a674930829ebea04ef18678a07dd60 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "util/u_math.h"
 #include "util/macros.h"
+#include "broadcom/cle/v3d_packet_helpers.h"
 
 struct v3d_bo;
 struct v3d_job;
@@ -52,6 +53,15 @@ static inline void cl_pack_emit_reloc(struct v3d_cl *cl, const struct v3d_cl_rel
 #define __gen_address_offset(reloc) (((reloc)->bo ? (reloc)->bo->offset : 0) + \
                                      (reloc)->offset)
 #define __gen_emit_reloc cl_pack_emit_reloc
+#define __gen_unpack_address(cl, s, e) __unpack_address(cl, s, e)
+
+static inline struct v3d_cl_reloc
+__unpack_address(const uint8_t *cl, uint32_t s, uint32_t e)
+{
+    struct v3d_cl_reloc reloc =
+            { NULL, __gen_unpack_uint(cl, s, e) << (31 - (e - s)) };
+    return reloc;
+}
 
 struct v3d_cl {
         void *base;