[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[Git][xorg-team/lib/mesa][debian-unstable] cherry-pick patch from upstream: etnaviv-add-support-for-texelfetch.patch



Title: GitLab

Timo Aaltonen pushed to branch debian-unstable at X Strike Force / lib / mesa

Commits:

  • 81c47686
    by Johannes Schauer Marin Rodrigues at 2025-05-05T06:50:46+02:00
    cherry-pick patch from upstream: etnaviv-add-support-for-texelfetch.patch
    
    Closes: #1104029
    

3 changed files:

Changes:

  • debian/changelog
    1
    +mesa (25.0.5-1.1) UNRELEASED; urgency=medium
    
    2
    +
    
    3
    +  * Non-maintainer upload.
    
    4
    +  * cherry-pick patch from upstream: etnaviv-add-support-for-texelfetch.patch
    
    5
    +    (Closes: #1104029)
    
    6
    +
    
    7
    + -- Johannes Schauer Marin Rodrigues <josch@debian.org>  Mon, 05 May 2025 06:50:27 +0200
    
    8
    +
    
    1 9
     mesa (25.0.5-1) unstable; urgency=medium
    
    2 10
     
    
    3 11
       [ Simon McVittie ]
    

  • debian/patches/etnaviv-add-support-for-texelfetch.patch
    1
    +From da90fca6093dd58cc351b0ac624ea8c0d83a81f9 Mon Sep 17 00:00:00 2001
    
    2
    +From: Christian Gmeiner <cgmeiner@igalia.com>
    
    3
    +Date: Fri, 18 Apr 2025 23:35:20 +0200
    
    4
    +Subject: [PATCH 1/3] etnaviv: isa: Add txf instruction
    
    5
    +
    
    6
    +This instruction is used to implement texelfetch.
    
    7
    +
    
    8
    +Blob generates such txf's for
    
    9
    +dEQP-GLES3.functional.shaders.texture_functions.texelfetch.+
    
    10
    +
    
    11
    +Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
    
    12
    +Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34685>
    
    13
    +---
    
    14
    + src/etnaviv/isa/etnaviv.xml      | 5 +++++
    
    15
    + src/etnaviv/isa/tests/disasm.cpp | 1 +
    
    16
    + 2 files changed, 6 insertions(+)
    
    17
    +
    
    18
    +diff --git a/src/etnaviv/isa/etnaviv.xml b/src/etnaviv/isa/etnaviv.xml
    
    19
    +index a337c1e9d0762..42f551238bf1b 100644
    
    20
    +--- a/src/etnaviv/isa/etnaviv.xml
    
    21
    ++++ b/src/etnaviv/isa/etnaviv.xml
    
    22
    +@@ -1359,6 +1359,11 @@ SPDX-License-Identifier: MIT
    
    23
    + 	<pattern pos="80">1</pattern> <!-- OPCODE_BIT6 -->
    
    24
    + </bitset>
    
    25
    + 
    
    26
    ++<bitset name="txf" extends="#instruction-tex-src0-src1-src2">
    
    27
    ++	<pattern low="0" high="5">001001</pattern> <!-- OPC -->
    
    28
    ++	<pattern pos="80">1</pattern> <!-- OPCODE_BIT6 -->
    
    29
    ++</bitset>
    
    30
    ++
    
    31
    + <bitset name="imadlo0" extends="#instruction-alu-src0-src1-src2">
    
    32
    + 	<pattern low="0" high="5">001100</pattern> <!-- OPC -->
    
    33
    + 	<pattern pos="80">1</pattern> <!-- OPCODE_BIT6 -->
    
    34
    +diff --git a/src/etnaviv/isa/tests/disasm.cpp b/src/etnaviv/isa/tests/disasm.cpp
    
    35
    +index aa027618aa40a..3d4ebec8a49be 100644
    
    36
    +--- a/src/etnaviv/isa/tests/disasm.cpp
    
    37
    ++++ b/src/etnaviv/isa/tests/disasm.cpp
    
    38
    +@@ -166,6 +166,7 @@ INSTANTIATE_TEST_SUITE_P(Opcodes, DisasmTest,
    
    39
    +       disasm_state{ {0x00801036, 0x15400804, 0x01540050, 0x00000002}, "clamp0_max        t0.x___, u0.yyyy, u0.zzzz, void\n"},
    
    40
    +       disasm_state{ {0x0080103b, 0x00001804, 0x40000000, 0x00400028}, "iaddsat.s32       t0.x___, t1.xxxx, void, -t2.xxxx\n"},
    
    41
    +       disasm_state{ {0x01001008, 0x15400804, 0xd00100c0, 0x00000007}, "imod.u16          t0._y__, t0.yyyy, 1, void\n"},
    
    42
    ++      disasm_state{ {0x07811009, 0x15001f20, 0x01ff00c0, 0x78021008}, "txf               t1, tex0.xyzw, t1.xyyy, t1.wwww, 4352\n", FLAG_FAILING_ASM},
    
    43
    +       disasm_state{ {0x0080103c, 0x00001804, 0x40000140, 0x00000000}, "imullo0.s32       t0.x___, t1.xxxx, t2.xxxx, void\n"},
    
    44
    +       disasm_state{ {0x00801000, 0x00001804, 0x40010140, 0x00000000}, "imulhi0.s32       t0.x___, t1.xxxx, t2.xxxx, void\n"},
    
    45
    +       disasm_state{ {0x00801004, 0x00201804, 0x40010040, 0x00000000}, "idiv0.s16         t0.x___, t1.xxxx, t0.xxxx, void\n"},
    
    46
    +-- 
    
    47
    +GitLab
    
    48
    +
    
    49
    +
    
    50
    +From eefe486533eb58d3d1e81daa5abd16e63ee4c7a9 Mon Sep 17 00:00:00 2001
    
    51
    +From: Christian Gmeiner <cgmeiner@igalia.com>
    
    52
    +Date: Fri, 18 Apr 2025 23:37:19 +0200
    
    53
    +Subject: [PATCH 2/3] etnaviv: nir: Legalize txf lod src
    
    54
    +
    
    55
    +The LOD must be a float, unlike the GLSL function, which expects an integer.
    
    56
    +
    
    57
    +Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
    
    58
    +Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
    
    59
    +Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34685>
    
    60
    +---
    
    61
    + .../etnaviv/etnaviv_nir_lower_texture.c       | 25 +++++++++++++++++++
    
    62
    + 1 file changed, 25 insertions(+)
    
    63
    +
    
    64
    +diff --git a/src/gallium/drivers/etnaviv/etnaviv_nir_lower_texture.c b/src/gallium/drivers/etnaviv/etnaviv_nir_lower_texture.c
    
    65
    +index d0462ead016dc..d20d175da79a8 100644
    
    66
    +--- a/src/gallium/drivers/etnaviv/etnaviv_nir_lower_texture.c
    
    67
    ++++ b/src/gallium/drivers/etnaviv/etnaviv_nir_lower_texture.c
    
    68
    +@@ -26,6 +26,28 @@ lower_txs(nir_builder *b, nir_instr *instr, UNUSED void *data)
    
    69
    +    return true;
    
    70
    + }
    
    71
    + 
    
    72
    ++static bool
    
    73
    ++legalize_txf_lod(nir_builder *b, nir_instr *instr, UNUSED void *data)
    
    74
    ++{
    
    75
    ++   if (instr->type != nir_instr_type_tex)
    
    76
    ++      return false;
    
    77
    ++
    
    78
    ++   nir_tex_instr *tex = nir_instr_as_tex(instr);
    
    79
    ++
    
    80
    ++   if (tex->op != nir_texop_txf)
    
    81
    ++      return false;
    
    82
    ++
    
    83
    ++   b->cursor = nir_before_instr(instr);
    
    84
    ++
    
    85
    ++   int lod_index = nir_tex_instr_src_index(tex, nir_tex_src_lod);
    
    86
    ++   assert(lod_index >= 0);
    
    87
    ++   nir_def *lod = tex->src[lod_index].src.ssa;
    
    88
    ++
    
    89
    ++   nir_src_rewrite(&tex->src[lod_index].src, nir_i2f32(b, lod));
    
    90
    ++
    
    91
    ++   return true;
    
    92
    ++}
    
    93
    ++
    
    94
    + bool
    
    95
    + etna_nir_lower_texture(nir_shader *s, struct etna_shader_key *key)
    
    96
    + {
    
    97
    +@@ -48,5 +70,8 @@ etna_nir_lower_texture(nir_shader *s, struct etna_shader_key *key)
    
    98
    +    NIR_PASS(progress, s, nir_shader_instructions_pass, lower_txs,
    
    99
    +          nir_metadata_control_flow, NULL);
    
    100
    + 
    
    101
    ++   NIR_PASS(progress, s, nir_shader_instructions_pass, legalize_txf_lod,
    
    102
    ++      nir_metadata_control_flow, NULL);
    
    103
    ++
    
    104
    +    return progress;
    
    105
    + }
    
    106
    +-- 
    
    107
    +GitLab
    
    108
    +
    
    109
    +
    
    110
    +From 614b66529de2832575cdb0c97581d0d5f791ed72 Mon Sep 17 00:00:00 2001
    
    111
    +From: Christian Gmeiner <cgmeiner@igalia.com>
    
    112
    +Date: Fri, 18 Apr 2025 23:42:14 +0200
    
    113
    +Subject: [PATCH 3/3] etnaviv: nir: Add support for txf texture operation
    
    114
    +
    
    115
    +The src[2] value 0x1100 is set based on observed behavior of the blob driver,
    
    116
    +though its exact meaning remains to be documented.
    
    117
    +
    
    118
    +Passes all dEQP-GLES3.functional.shaders.texture_functions.texelfetch.*
    
    119
    +tests on GC7000.
    
    120
    +
    
    121
    +Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
    
    122
    +Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34685>
    
    123
    +---
    
    124
    + src/gallium/drivers/etnaviv/etnaviv_compiler_nir_emit.c | 4 ++++
    
    125
    + 1 file changed, 4 insertions(+)
    
    126
    +
    
    127
    +diff --git a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir_emit.c b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir_emit.c
    
    128
    +index 08a5ab5fb7bc3..708f0788b580d 100644
    
    129
    +--- a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir_emit.c
    
    130
    ++++ b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir_emit.c
    
    131
    +@@ -212,6 +212,10 @@ etna_emit_tex(struct etna_compile *c, nir_texop op, unsigned texid, unsigned dst
    
    132
    +    case nir_texop_txb: inst.opcode = ISA_OPC_TEXLDB; break;
    
    133
    +    case nir_texop_txd: inst.opcode = ISA_OPC_TEXLDD; break;
    
    134
    +    case nir_texop_txl: inst.opcode = ISA_OPC_TEXLDL; break;
    
    135
    ++   case nir_texop_txf:
    
    136
    ++      inst.opcode = ISA_OPC_TXF;
    
    137
    ++      inst.src[2] = etna_immediate_int(0x1100);
    
    138
    ++      break;
    
    139
    +    default:
    
    140
    +       compile_error(c, "Unhandled NIR tex type: %d\n", op);
    
    141
    +    }
    
    142
    +-- 
    
    143
    +GitLab
    
    144
    +

  • debian/patches/series
    ... ... @@ -2,3 +2,4 @@ path_max.diff
    2 2
     src_glx_dri_common.h.diff
    
    3 3
     disable_ppc64el_assembly.diff
    
    4 4
     drisw-Avoid-crashing-when-swrast_loader-NULL.patch
    
    5
    +etnaviv-add-support-for-texelfetch.patch


  • Reply to: