From 908d12d346ca07442dd1d6d0cbff0921f5cfd3b8 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Thu, 30 Jan 2025 11:30:01 -0500 Subject: [PATCH] libagx: export coordinate twiddle routine we'll use for both image atomics and fast-clears Signed-off-by: Alyssa Rosenzweig Reviewed-by: Mary Guillemard Part-of: --- src/asahi/libagx/libagx_intrinsics.h | 4 ++++ src/asahi/libagx/texture.cl | 12 ++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/asahi/libagx/libagx_intrinsics.h b/src/asahi/libagx/libagx_intrinsics.h index 17e2e785ec6..51896633591 100644 --- a/src/asahi/libagx/libagx_intrinsics.h +++ b/src/asahi/libagx/libagx_intrinsics.h @@ -25,3 +25,7 @@ void nir_bindless_image_store(uint2 handle, int4 coord, uint sample, uint4 datum, uint lod, uint image_dim, uint image_array, uint format, uint access, uint src_type); + +uint32_t libagx_twiddle_coordinates(ushort2 coord, uint16_t tile_w_px, + uint16_t tile_h_px, + uint32_t aligned_width_px); diff --git a/src/asahi/libagx/texture.cl b/src/asahi/libagx/texture.cl index 3f40d3fa462..8fdcd7158da 100644 --- a/src/asahi/libagx/texture.cl +++ b/src/asahi/libagx/texture.cl @@ -124,9 +124,9 @@ libagx_lower_txf_robustness(constant struct agx_texture_packed *ptr, return valid ? x : 0xFFF0; } -static uint32_t -calculate_twiddled_coordinates(ushort2 coord, uint16_t tile_w_px, - uint16_t tile_h_px, uint32_t aligned_width_px) +uint32_t +libagx_twiddle_coordinates(ushort2 coord, uint16_t tile_w_px, + uint16_t tile_h_px, uint32_t aligned_width_px) { /* Modulo by the tile width/height to get the offsets within the tile */ ushort2 tile_mask_vec = (ushort2)(tile_w_px - 1, tile_h_px - 1); @@ -183,9 +183,9 @@ libagx_image_texel_address(constant const struct agx_pbe_packed *ptr, aligned_width_px = align(width_px, d.tile_width_sw); } - total_px = calculate_twiddled_coordinates( - convert_ushort2(coord.xy), d.tile_width_sw, d.tile_height_sw, - aligned_width_px); + total_px = + libagx_twiddle_coordinates(convert_ushort2(coord.xy), d.tile_width_sw, + d.tile_height_sw, aligned_width_px); } uint samples_log2 = is_msaa ? d.sample_count_log2_sw : 0;