platform/upstream/mesa.git
13 months agoradv: Update navi21 llvm fails
Konstantin Seurer [Sat, 2 Sep 2023 12:25:26 +0000 (14:25 +0200)]
radv: Update navi21 llvm fails

Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25010>

13 months agoradv: Don't advertise features requiring PS epilogs with LLVM
Konstantin Seurer [Sat, 2 Sep 2023 11:30:34 +0000 (13:30 +0200)]
radv: Don't advertise features requiring PS epilogs with LLVM

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25010>

13 months agoac/llvm: Use float types for float atomics
Konstantin Seurer [Sat, 2 Sep 2023 12:24:37 +0000 (14:24 +0200)]
ac/llvm: Use float types for float atomics

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25010>

13 months agoac/llvm: Use the correct return type for uadd_carry and usub_borrow
Konstantin Seurer [Sat, 2 Sep 2023 12:22:33 +0000 (14:22 +0200)]
ac/llvm: Use the correct return type for uadd_carry and usub_borrow

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25010>

13 months agoac/llvm: Fix typed loads with 16bit formats
Konstantin Seurer [Fri, 1 Sep 2023 19:37:39 +0000 (21:37 +0200)]
ac/llvm: Fix typed loads with 16bit formats

For some reason, LLVM can't handle those. Emit a 32bit load and type
conversion instead,

Fixes: 22ca8c8 ("ac/llvm: Implement typed buffer load intrinsic.")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25010>

13 months agoradv/ci: Improve ray tracing skips
Konstantin Seurer [Tue, 12 Sep 2023 14:30:24 +0000 (16:30 +0200)]
radv/ci: Improve ray tracing skips

I didn't know they were regexes. This also excludes all "1048576" tests.
They build an acceleration structure with 1 primitive 1048576 times
which only warms up the Valve farm and doesn't accomplish anything else.

Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24720>

13 months agoradv: Perform multiple sorts in parallel
Konstantin Seurer [Wed, 16 Aug 2023 09:50:18 +0000 (11:50 +0200)]
radv: Perform multiple sorts in parallel

This was the last part that didn't scale with multiple infos. Reducing
the amount of barriers in this case improves DOOM Eternal performance by
50%. (Running with low resolution)

Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24720>

13 months agoradv/radix_sort: Vendor the radix sort dispatch code
Konstantin Seurer [Wed, 16 Aug 2023 09:09:25 +0000 (11:09 +0200)]
radv/radix_sort: Vendor the radix sort dispatch code

This needs to be done so we can optimize it for occpuancy when building
multiple acceleration structures in parallel. Changes to the original
code:

- Change // to /* */
- clang-format
- Replace vkCmd calls with calls to the driver entrypoints
- Add a light weight info struct
- Use radv_fill_buffer directly

Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24720>

13 months agoradv: Remove dead radix_sort_vk_get_memory_requirements call
Konstantin Seurer [Wed, 16 Aug 2023 08:37:56 +0000 (10:37 +0200)]
radv: Remove dead radix_sort_vk_get_memory_requirements call

Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24720>

13 months agoradeonsi/vcn: change max_poc to fixed value for hevc encoder.
Ruijing Dong [Wed, 13 Sep 2023 19:03:17 +0000 (15:03 -0400)]
radeonsi/vcn: change max_poc to fixed value for hevc encoder.

problem: max_poc means the number of bits used in poc lsb
         in slice header, and it should not be related to GOP
 size. When large GOP size used, it could generate
 corrupted video, as the POC could not be correctly
 decoded.

solution: use fixed value of max_poc (16) for now.

Cc: mesa-stable
Reviewed-by: Boyuan Zhang <Boyuan.Zhang@amd.com>
Signed-off-by: Ruijing Dong <ruijing.dong@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25214>

13 months agoac/spm: initialize and set instance mapping for counters
Samuel Pitoiset [Wed, 13 Sep 2023 13:41:28 +0000 (15:41 +0200)]
ac/spm: initialize and set instance mapping for counters

This configures global, per-SE and per-SA counters with different
indexes. This is still unused because only for the first instance is
used by RADV/RadeonSI, but this will be changed.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25211>

13 months agoac/spm: rework how segment muxsel RAM are filled
Samuel Pitoiset [Wed, 13 Sep 2023 15:03:45 +0000 (17:03 +0200)]
ac/spm: rework how segment muxsel RAM are filled

This is more close to PAL and it will be easier to add GFX11 support
on top of it.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25211>

13 months agoac/spm: fix checking if the counter instance is valid
Samuel Pitoiset [Wed, 13 Sep 2023 12:49:45 +0000 (14:49 +0200)]
ac/spm: fix checking if the counter instance is valid

This should be compared against the number of global instances, and
there is also an off-by-one error.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25211>

13 months agoac/perfcounter: compute the number of global instances of TCP,SQ,GL1C and GL2C
Samuel Pitoiset [Wed, 13 Sep 2023 12:34:20 +0000 (14:34 +0200)]
ac/perfcounter: compute the number of global instances of TCP,SQ,GL1C and GL2C

This will be used by SPM.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25211>

13 months agoac/perfcounter: set the number of instances of GL1C to 4
Samuel Pitoiset [Wed, 13 Sep 2023 12:31:51 +0000 (14:31 +0200)]
ac/perfcounter: set the number of instances of GL1C to 4

According to PAL there is 4 GL1C quadrants. This will also be used
by SPM.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25211>

13 months agoac/gpu_info: init num_cu_per_sh from the kernel
Samuel Pitoiset [Wed, 13 Sep 2023 12:32:58 +0000 (14:32 +0200)]
ac/gpu_info: init num_cu_per_sh from the kernel

This will be used to configure the number of instances of TCP.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25211>

13 months agoac/spm: add SPM block definition for GFX10-GFX10.3
Samuel Pitoiset [Wed, 13 Sep 2023 10:46:59 +0000 (12:46 +0200)]
ac/spm: add SPM block definition for GFX10-GFX10.3

Instead of using magic values.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25211>

13 months agoac/spm: remove useless SPM block setting for GFX9 and older GPUs
Samuel Pitoiset [Wed, 13 Sep 2023 10:44:52 +0000 (12:44 +0200)]
ac/spm: remove useless SPM block setting for GFX9 and older GPUs

SPM is only implemented for GFX10+ on RADV/RadeonSI, although it's
technically possible on GFX9 but unused by RGP, so don't care.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25211>

13 months agoradv,radeonsi: use AC_SPM_SEGMENT_TYPE_xxx instead of magic values
Samuel Pitoiset [Tue, 12 Sep 2023 14:50:06 +0000 (16:50 +0200)]
radv,radeonsi: use AC_SPM_SEGMENT_TYPE_xxx instead of magic values

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25211>

13 months agoradv: enable the PKT3 CAM bit for some SPM register writes
Samuel Pitoiset [Tue, 12 Sep 2023 13:46:49 +0000 (15:46 +0200)]
radv: enable the PKT3 CAM bit for some SPM register writes

PAL does that.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25211>

13 months agoradeonsi/vcn: Set H264/HEVC chroma sample location in bitstream
David Rosca [Wed, 6 Sep 2023 10:17:53 +0000 (12:17 +0200)]
radeonsi/vcn: Set H264/HEVC chroma sample location in bitstream

Reviewed-by: Boyuan Zhang <Boyuan.Zhang@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25078>

13 months agofrontends/va: Parse chroma sample location in H264/HEVC SPS
David Rosca [Wed, 6 Sep 2023 10:07:50 +0000 (12:07 +0200)]
frontends/va: Parse chroma sample location in H264/HEVC SPS

Reviewed-by: Boyuan Zhang <Boyuan.Zhang@amd.com>
Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25078>

13 months agoac/spm: add SPM counters configuration for GFX11
Samuel Pitoiset [Tue, 12 Sep 2023 08:32:26 +0000 (10:32 +0200)]
ac/spm: add SPM counters configuration for GFX11

All SQ counters changed to SQ_WGP and the L2 miss changed too.
Sourced from PAL.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25175>

13 months agoac/perfcounter: add new SQ_WGP block for GFX11+
Samuel Pitoiset [Tue, 12 Sep 2023 08:02:16 +0000 (10:02 +0200)]
ac/perfcounter: add new SQ_WGP block for GFX11+

According to PAL, these SQ counters can be sampled at WGP granularity.
Some SPM counters captured for RGP are using this GPU block.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25175>

13 months agoac,radv,radeonsi: rework SPM counters configuration and share it
Samuel Pitoiset [Tue, 12 Sep 2023 08:28:21 +0000 (10:28 +0200)]
ac,radv,radeonsi: rework SPM counters configuration and share it

This should be easier to add GFX11 support.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25175>

13 months agoissue_templates/Bug Report: fix outdated URL for GFXReconstruct
Samuel Pitoiset [Thu, 14 Sep 2023 06:07:45 +0000 (08:07 +0200)]
issue_templates/Bug Report: fix outdated URL for GFXReconstruct

The URL moved.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25218>

13 months agoaco/insert_exec_mask: Simplify WQM handling (2/2)
Daniel Schürmann [Mon, 4 Sep 2023 08:07:27 +0000 (10:07 +0200)]
aco/insert_exec_mask: Simplify WQM handling (2/2)

by calculating WQM requirements on demand.

No fossil-db changes.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25038>

13 months agoaco/insert_exec_mask: Simplify WQM handling (1/2)
Daniel Schürmann [Sun, 3 Sep 2023 09:05:08 +0000 (11:05 +0200)]
aco/insert_exec_mask: Simplify WQM handling (1/2)

by using p_end_wqm as indicator for when to end WQM mode.

Totals from 10049 (13.12% of 76572) affected shaders: (GFX11)

MaxWaves: 301126 -> 301136 (+0.00%)
Instrs: 7061909 -> 7049272 (-0.18%); split: -0.21%, +0.03%
CodeSize: 37720684 -> 37664244 (-0.15%); split: -0.18%, +0.03%
VGPRs: 357204 -> 357180 (-0.01%); split: -0.13%, +0.12%
Latency: 62757830 -> 62827080 (+0.11%); split: -0.06%, +0.17%
InvThroughput: 8589248 -> 8589963 (+0.01%); split: -0.02%, +0.02%
VClause: 132541 -> 132547 (+0.00%); split: -0.03%, +0.03%
SClause: 322916 -> 322964 (+0.01%); split: -0.04%, +0.05%
Copies: 546446 -> 547657 (+0.22%); split: -0.13%, +0.35%
Branches: 189527 -> 188293 (-0.65%)
PreSGPRs: 332792 -> 332529 (-0.08%); split: -0.08%, +0.00%
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25038>

13 months agoaco: insert a single p_end_wqm after the last derivative calculation
Daniel Schürmann [Sat, 2 Sep 2023 09:14:33 +0000 (11:14 +0200)]
aco: insert a single p_end_wqm after the last derivative calculation

This new instruction replaces p_wqm.

Totals from 28065 (36.65% of 76572) affected shaders: (GFX11)
MaxWaves: 823922 -> 823952 (+0.00%); split: +0.01%, -0.01%
Instrs: 22221375 -> 22180465 (-0.18%); split: -0.26%, +0.08%
CodeSize: 117310676 -> 117040684 (-0.23%); split: -0.30%, +0.07%
VGPRs: 1183476 -> 1186656 (+0.27%); split: -0.19%, +0.46%
SpillSGPRs: 2305 -> 2302 (-0.13%)
Latency: 176559310 -> 176427793 (-0.07%); split: -0.21%, +0.14%
InvThroughput: 26245204 -> 26195550 (-0.19%); split: -0.26%, +0.07%
VClause: 368058 -> 369460 (+0.38%); split: -0.21%, +0.59%
SClause: 857077 -> 842588 (-1.69%); split: -2.06%, +0.37%
Copies: 1245650 -> 1249434 (+0.30%); split: -0.33%, +0.63%
Branches: 394837 -> 396070 (+0.31%); split: -0.01%, +0.32%
PreSGPRs: 1019139 -> 1019567 (+0.04%); split: -0.02%, +0.06%
PreVGPRs: 925739 -> 931860 (+0.66%); split: -0.00%, +0.66%

Changes are due to scheduling and re-enabling cross-lane optimizations.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25038>

13 months agoaco: don't insert a copy when emitting p_wqm
Daniel Schürmann [Sat, 2 Sep 2023 10:06:51 +0000 (12:06 +0200)]
aco: don't insert a copy when emitting p_wqm

Totals from 351 (0.46% of 76572) affected shaders: (GFX11)

Instrs: 709202 -> 709600 (+0.06%); split: -0.02%, +0.08%
CodeSize: 3606364 -> 3608040 (+0.05%); split: -0.01%, +0.06%
Latency: 3589841 -> 3590756 (+0.03%); split: -0.01%, +0.03%
InvThroughput: 463303 -> 463324 (+0.00%)
SClause: 28147 -> 28201 (+0.19%); split: -0.02%, +0.22%
Copies: 43243 -> 43204 (-0.09%); split: -0.24%, +0.15%
PreSGPRs: 21028 -> 21042 (+0.07%)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25038>

13 months agoaco: make p_wqm a marker instruction without Operands/Definitions
Daniel Schürmann [Sat, 2 Sep 2023 08:30:02 +0000 (10:30 +0200)]
aco: make p_wqm a marker instruction without Operands/Definitions

Totals from 28277 (36.93% of 76572) affected shaders: (GFX11)

MaxWaves: 833930 -> 833898 (-0.00%); split: +0.01%, -0.01%
Instrs: 21366950 -> 21353346 (-0.06%); split: -0.11%, +0.05%
CodeSize: 112855368 -> 112610508 (-0.22%); split: -0.24%, +0.03%
VGPRs: 1157748 -> 1158540 (+0.07%); split: -0.10%, +0.17%
SpillSGPRs: 2465 -> 2463 (-0.08%); split: -0.16%, +0.08%
Latency: 168339886 -> 168383646 (+0.03%); split: -0.10%, +0.12%
InvThroughput: 25164895 -> 25158376 (-0.03%); split: -0.08%, +0.06%
VClause: 347660 -> 346256 (-0.40%); split: -0.55%, +0.15%
SClause: 794460 -> 799521 (+0.64%); split: -0.33%, +0.97%
Copies: 1151908 -> 1148370 (-0.31%); split: -0.54%, +0.23%
Branches: 359447 -> 359437 (-0.00%); split: -0.01%, +0.00%
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25038>

13 months agoaco: don't optimize cross-lane instructions across p_wqm
Daniel Schürmann [Mon, 4 Sep 2023 13:32:24 +0000 (15:32 +0200)]
aco: don't optimize cross-lane instructions across p_wqm

We will use p_wqm as a marker in the next step.

Totals from 8846 (11.55% of 76572) affected shaders: (GFX11)

Instrs: 7031274 -> 7072729 (+0.59%); split: -0.02%, +0.60%
CodeSize: 37060272 -> 37355244 (+0.80%); split: -0.01%, +0.80%
VGPRs: 402660 -> 398724 (-0.98%); split: -0.99%, +0.01%
Latency: 62231926 -> 62322311 (+0.15%); split: -0.01%, +0.15%
InvThroughput: 10341361 -> 10392589 (+0.50%); split: -0.00%, +0.50%
VClause: 105344 -> 105368 (+0.02%); split: -0.03%, +0.05%
SClause: 218330 -> 218469 (+0.06%); split: -0.07%, +0.14%
Copies: 378609 -> 377644 (-0.25%); split: -0.42%, +0.17%
Branches: 97218 -> 97207 (-0.01%); split: -0.01%, +0.00%
PreSGPRs: 307654 -> 307644 (-0.00%); split: -0.08%, +0.08%
PreVGPRs: 314744 -> 308650 (-1.94%)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25038>

13 months agoaco/insert_exec_mask: set Exact mode after p_discard_if when necessary
Daniel Schürmann [Mon, 4 Sep 2023 07:46:25 +0000 (09:46 +0200)]
aco/insert_exec_mask: set Exact mode after p_discard_if when necessary

Fixes: 5e9df85b1a4504c5b4162e77e139056dc80accc6 ('aco: optimize discard_if when WQM is not needed afterwards')
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25038>

13 months agoaco: remove fast path in insert_exec_mask's process_instructions
Rhys Perry [Thu, 8 Sep 2022 17:05:59 +0000 (18:05 +0100)]
aco: remove fast path in insert_exec_mask's process_instructions

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25038>

13 months agoaco: append p_logical_end after monolithic RT shaders
Daniel Schürmann [Wed, 13 Sep 2023 14:40:55 +0000 (16:40 +0200)]
aco: append p_logical_end after monolithic RT shaders

Fixes: bdec044c880ef38fad3641d306b9828e3c871003 ('aco: Do not fixup registers if there are no shader calls')
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25038>

13 months agoac,radeonsi: move vcn enc av1 default cdf file to common
Dave Airlie [Tue, 27 Jun 2023 05:24:08 +0000 (15:24 +1000)]
ac,radeonsi: move vcn enc av1 default cdf file to common

This can be used by radv.

Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25196>

13 months agoac,radeonsi: move vcn enc structs to common
Dave Airlie [Sun, 18 Dec 2022 21:00:15 +0000 (07:00 +1000)]
ac,radeonsi: move vcn enc structs to common

This just moves the header to make it easier to share with radv.

Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25196>

13 months agoradv: emit relocation for mesh/task shaders
Samuel Pitoiset [Mon, 11 Sep 2023 09:31:37 +0000 (11:31 +0200)]
radv: emit relocation for mesh/task shaders

RGP requires shaders to be contiguous in memory.

Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25144>

13 months agoradv: set THREAD_TRACE_MARKER_ENABLE for mesh/task draws
Samuel Pitoiset [Mon, 11 Sep 2023 09:20:08 +0000 (11:20 +0200)]
radv: set THREAD_TRACE_MARKER_ENABLE for mesh/task draws

PAL does that.

Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25144>

13 months agoac/rgp: use correct API stage string for mesh/task shaders
Samuel Pitoiset [Mon, 11 Sep 2023 09:18:11 +0000 (11:18 +0200)]
ac/rgp: use correct API stage string for mesh/task shaders

This allows RGP to report the ISA.

Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25144>

13 months agoradv: fix instruction timing on GFX11
Samuel Pitoiset [Tue, 12 Sep 2023 06:51:49 +0000 (08:51 +0200)]
radv: fix instruction timing on GFX11

GFX11 seems to operate on the last active CU.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25171>

13 months agoradv: disable unsupported hw shader stages for RGP on GFX11+
Samuel Pitoiset [Tue, 12 Sep 2023 06:49:33 +0000 (08:49 +0200)]
radv: disable unsupported hw shader stages for RGP on GFX11+

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25171>

13 months agoradv: set THREAD_TRACE_TOKEN_MASK.BOP_EVENTS_TOKEN_INCLUDE on GFX10.3+
Samuel Pitoiset [Mon, 11 Sep 2023 18:23:25 +0000 (20:23 +0200)]
radv: set THREAD_TRACE_TOKEN_MASK.BOP_EVENTS_TOKEN_INCLUDE on GFX10.3+

PAL does that.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25171>

13 months agoci: Only look at file changes for MRs
Daniel Stone [Wed, 13 Sep 2023 12:36:26 +0000 (13:36 +0100)]
ci: Only look at file changes for MRs

Lists of files changed are only really relevant if we're pushing an MR.
We don't want to trigger 'user added .ci-farms-disabled/igalia' because
the user pushed a branch when this file was already present upstream.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25205>

13 months agoci: Use container rules for containers
Daniel Stone [Wed, 13 Sep 2023 12:30:38 +0000 (13:30 +0100)]
ci: Use container rules for containers

If we have diverging rulesets, we can have the base container jobs
possibly not being created, and the leaf container jobs then trying to
run, which ends up in us failing to create pipelines.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25205>

13 months agoci: Always set user container jobs to manual
Daniel Stone [Wed, 13 Sep 2023 12:30:07 +0000 (13:30 +0100)]
ci: Always set user container jobs to manual

Don't require source changes to create the jobs, just create them
always.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25205>

13 months agoci: Move farm-disable rules before anything else
Daniel Stone [Wed, 13 Sep 2023 12:29:06 +0000 (13:29 +0100)]
ci: Move farm-disable rules before anything else

For consistency, make our 'when: never' rules be the first rules to
match any job, either build or container.

Otherwise we could end up with some jobs having when: never and others
having when: manual.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25205>

13 months agoiris: modify Wa_14014414195 to use intel_needs_workaround
Tapani Pälli [Wed, 13 Sep 2023 05:01:04 +0000 (08:01 +0300)]
iris: modify Wa_14014414195 to use intel_needs_workaround

Only applies to DG2, this was fixed in MTL.

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Rohan Garg <rohan.garg@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25197>

13 months agoradv/video: take db alignment into account when allocating images.
Dave Airlie [Tue, 12 Sep 2023 02:24:54 +0000 (12:24 +1000)]
radv/video: take db alignment into account when allocating images.

Make sure to take the db alignment into account when sizing the underlying
images.

Fixes a 360p sample from Lynne.

Cc: mesa-stable
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Lynne <dev@lynne.ee>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25168>

13 months agomeson: Warn about side-effects from DRM for FD KMDs
Mark Collins [Tue, 8 Aug 2023 10:00:49 +0000 (10:00 +0000)]
meson: Warn about side-effects from DRM for FD KMDs

Any build which requires Turnip to link to libdrm will cause a
runtime dependency which could be a compatibility hazard on
platforms such as Android which generally don't ship with libdrm.
This hazard could be unintentionally triggered and to avoid this
from happening, a warning is now issued when building FD with msm
alongside other backends or if DRM is enabled due to building a
Gallium driver using DRM.

Signed-off-by: Mark Collins <mark@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25005>

13 months agofreedreno+meson: Add lua+libarchive+libxml from Meson WrapDB
Mark Collins [Tue, 8 Aug 2023 09:54:03 +0000 (09:54 +0000)]
freedreno+meson: Add lua+libarchive+libxml from Meson WrapDB

These dependencies are required for building freedreno tools but on
platforms such as Android, these aren't included and would need to
be built from source. The easiest way to do this was using the
Meson WrapDB. Additionally, warnings were added when these deps are
missing as the decode tools will silently not be built otherwise.

Signed-off-by: Mark Collins <mark@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25005>

13 months agofreedreno/decode: Support building replay for multiple KMDs
Mark Collins [Tue, 8 Aug 2023 08:54:59 +0000 (08:54 +0000)]
freedreno/decode: Support building replay for multiple KMDs

As `freedreno_kmds` can contain both `msm` and `kgsl`, this case
would just produce a build with just KGSL due to the precedence of
the check which is inconsistent behavior. Now `replay` is built for
all active KMDs with a suffix for the KMD (eg: replay-kgsl/replay-msm).

Signed-off-by: Mark Collins <mark@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25005>

13 months agofreedreno: Only add drm/computerator when system_has_kms_drm
Mark Collins [Mon, 7 Aug 2023 14:22:45 +0000 (14:22 +0000)]
freedreno: Only add drm/computerator when system_has_kms_drm

These are both MSM-DRM specific subprojects which depend on it and
cannot be built without, this change is required to allow for KGSL
freedreno tool builds to compile successfully.

Signed-off-by: Mark Collins <mark@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25005>

13 months agofreedreno/rnn: Remove %n usage in fprintf
Mark Collins [Mon, 7 Aug 2023 14:17:55 +0000 (14:17 +0000)]
freedreno/rnn: Remove %n usage in fprintf

fprintf was utilized with %n to count the amount of characters it
outputted but this was redundant since it was at the end of the
statement and fprintf itself returns the amount of characters it
writes out.

It should be noted that %n is a compatibility hazard on Android as
it isn't supported on Android due to security reasons.

Signed-off-by: Mark Collins <mark@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25005>

13 months agofreedreno/replay: Add "gpu_print" function for command streams
Danylo Piliaiev [Wed, 7 Jun 2023 14:53:28 +0000 (16:53 +0200)]
freedreno/replay: Add "gpu_print" function for command streams

Allows to dump GPU memory, e.g.
 gpu_print(&ctx, cs, 0x4000086080, 4);

would print 4 dowrds from 0x4000086080:
 CP Log [0]:
         20002000 47340000 20012001 47340001

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25005>

13 months agofreedreno/replay: Add "print" instr to ir3 asm to be used in replay
Danylo Piliaiev [Thu, 1 Jun 2023 18:48:19 +0000 (20:48 +0200)]
freedreno/replay: Add "print" instr to ir3 asm to be used in replay

Could be used in shader assembly from rddecompiler when overriding
the cmdstream.

Usage:
 print r1.x, r3.z

 First arguments is three consecutive registers used for internal print
 needs.
 Second arg is register to print.

Output:
 Shader Log Entries: 36
 [0] 00000004 0.0000
 [1] 00000000 0.0000
 [2] 00000000 0.0000
 [3] 00000000 0.0000
 [4] beadc429 -0.3394
 [5] beadc429 -0.3394

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25005>

13 months agofreedreno/rddecompiler: Update to handle a7xx
Danylo Piliaiev [Wed, 24 May 2023 13:01:10 +0000 (15:01 +0200)]
freedreno/rddecompiler: Update to handle a7xx

Also make rdcompiler compilable for Android.

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25005>

13 months agofreedreno/replay: Add limited support for KGSL
Danylo Piliaiev [Tue, 16 May 2023 11:31:55 +0000 (13:31 +0200)]
freedreno/replay: Add limited support for KGSL

KGSL doesn't support IOVAs being set form userspace, so as a workaround
we pre-allocate a single buffer and hope that it always starts from the
same address.

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25005>

13 months agoanv: Remove i915_drm.h include from common code
José Roberto de Souza [Mon, 4 Sep 2023 18:25:56 +0000 (11:25 -0700)]
anv: Remove i915_drm.h include from common code

With the previous commit we are now able to build Anv without
including i915_drm.h from common code.

This is important as avoids that i915 specific code is included in
common code by mistake.

Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25044>

13 months agoanv: Move i915 handling of imported bos bo_flags
José Roberto de Souza [Mon, 4 Sep 2023 18:20:27 +0000 (11:20 -0700)]
anv: Move i915 handling of imported bos bo_flags

Imported bos already imported need special handling in i915.
That handling was moved to
anv_i915_gem_import_bo_alloc_flags_to_bo_flags() as the number of
imported bos is low.

Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25044>

13 months agoanv: Move bo_alloc_flags_to_bo_flags() to backend
José Roberto de Souza [Mon, 4 Sep 2023 18:15:29 +0000 (11:15 -0700)]
anv: Move bo_alloc_flags_to_bo_flags() to backend

The bo_flags are i915 specific and should not be handled in common
code, so here adding it to backend as it is in the hot-path.

There still i915 bo_flags handling in anv_device_import_bo() that
will be handled in the next patch.

Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25044>

13 months agoanv: Move i915 specific code from common anv_gem.c
José Roberto de Souza [Mon, 4 Sep 2023 17:29:17 +0000 (10:29 -0700)]
anv: Move i915 specific code from common anv_gem.c

Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25212>

13 months agoanv: Move i915 specific gem_set_caching to backend
José Roberto de Souza [Mon, 4 Sep 2023 17:14:23 +0000 (10:14 -0700)]
anv: Move i915 specific gem_set_caching to backend

Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25212>

13 months agovk/enum2str: add more max enum vendors
Mike Blumenkrantz [Wed, 13 Sep 2023 10:13:28 +0000 (06:13 -0400)]
vk/enum2str: add more max enum vendors

Acked-by: Iván Briano <ivan.briano@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25210>

13 months agozink: Change zink_vertex_elements_hw_state::b.strides to VkDeviceSize
Sviatoslav Peleshko [Wed, 13 Sep 2023 14:37:34 +0000 (17:37 +0300)]
zink: Change zink_vertex_elements_hw_state::b.strides to VkDeviceSize

Currently zink_vertex_elements_hw_state::b.strides is an array of 32-bit
unsigned values, while CmdBindVertexBuffers2EXT expects an array of
VkDeviceSize (64-bit unsigned). Instead of converting them for a call,
just change the type of the array itself.

Fixes: 76725452 ("gallium: move vertex stride to CSO")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9765
Signed-off-by: Sviatoslav Peleshko <sviatoslav.peleshko@globallogic.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25208>

13 months agoaux/tc: fix renderpass tracking fb state clobber scenario
Mike Blumenkrantz [Mon, 11 Sep 2023 13:41:37 +0000 (09:41 -0400)]
aux/tc: fix renderpass tracking fb state clobber scenario

in a stream like:
* set fb state (A)
* flush
* set fb state (B)
* draw -> driver query
* flush

the "driver query" should return the tc info corresponding to the most
recent fb state (B). previously this would increment to C because
the flag for incrementing at the start of a batch was set

Fixes: 07017aa137b ("util/tc: implement renderpass tracking")

Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25206>

13 months agointel: Sync xe_drm.h
José Roberto de Souza [Mon, 11 Sep 2023 21:02:28 +0000 (14:02 -0700)]
intel: Sync xe_drm.h

Sync xe_drm.h with commit e51e857ffad4 ("drm/xe/uapi: Remove useless max_page_size").
Most relevant changes are the removal of max_page_size from
drm_xe_query_mem_region and the typo fix in XE_QUERY_CONFIG_MIN_ALIGNMENT.

Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Ivan Briano <ivan.briano@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25162>

13 months agoci/zink: Add another conversion fail on a618
Daniel Stone [Wed, 13 Sep 2023 14:37:27 +0000 (15:37 +0100)]
ci/zink: Add another conversion fail on a618

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25207>

13 months agoci/radeonsi: Skip more really slow tests
Daniel Stone [Wed, 13 Sep 2023 14:33:31 +0000 (15:33 +0100)]
ci/radeonsi: Skip more really slow tests

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25207>

13 months agofreedreno: Include speedbin fallback in 740 chipid to fix probing
Konrad Dybcio [Wed, 13 Sep 2023 12:29:02 +0000 (14:29 +0200)]
freedreno: Include speedbin fallback in 740 chipid to fix probing

The kernel exposes CHIP_ID, which consists of:

[63:48] const 0 / reserved
[47:32] speedbin (default 0xffff)
[31:0 ] actual gpu chip ID

Fix the 740 chip id to make it probe correctly.
Keep the existing entry for the downstream KGSL driver.

Fixes: cd3719be7d09 ("freedreno: Fully define a730 and a740 device properties")
Reported-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25204>

13 months agoaux/tc: Add ASSERTED to unreferenced release build variable
Sil Vilerino [Wed, 13 Sep 2023 11:38:43 +0000 (07:38 -0400)]
aux/tc: Add ASSERTED to unreferenced release build variable

Fixes MSVC build error src/gallium/auxiliary/util/u_threaded_context.c(3184): error C4189: 'size': local variable is initialized but not referenced

Fixes: 51ad269198e ("aux/tc: handle stride mismatch during rp-optimized subdata")

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25203>

13 months agopvr: Use correct index when writing query availability data
Vlad Schiller [Mon, 4 Sep 2023 11:24:05 +0000 (12:24 +0100)]
pvr: Use correct index when writing query availability data

The availability data would be written to a different location in
the user provided buffer depending on whether the query for a given
index was available. Fix this by using fixed indicies when writing
the query and availability data.

Fixes conformance failures seen in the
dEQP-VK.query_pool.occlusion_query.get_reset_* test group when
implementing VK_EXT_host_query_reset.

Fixes: 279c7c6d5ad ("pvr: Implement vkGetQueryPoolResults API.")
Signed-off-by: Vlad Schiller <vlad-radu.schiller@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25116>

13 months agopanfrost: delete stale editorconfig file
Erik Faye-Lund [Mon, 11 Sep 2023 10:29:48 +0000 (12:29 +0200)]
panfrost: delete stale editorconfig file

We no longer use 8-space indent in panfrost, so let's remove the
needless .editorconfig, and instead inherit the 3-space indent from the
toplevel .editorconfig.

Fixes: 0afd691f296 ("panfrost: clang-format the tree")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25147>

13 months agozink: don't warn about missing scalarBlockLayout on v3dv
Mike Blumenkrantz [Wed, 13 Sep 2023 10:21:06 +0000 (06:21 -0400)]
zink: don't warn about missing scalarBlockLayout on v3dv

technically v3dv doesn't support the "full" feature, but it does support
enough of it to run zink without any issues

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25201>

13 months agoci/windows: drop build rules from test jobs
Eric Engestrom [Tue, 12 Sep 2023 17:08:15 +0000 (18:08 +0100)]
ci/windows: drop build rules from test jobs

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25183>

13 months agoci/windows: add windows docker runner tags to .windows-docker-vs2019
Eric Engestrom [Tue, 12 Sep 2023 18:33:52 +0000 (19:33 +0100)]
ci/windows: add windows docker runner tags to .windows-docker-vs2019

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25183>

13 months agoci/windows: centralize definition of windows runners tags
Eric Engestrom [Tue, 12 Sep 2023 18:32:07 +0000 (19:32 +0100)]
ci/windows: centralize definition of windows runners tags

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25183>

13 months agozink/ci: update list of expected failures for POLARIS10/NAVI10
Samuel Pitoiset [Wed, 13 Sep 2023 06:52:49 +0000 (08:52 +0200)]
zink/ci: update list of expected failures for POLARIS10/NAVI10

Fixed since piglit has been updated to
f7db20b03de6896d013826c0a731bc4417c1a5a0.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25199>

13 months agoci: don't run everything just because a farm gets re-enabled
Eric Engestrom [Mon, 11 Sep 2023 13:39:06 +0000 (14:39 +0100)]
ci: don't run everything just because a farm gets re-enabled

Let the other rules take care of this, as they did before
7cf13ea504e7e5be097e.

Fixes: 7cf13ea504e7e5be097e ("ci: skip containers & build jobs when disabling a farm")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25151>

13 months agov3dv: Enable VK API v1.2 for Android
Roman Stratiienko [Mon, 15 Aug 2022 15:20:21 +0000 (18:20 +0300)]
v3dv: Enable VK API v1.2 for Android

Now as all features are in place, we can enable it.

Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14195>

13 months agov3dv/android: Add AHardwareBuffer support
Roman Stratiienko [Sat, 2 Sep 2023 19:29:05 +0000 (22:29 +0300)]
v3dv/android: Add AHardwareBuffer support

The patch allows enabling Vulkan-based UI (SKIA, HWUI) on Android.
To enable - add 'TARGET_USES_VULKAN := true' into your device.mk file.

Passes:
 - dEQP-VK.api.external.memory.android_hardware_buffer.*
 - android.graphics.cts.BasicVulkanGpuTest
 - android.graphics.cts.MediaVulkanGpuTest

Camera preview window works.

Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14195>

13 months agov3dv: Split v3dv_image_init to use layout setting logic separately
Roman Stratiienko [Sat, 9 Sep 2023 21:12:27 +0000 (00:12 +0300)]
v3dv: Split v3dv_image_init to use layout setting logic separately

In AHB importing flow, the format is known at vkCreateImage step,
but buffer layout itself is not yet known. Buffer layout and modifier
must be updated later in vkBindImageMemory.

Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14195>

13 months agov3dv: Use format stored in vk_image and vk_image_view after init
Roman Stratiienko [Sat, 9 Sep 2023 20:53:25 +0000 (23:53 +0300)]
v3dv: Use format stored in vk_image and vk_image_view after init

Both vk_image_init and vk_image_view_init are smarter about format
settings and respect AHB extension needs.

Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14195>

13 months agov3dv/android: Rework Android native buffer importing logic
Roman Stratiienko [Sat, 2 Sep 2023 19:15:33 +0000 (22:15 +0300)]
v3dv/android: Rework Android native buffer importing logic

Rework it to use the existing VkImageDrmFormatModifierExplicitCreateInfoEXT
logic to set the image's explicit layout.

The code turned out to be generic enough so it could be integrated into
vk_image.c in the future and removed from the v3dv code.

Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14195>

13 months agov3dv/android: Add a helper function to support explicit layouts
Roman Stratiienko [Sat, 9 Sep 2023 18:26:05 +0000 (21:26 +0300)]
v3dv/android: Add a helper function to support explicit layouts

The function extracts buffer information from the gralloc and fills
the VkImageDrmFormatModifierExplicitCreateInfoEXT structure.

Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14195>

13 months agocompiler/types: Move builtin type initialization to C
Caio Oliveira [Thu, 7 Sep 2023 01:25:46 +0000 (18:25 -0700)]
compiler/types: Move builtin type initialization to C

While both clang and gcc can handle designated initializers in C++,
MSVC only does with the C++20 support enabled.  So move the initialization
of builtins to a C file.

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25006>

13 months agocompiler/types: Add workaround to use builtin_type_macros.h in C
Caio Oliveira [Sun, 3 Sep 2023 04:19:56 +0000 (21:19 -0700)]
compiler/types: Add workaround to use builtin_type_macros.h in C

In most versions of C, bool is defined as _Bool, so the macro for bool
gets generated with the wrong name.

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25006>

13 months agocompiler/types: Make struct glsl_type visible to C code
Caio Oliveira [Thu, 31 Aug 2023 05:32:13 +0000 (22:32 -0700)]
compiler/types: Make struct glsl_type visible to C code

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25006>

13 months agocompiler/types: Use a linear (arena) allocator for glsl_types
Caio Oliveira [Fri, 1 Sep 2023 07:41:25 +0000 (00:41 -0700)]
compiler/types: Use a linear (arena) allocator for glsl_types

They are only deallocated in bulk all at once, which is exactly
the use case for the linear allocator.

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25006>

13 months agocompiler/types: Store builtin types directly as data
Caio Oliveira [Fri, 1 Sep 2023 07:41:25 +0000 (00:41 -0700)]
compiler/types: Store builtin types directly as data

Remove constructors from glsl_type so it can be used as a
POD ("plain old data") struct, allowing the builtins to be
initialized directly in memory.

For other types, we now allocate them from glsl_type_cache's mem_ctx,
instead of using the global allocator.

As a side-effect of how the new helpers work, we can completely
create the mock key types for struct/interface lookup without
allocating any memory.

Note there's no `make_sampler_type` since all the sampler types
are created through direct initialization.

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25006>

13 months agocompiler/types: Move static asserts about glsl_type to a central place
Caio Oliveira [Fri, 1 Sep 2023 07:36:29 +0000 (00:36 -0700)]
compiler/types: Move static asserts about glsl_type to a central place

Take it out of the way to reduce noise when reworking (and eventually
removing) the constructor code.

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25006>

13 months agocompiler/types: Simplify clearing the glsl_type_cache
Caio Oliveira [Fri, 1 Sep 2023 06:59:03 +0000 (23:59 -0700)]
compiler/types: Simplify clearing the glsl_type_cache

Since now all the data referenced by it is allocated with the cache's
mem_ctx, it is sufficient to just free it, and then reset the cache
state to be ready for a next initialization if it happens.

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25006>

13 months agocompiler/types: Don't store a mem_ctx per type
Caio Oliveira [Thu, 31 Aug 2023 18:59:38 +0000 (11:59 -0700)]
compiler/types: Don't store a mem_ctx per type

These are used only by types created at runtime.  Since those will follow
the lifetime of the glsl_type_cache, we can use its mem_ctx for all the types.

Without a mem_ctx, there's nothing to be done in the destructor, so remove it.

Note some keys are calculated by building a mock type, so we need to create
a tmp_ctx in some cases.  We'll get rid of them in a later commit.

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25006>

13 months agocompiler/types: Use type cache mem_ctx for hash tables
Caio Oliveira [Thu, 31 Aug 2023 06:57:54 +0000 (23:57 -0700)]
compiler/types: Use type cache mem_ctx for hash tables

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25006>

13 months agocompiler/types: Add a mem_ctx for the glsl_type_cache
Caio Oliveira [Thu, 31 Aug 2023 06:54:04 +0000 (23:54 -0700)]
compiler/types: Add a mem_ctx for the glsl_type_cache

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25006>

13 months agocompiler/types: Move local cache details to implementation file
Caio Oliveira [Thu, 31 Aug 2023 06:34:40 +0000 (23:34 -0700)]
compiler/types: Move local cache details to implementation file

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25006>

13 months agocompiler/types: Use designated initializer syntax to specify builtins
Caio Oliveira [Fri, 1 Sep 2023 05:28:29 +0000 (22:28 -0700)]
compiler/types: Use designated initializer syntax to specify builtins

For now we use a temporary glsl_type_params struct, we will be able to
use the glsl_type directly once we make it a POD ("plain old data")
struct by getting rid of its constructors and destructors.

Note that since the name is statically allocated, there's no need to
strdup() it, deallocate it and also no need to have a mem_ctx.

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25006>

13 months agocompiler/types: Add extra level of macro to builtin_macros
Caio Oliveira [Fri, 1 Sep 2023 05:22:52 +0000 (22:22 -0700)]
compiler/types: Add extra level of macro to builtin_macros

This will make easier to transition from the macro calling a constructor
to the macro using designated initializers for a struct.

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25006>

13 months agoglsl: Don't create struct type builtins
Caio Oliveira [Mon, 11 Sep 2023 21:34:21 +0000 (14:34 -0700)]
glsl: Don't create struct type builtins

Unlike for simpler types, struct types have a runtime cache, that's used to
ensure same type can be compared to same pointer.  The existing code was bypassing
it, potentially breaking that invariant.  One potential issue would be when
decoding/encoding types, the resulting type would be pointer-different than what
was stored.

This hasn't caused a visible issue, but the (incomplete) special handling for struct
builtins is in the way of other changes.

Change the code to use get_struct_instance(), and also only ever load those if the
parser need the types, since some of them are deprecated types that we might never
want to load.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25006>

13 months agoglsl: Add missing glsl_types initialization to test_optpass
Caio Oliveira [Wed, 13 Sep 2023 02:15:23 +0000 (19:15 -0700)]
glsl: Add missing glsl_types initialization to test_optpass

Will be needed when the builtin struct types will go through regular
initialization.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25006>