Robert Mader
379de4cdce
freedreno: Support offset query for multi-planar planes
...
This allows `gbm_bo_get_offset()` to return the correct offset for e.g.
the second plane of a resource with the NV12 format. Crucially this
fixes direct scanout / hardware plane usage in Mutter and possibly other
clients.
While on it also add support for stride, modifier and n_planes queries.
The later two should not change in behavior and just safe a few CPU
cycles. The stride query support in theory fixes queries for multi-plane
formats, however in practice most/all currently used formats such as NV12,
P010 and YUV420 use the same stride for all planes.
Cc: mesa-stable
Acked-by: Rob Clark <robclark@freedesktop.org >
Signed-off-by: Robert Mader <robert.mader@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32282 >
2024-11-29 18:10:28 +01:00
Job Noorman
1cd09a0177
tu: advertise VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR
...
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31731 >
2024-11-29 16:22:48 +00:00
Job Noorman
659e033897
ir3: lower clustered rotates to shuffles
...
shfl.rdown only works for the non-clustered case.
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31731 >
2024-11-29 16:22:48 +00:00
Job Noorman
d5d0628728
nir/lower_subgroups: add option to only lower clustered rotates
...
On ir3, we have native support for full rotates but not for clustered
ones.
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Reviewed-by: Connor Abbott <cwabbott0@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31731 >
2024-11-29 16:22:48 +00:00
Job Noorman
eba6a70a66
tu: advertise VK_SUBGROUP_FEATURE_CLUSTERED_BIT
...
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31731 >
2024-11-29 16:22:48 +00:00
Job Noorman
c44f998d69
ir3: add support for clustered subgroup reductions
...
This is implemented differently depending on the cluster size:
- At most 8: in this case, executing brcst.active will leave the
reduction in the last invocation of each cluster. Simply iterate the
clusters and broadcast the last invocation to the rest.
- Otherwise, also iterate the clusters but execute the usual
reduce_clusters_ir3 loop for each of them.
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31731 >
2024-11-29 16:22:48 +00:00
Job Noorman
5dbd2b08f4
nir/lower_subgroups: disable boolean reduce when not supported
...
lower_boolean_reduce only supports ballot_components == 1. Fall back to
lower_scan_reduce when this is not the case.
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Reviewed-by: Connor Abbott <cwabbott0@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31731 >
2024-11-29 16:22:48 +00:00
Job Noorman
493f7b8084
nir/lower_subgroups: add extra filter data to options
...
It might be convenient for filter implementations to have access to
extra information. This will be used, for example, by ir3 to access
compiler features.
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Reviewed-by: Connor Abbott <cwabbott0@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31731 >
2024-11-29 16:22:48 +00:00
Job Noorman
c789a0a3d3
ir3: rename cluster_size to brcst_cluster_size
...
In preparation for the next commit where we'll want to use cluster_size
for the intrinsic's cluster size.
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31731 >
2024-11-29 16:22:48 +00:00
Job Noorman
0be9ff47b4
ir3: add helper to get the subgroup size
...
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31731 >
2024-11-29 16:22:47 +00:00
Job Noorman
2e2a36ddb0
ir3: add codegen for read_getlast_ir3
...
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31731 >
2024-11-29 16:22:47 +00:00
Job Noorman
e6c63a88fb
nir: add read_getlast_ir3 intrinsic
...
Like read_first_invocation but using getlast. Note that I intentionally
used the name of the ir3 instruction in the name as its semantics are
tricky to exactly describe otherwise.
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Reviewed-by: Connor Abbott <cwabbott0@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31731 >
2024-11-29 16:22:47 +00:00
Job Noorman
7bab441ae6
ir3: remove unused ir3_nir_lower_64b_subgroups
...
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31731 >
2024-11-29 16:22:47 +00:00
Job Noorman
5e9cf354ca
ir3: use generic lowering for 64b scan/reduce
...
Now that we use shfl for lowering shuffle operations, the generic
lowering of scan/reduce to shuffles results in faster code than our
custom loop for 64b operations.
Note that this was measured using a micro benchmark on full subgroups.
The generic lowering might be slower when not all invocations are active
but this should be a rare case.
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31731 >
2024-11-29 16:22:47 +00:00
Job Noorman
60e1615ced
nir/lower_subgroups: support unknown subgroup size
...
Some targets (e.g., ir3) don't always know the exact subgroup size.
Calculate the maximum subgroup size in that case by multiplying
ballot_components and ballot_bit_size.
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Reviewed-by: Connor Abbott <cwabbott0@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31731 >
2024-11-29 16:22:47 +00:00
Simon Perretta
e67e44522f
pco: initial validation boilerplate and SSA checks
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
b35ba3a8a5
pco: modifier propagation optimization, shared opt context boilerplate
...
Tackles cases where mod propagation candidate ops have a restriction on one
of their sources but are commutative, thus allowing the restriction to be
worked around by swapping the sources.
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
527b38d1fd
pvr, pco: rewrite compiler/driver interface for vs & fs I/O
...
Basic vertex/fragment shader I/O and sysval allocation rewritten to use
the new compiler/driver interface, with allocation moved entirely into
the driver.
RHW coeffs now only emitted when required.
Boilerplate support for converting formats for vs inputs/fs outputs.
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
99852fbe4d
pco: track the number of bytes encoded for each function
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
0f720a5c98
pco: add opt subpass for propagating comps referencing hw regs
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
37d4791343
pco: vec coalescing improvement to register allocation
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
ce8392024d
pco: add helpers for overriding ref chans and offsetting vals
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
71480c075e
pco: temporarily add hardcoded vs/fs I/O for testing, BXS-4-64 iteration support
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
cf83858a47
pco: add mappings and translation for ditr
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
a89a9b65f8
pco: re-indexing debug option and additional vector and component tracking
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
d55e98a32d
pco: vector component tracking, vector collation when ingesting NIR
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
b4049c9b0a
pco: add public print wrappers
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
e57c4b5b3b
pco: initial implementation of translation and passes
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
f6a729563c
pco, pygen: isa itrsmp op
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
d5bab0c157
pco, pygen: isa ditr op
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
84766a9157
pco, pygen: amend bitfield assertion messages
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
58337957ac
pco, pygen: restructure igrp alu components into arrays
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
fee1f029cc
pco, pygen: add defs and mappings for common ops
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
3c081c9abf
pco, pygen: drop unspecified bit sizes for references
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
fcf05a732e
pco: print ranges of non-ssa refs with >1 channel, datatypes for immediates
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
981e6cfabc
pco, pygen: re-order some mods to match their evaluation order
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
fab0ef7d59
pco, pygen: add support for instructions with variable srcs/dests
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
45139c72f7
pco: set up and tear down glsl type singleton with context
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
1b36e34095
pco, pygen: support querying ref mods, if op/ref mods have been set
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
687abeee5a
pco: adjust align padding to be per-function instead of per-shader
...
Shaders may contain more than one function, e.g. a preamble
and an entrypoint, which require alignment.
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
59a4b9ff2d
pco, pygen: add better exception messages
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
f57b817f7b
pco, pygen: add initial uvsw op boilerplate
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
70aa0df836
pco: boilerplate nir lowering passes
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
bf22e4076b
pco: additional ref functions
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
6a3ba1f1f4
pco, pygen: instruction to instruction group mapping, printing
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
0d85b71387
pco, pygen: distinguish hw ops that are built directly into instruction groups
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
f3cc7c128c
pco: add verbose printing debug option
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
6b0a738bfd
pco, pygen: common underscore replacement for op names
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:12 +00:00
Simon Perretta
561098cf7d
pco, pygen: add bitset support for op mods
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:11 +00:00
Simon Perretta
7c57e25550
pco, pygen: move unnamed tuple structs into classes
...
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com >
Acked-by: Frank Binns <frank.binns@imgtec.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258 >
2024-11-29 15:14:11 +00:00