asahi: advertise ARB_shader_texture_image_samples

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
This commit is contained in:
Alyssa Rosenzweig
2023-11-21 19:27:12 -04:00
committed by Alyssa Rosenzweig
parent bc6b2d087b
commit 5382f57e81
4 changed files with 8 additions and 3 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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: {