From 5382f57e81ddd0b430d41bd50558b7513c5dac5d Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Tue, 21 Nov 2023 19:27:12 -0400 Subject: [PATCH] asahi: advertise ARB_shader_texture_image_samples Signed-off-by: Alyssa Rosenzweig Part-of: --- docs/features.txt | 2 +- docs/relnotes/new_features.txt | 1 + src/gallium/drivers/asahi/agx_nir_lower_bindings.c | 7 +++++-- src/gallium/drivers/asahi/agx_pipe.c | 1 + 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/features.txt b/docs/features.txt index 81cb62b4328..d66b91ac9e2 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -219,7 +219,7 @@ GL 4.5, GLSL 4.50 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, v GL_ARB_derivative_control DONE (freedreno/a3xx+, nv50, softpipe, asahi, crocus/gen7+) GL_ARB_direct_state_access DONE (all drivers) GL_ARB_get_texture_sub_image DONE (all drivers) - GL_ARB_shader_texture_image_samples DONE (freedreno/a3xx+, nv50, crocus/gen7+) + GL_ARB_shader_texture_image_samples DONE (freedreno/a3xx+, nv50, crocus/gen7+, asahi) GL_ARB_texture_barrier DONE (freedreno, nv50, vc4, lima, crocus) GL_KHR_context_flush_control DONE (all - but needs GLX/EGL extension to be useful) GL_KHR_robustness DONE (freedreno) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index 066bb0d4fe3..9bb90d71537 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -11,3 +11,4 @@ GL_EXT_disjoint_timer_query on Asahi GL_ARB_base_instance on Asahi OpenGL 4.6 (up from 4.2) on d3d12 VK_EXT_depth_clamp_zero_one on RADV +GL_ARB_shader_texture_image_samples on Asahi diff --git a/src/gallium/drivers/asahi/agx_nir_lower_bindings.c b/src/gallium/drivers/asahi/agx_nir_lower_bindings.c index 2ba5a7960a8..8c8f5103e0d 100644 --- a/src/gallium/drivers/asahi/agx_nir_lower_bindings.c +++ b/src/gallium/drivers/asahi/agx_nir_lower_bindings.c @@ -9,6 +9,7 @@ #include "agx_state.h" #include "nir.h" #include "nir_builder_opcodes.h" +#include "nir_intrinsics.h" #include "nir_intrinsics_indices.h" #include "shader_enums.h" @@ -82,6 +83,7 @@ lower(nir_builder *b, nir_instr *instr, void *data) CASE(image_load) CASE(image_store) CASE(image_size) + CASE(image_samples) CASE(image_atomic) CASE(image_atomic_swap) default: @@ -95,11 +97,12 @@ lower(nir_builder *b, nir_instr *instr, void *data) /* Remap according to the driver layout */ unsigned offset = BITSET_LAST_BIT(b->shader->info.textures_used); - /* For reads and image_size, we use the texture descriptor which is first. + /* For reads and queries, we use the texture descriptor which is first. * Writes and atomics use the PBE descriptor. */ if (intr->intrinsic != nir_intrinsic_image_load && - intr->intrinsic != nir_intrinsic_image_size) + intr->intrinsic != nir_intrinsic_image_size && + intr->intrinsic != nir_intrinsic_image_samples) offset++; /* If we can determine statically that the image fits in texture state diff --git a/src/gallium/drivers/asahi/agx_pipe.c b/src/gallium/drivers/asahi/agx_pipe.c index 229e244798e..ff59b623baf 100644 --- a/src/gallium/drivers/asahi/agx_pipe.c +++ b/src/gallium/drivers/asahi/agx_pipe.c @@ -1735,6 +1735,7 @@ agx_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_MAX_TEXTURE_GATHER_OFFSET: return 7; case PIPE_CAP_DRAW_INDIRECT: + case PIPE_CAP_TEXTURE_QUERY_SAMPLES: return true; case PIPE_CAP_VIDEO_MEMORY: {