From 686daf2524c85ea1bd7dfd439799cb24e657c01c Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 27 Nov 2024 08:57:39 -0500 Subject: [PATCH] libagx: move index size helpers to the gpu Signed-off-by: Alyssa Rosenzweig Part-of: --- src/asahi/lib/agx_helpers.h | 18 ------------------ src/asahi/libagx/libagx_dgc.h | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/asahi/lib/agx_helpers.h b/src/asahi/lib/agx_helpers.h index 36298d368eb..b80208c83c1 100644 --- a/src/asahi/lib/agx_helpers.h +++ b/src/asahi/lib/agx_helpers.h @@ -104,24 +104,6 @@ agx_translate_sample_count(unsigned samples) } } -static inline enum agx_index_size -agx_translate_index_size(uint8_t size_B) -{ - /* Index sizes are encoded logarithmically */ - STATIC_ASSERT(__builtin_ctz(1) == AGX_INDEX_SIZE_U8); - STATIC_ASSERT(__builtin_ctz(2) == AGX_INDEX_SIZE_U16); - STATIC_ASSERT(__builtin_ctz(4) == AGX_INDEX_SIZE_U32); - - assert((size_B == 1) || (size_B == 2) || (size_B == 4)); - return __builtin_ctz(size_B); -} - -static inline uint8_t -agx_index_size_to_B(enum agx_index_size size) -{ - return 1 << size; -} - static enum agx_conservative_depth agx_translate_depth_layout(enum gl_frag_depth_layout layout) { diff --git a/src/asahi/libagx/libagx_dgc.h b/src/asahi/libagx/libagx_dgc.h index 56ea4add245..a7d297b0eb5 100644 --- a/src/asahi/libagx/libagx_dgc.h +++ b/src/asahi/libagx/libagx_dgc.h @@ -18,6 +18,30 @@ memcpy(ptr, &src, sizeof(src)); \ ptr = (GLOBAL void *)(((uintptr_t)ptr) + sizeof(src)); +static inline enum agx_index_size +agx_translate_index_size(uint8_t size_B) +{ + /* Index sizes are encoded logarithmically */ + static_assert(__builtin_ctz(1) == AGX_INDEX_SIZE_U8); + static_assert(__builtin_ctz(2) == AGX_INDEX_SIZE_U16); + static_assert(__builtin_ctz(4) == AGX_INDEX_SIZE_U32); + + assert((size_B == 1) || (size_B == 2) || (size_B == 4)); + return __builtin_ctz(size_B); +} + +static inline unsigned +agx_indices_to_B(unsigned x, enum agx_index_size size) +{ + return x << size; +} + +static inline uint8_t +agx_index_size_to_B(enum agx_index_size size) +{ + return agx_indices_to_B(1, size); +} + struct agx_workgroup { uint32_t x, y, z; };