From 20e8e11d643ac5150589bfc8638c594ccf6eb64a Mon Sep 17 00:00:00 2001 From: Ilia Mirkin Date: Mon, 15 Nov 2021 18:59:07 -0500 Subject: [PATCH] freedreno/a6xx: re-express buffer textures more logically Same as a5xx, move one bit into the tex type, one as a separate named BUFFER bit. Signed-off-by: Ilia Mirkin Part-of: --- src/freedreno/fdl/fd6_view.c | 4 +++- src/freedreno/fdl/freedreno_layout.h | 1 + src/freedreno/registers/adreno/a6xx.xml | 6 +++--- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/freedreno/fdl/fd6_view.c b/src/freedreno/fdl/fd6_view.c index fb5acdf36e5..e950953b375 100644 --- a/src/freedreno/fdl/fd6_view.c +++ b/src/freedreno/fdl/fd6_view.c @@ -48,6 +48,7 @@ fdl6_tex_type(enum fdl_view_type type, bool storage) STATIC_ASSERT((unsigned) FDL_VIEW_TYPE_2D == (unsigned) A6XX_TEX_2D); STATIC_ASSERT((unsigned) FDL_VIEW_TYPE_CUBE == (unsigned) A6XX_TEX_CUBE); STATIC_ASSERT((unsigned) FDL_VIEW_TYPE_3D == (unsigned) A6XX_TEX_3D); + STATIC_ASSERT((unsigned) FDL_VIEW_TYPE_BUFFER == (unsigned) A6XX_TEX_BUFFER); return (storage && type == FDL_VIEW_TYPE_CUBE) ? A6XX_TEX_2D : (enum a6xx_tex_type) type; @@ -392,7 +393,8 @@ fdl6_buffer_view_init(uint32_t *descriptor, enum pipe_format format, COND(util_format_is_srgb(format), A6XX_TEX_CONST_0_SRGB); descriptor[1] = A6XX_TEX_CONST_1_WIDTH(elements & ((1 << 15) - 1)) | A6XX_TEX_CONST_1_HEIGHT(elements >> 15); - descriptor[2] = A6XX_TEX_CONST_2_UNK4 | A6XX_TEX_CONST_2_UNK31; + descriptor[2] = A6XX_TEX_CONST_2_BUFFER | + A6XX_TEX_CONST_2_TYPE(A6XX_TEX_BUFFER); descriptor[4] = iova; descriptor[5] = iova >> 32; } diff --git a/src/freedreno/fdl/freedreno_layout.h b/src/freedreno/fdl/freedreno_layout.h index 207aea04224..37a565b338d 100644 --- a/src/freedreno/fdl/freedreno_layout.h +++ b/src/freedreno/fdl/freedreno_layout.h @@ -261,6 +261,7 @@ enum fdl_view_type { FDL_VIEW_TYPE_2D = 1, FDL_VIEW_TYPE_CUBE = 2, FDL_VIEW_TYPE_3D = 3, + FDL_VIEW_TYPE_BUFFER = 4, }; enum fdl_chroma_location { diff --git a/src/freedreno/registers/adreno/a6xx.xml b/src/freedreno/registers/adreno/a6xx.xml index 4a966dee8f0..567eb46385c 100644 --- a/src/freedreno/registers/adreno/a6xx.xml +++ b/src/freedreno/registers/adreno/a6xx.xml @@ -3785,6 +3785,7 @@ to upconvert to 32b float internally? + @@ -3813,13 +3814,12 @@ to upconvert to 32b float internally? b31 is probably the 'BUFFER' bit.. it is the one that changes behavior of texture in dEQP-GLES31.functional.texture.texture_buffer.render.as_fragment_texture.buffer_size_131071 --> - + Pitch in bytes (so actually stride) - - +