From c87095e518df125e116400bd32475d320f79ca97 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 16 Aug 2023 15:53:13 -0400 Subject: [PATCH] asahi: Use a 2D Array texture for array render targets Fixes KHR-GLES31.core.geometry_shader.layered_framebuffer.blending_support with eMRT forced. Signed-off-by: Alyssa Rosenzweig --- src/gallium/drivers/asahi/agx_state.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/asahi/agx_state.c b/src/gallium/drivers/asahi/agx_state.c index 524483d4568..454d72b2c23 100644 --- a/src/gallium/drivers/asahi/agx_state.c +++ b/src/gallium/drivers/asahi/agx_state.c @@ -1073,12 +1073,13 @@ image_view_for_surface(struct pipe_surface *surf) static struct pipe_sampler_view sampler_view_for_surface(struct pipe_surface *surf) { + bool layered = surf->u.tex.last_layer > surf->u.tex.first_layer; + return (struct pipe_sampler_view){ - /* To reduce shader variants, we always use a 2D - * texture. For reloads of arrays and cube maps, we - * map a single layer as a 2D image. + /* To reduce shader variants, we always use a 2D texture. For reloads of + * arrays and cube maps, we map a single layer as a 2D image. */ - .target = PIPE_TEXTURE_2D, + .target = layered ? PIPE_TEXTURE_2D_ARRAY : PIPE_TEXTURE_2D, .swizzle_r = PIPE_SWIZZLE_X, .swizzle_g = PIPE_SWIZZLE_Y, .swizzle_b = PIPE_SWIZZLE_Z,