summaryrefslogtreecommitdiff
path: root/src/asahi
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>2024-07-10 16:08:10 -0400
committerMarge Bot <emma+marge@anholt.net>2024-07-15 20:09:00 +0000
commitbce466586e3d0be78ce405036433bdd2878dc542 (patch)
tree737631c5b4d86c9b8481d17cac4855fc2251903b /src/asahi
parent9624b86af042ca6e5eabac668cdc95777e2e2502 (diff)
asahi: make agx_pack opencl compatible
we don't want generic pointers here to keep things happy. also rename CONSTANT to avoid collisions Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30051>
Diffstat (limited to 'src/asahi')
-rw-r--r--src/asahi/genxml/gen_pack.py26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/asahi/genxml/gen_pack.py b/src/asahi/genxml/gen_pack.py
index e26cd88515e..9dde9d682d4 100644
--- a/src/asahi/genxml/gen_pack.py
+++ b/src/asahi/genxml/gen_pack.py
@@ -30,13 +30,15 @@ pack_header = """
#include "util/bitpack_helpers.h"
#include "util/half_float.h"
#define FILE_TYPE FILE
-#define CONSTANT const
+#define CONSTANT_ const
+#define GLOBAL_
#else
#include "libagx.h"
#define assert(x)
#define FILE_TYPE void
-#define CONSTANT constant
+#define CONSTANT_ constant
+#define GLOBAL_ global
static uint64_t
util_bitpack_uint(uint64_t v, uint32_t start, uint32_t end)
@@ -107,7 +109,7 @@ _mesa_half_to_float(uint16_t w)
#define __gen_unpack_half(x, y, z) _mesa_half_to_float(__gen_unpack_uint(x, y, z))
static inline uint64_t
-__gen_unpack_uint(CONSTANT uint32_t *restrict cl, uint32_t start, uint32_t end)
+__gen_unpack_uint(CONSTANT_ uint32_t *restrict cl, uint32_t start, uint32_t end)
{
uint64_t val = 0;
const int width = end - start + 1;
@@ -132,13 +134,13 @@ __gen_pack_lod(float f, uint32_t start, uint32_t end)
}
static inline float
-__gen_unpack_lod(CONSTANT uint32_t *restrict cl, uint32_t start, uint32_t end)
+__gen_unpack_lod(CONSTANT_ uint32_t *restrict cl, uint32_t start, uint32_t end)
{
return ((float) __gen_unpack_uint(cl, start, end)) / (1 << 6);
}
static inline uint64_t
-__gen_unpack_sint(CONSTANT uint32_t *restrict cl, uint32_t start, uint32_t end)
+__gen_unpack_sint(CONSTANT_ uint32_t *restrict cl, uint32_t start, uint32_t end)
{
int size = end - start + 1;
int64_t val = __gen_unpack_uint(cl, start, end);
@@ -174,14 +176,14 @@ __gen_from_groups(uint32_t value, uint32_t group_size, uint32_t length)
#define agx_pack(dst, T, name) \\
for (struct AGX_ ## T name = { AGX_ ## T ## _header }, \\
- *_loop_count = (void *) ((uintptr_t) 0); \\
+ *_loop_count = (GLOBAL_ void *) ((uintptr_t) 0); \\
(uintptr_t)_loop_count < 1; \\
- ({ AGX_ ## T ## _pack((uint32_t *) (dst), &name); \\
- _loop_count = (void*)(((uintptr_t)_loop_count) + 1); }))
+ ({ AGX_ ## T ## _pack((GLOBAL_ uint32_t *) (dst), &name); \\
+ _loop_count = (GLOBAL_ void*)(((uintptr_t)_loop_count) + 1); }))
#define agx_unpack(fp, src, T, name) \\
struct AGX_ ## T name; \\
- AGX_ ## T ## _unpack(fp, (CONSTANT uint8_t *)(src), &name)
+ AGX_ ## T ## _unpack(fp, (CONSTANT_ uint8_t *)(src), &name)
#define agx_print(fp, T, var, indent) \\
AGX_ ## T ## _print(fp, &(var), indent)
@@ -547,7 +549,7 @@ class Group(object):
convert = None
args = []
- args.append('(CONSTANT uint32_t *) cl')
+ args.append('(CONSTANT_ uint32_t *) cl')
args.append(str(fieldref.start))
args.append(str(fieldref.end))
@@ -702,7 +704,7 @@ class Parser(object):
print("};\n")
def emit_pack_function(self, name, group):
- print("static inline void\n%s_pack(uint32_t * restrict cl,\n%sconst struct %s * restrict values)\n{" %
+ print("static inline void\n%s_pack(GLOBAL_ uint32_t * restrict cl,\n%sconst struct %s * restrict values)\n{" %
(name, ' ' * (len(name) + 6), name))
group.emit_pack_function()
@@ -720,7 +722,7 @@ class Parser(object):
def emit_unpack_function(self, name, group):
print("static inline bool")
- print("%s_unpack(FILE_TYPE *fp, CONSTANT uint8_t * restrict cl,\n%sstruct %s * restrict values)\n{" %
+ print("%s_unpack(FILE_TYPE *fp, CONSTANT_ uint8_t * restrict cl,\n%sstruct %s * restrict values)\n{" %
(name.upper(), ' ' * (len(name) + 8), name))
group.emit_unpack_function()