URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=69cc72e50adcf110e0cbffb75acb487a3da00c18
Author: Francisco Jerez <[email protected]>
Date: Wed Jun 22 16:54:17 2022 -0700
anv/gfx12: Hook up dual-SIMD8 fragment shader dispatch.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4ec54e84da603fe9f4d0c2cb070284ce2a300403
Author: Francisco Jerez <[email protected]>
Date: Wed Jun 22 16:54:11 2022 -0700
iris/gfx12: Hook up dual-SIMD8 fragment shader dispatch.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ccb5795938c1b0870530798c6d542b3f43c82c32
Author: Francisco Jerez <[email protected]>
Date: Thu Nov 30 20:48:29 2023 -0800
intel/gfx12: Enable SIMD8 dispatch in 3DSTATE_PS for FS multipolygon
dispatch.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4868408e6e02e54cc49504f69c25e72bda346faf
Author: Francisco Jerez <[email protected]>
Date: Wed Jun 22 16:41:16 2022 -0700
intel/genxml: Add 3DSTATE_PS definitions needed for dual-SIMD8 dispatch on
Gfx12+.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1f2c44dc21719eb4cf5c383866c897fd73956d2f
Author: Francisco Jerez <[email protected]>
Date: Wed Jun 22 16:32:57 2022 -0700
intel/compiler: Attempt to build dual-SIMD8 variant of fragment shaders on
gfx12+ platforms.
Similar to other FS dispatch modes, attempt to build a dual-SIMD8
program if the regular SIMD8 program didn't spill and doubling the
amount of space for varyings doesn't cause us to go over the thread
payload limit. Dual-SIMD8 builds in combination with coarse pixel
shading are currently not handled.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=261d07f3989738540764f88b57b7c402ed057a7f
Author: Francisco Jerez <[email protected]>
Date: Wed Jun 22 16:40:23 2022 -0700
intel: Add debug flag for enabling dual-SIMD8 fragment shader dispatch.
Note that this option isn't enabled by default yet pending additional
performance evaluation.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=28aec45eed56b20b3155a646d00d046c128c798e
Author: Francisco Jerez <[email protected]>
Date: Wed Jun 22 17:05:44 2022 -0700
intel/fs/gfx12: Implement multi-polygon format of render target array index
in PS payload.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5b1ab77423e64397c700cda7c9ed0de273881162
Author: Francisco Jerez <[email protected]>
Date: Wed Jun 22 17:02:27 2022 -0700
intel/fs/gfx12: Implement multi-polygon format of back/front-facing flag in
PS payload.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4672fcbc76b1e2d02810cd95584fcfa72f774b47
Author: Francisco Jerez <[email protected]>
Date: Sat Jun 11 17:35:00 2022 -0700
intel/fs: Fix PS thread payload setup for depth_w_coef_reg.
It's not replicated per SIMD16 half of a SIMD32 thread on the PS
payload. Make fs_visitor::payload::depth_w_coef_reg a scalar rather
than an array.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=09ea8409870910b7f08000c4bf9081b939cd1d72
Author: Francisco Jerez <[email protected]>
Date: Thu Dec 7 20:00:31 2023 -0800
intel/fs: No need to copy null destinations in lower_simd_width.
The copy would be discarded immediately. Until now we were relying on
DCE to eliminate these, but it seems like in some cases MOVs into the
null register emitted by lower_simd_width() are never eliminated,
likely because a lower_simd_width() call has been introduced close to
the bottom of optimize() which isn't follow by any additional DCE
passes.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5e0760a993faf9d81bc7d5c8ffbe34d95e4c034c
Author: Francisco Jerez <[email protected]>
Date: Thu Dec 7 19:38:02 2023 -0800
intel/fs/gfx12: Don't consider multipolygon PS to have packed dispatch.
This fixes a number of regressions and hangs in multipolygon fragment
shaders that have FIND_LIVE_CHANNEL sequences which would otherwise
lead to access of a dead channel. Note that the failures don't seem
to be reproducible in simulation.
Acked-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8f92baa5d31d69e79139650b2468b996338dfd6f
Author: Francisco Jerez <[email protected]>
Date: Thu Dec 7 19:26:22 2023 -0800
intel/fs/gfx12+: Don't set nir_divergence_single_prim_per_subgroup option
for fragment shaders.
Flat-shaded inputs and other per-primitive values can no longer be
considered to be uniform across fragment shader subgroups due to
multipolygon dispatch.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6bf99e6a452beefd18772934988fe0d6b86f74fc
Author: Francisco Jerez <[email protected]>
Date: Wed Jun 22 16:17:21 2022 -0700
intel/compiler: Don't change types for copies from ATTR file.
Since the <8;8,0> regions they use in multipolygon mode could violate
regioning restrictions in some cases, depending on the execution type
of the instruction. Note that the assertion is removed from
try_copy_propagate() since a more accurate check is used within that
function than what fs_inst::can_change_types() can do.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2ed36050fb9b5b890c69ae55c3efbef62e7e5e60
Author: Francisco Jerez <[email protected]>
Date: Wed Jun 22 16:35:59 2022 -0700
intel/fs: Don't copy-propagate ATTR registers in multi-polygon FS shaders
when invalid.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3f89fa63e6c0f0a34fc5925000e2eb12bd02e6cf
Author: Jordan Justen <[email protected]>
Date: Thu Sep 21 13:55:41 2023 -0700
intel/compiler: Pass max_polygons to copy-prop from fs_visitor.
Signed-off-by: Jordan Justen <[email protected]>
Reviewed-by: Francisco Jerez <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b62ad4e0288a11898b425ef9594789f345f76c4b
Author: Francisco Jerez <[email protected]>
Date: Wed Jun 22 16:22:40 2022 -0700
intel/fs: Rework layout of FS vertex setup data in ATTR file to support
multi-polygon dispatch.
The updated layout includes one copy of each plane parameter per
channel of the SIMD thread, in order to allow channels to process
different polygons.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a844c0b185bffc7846eb1b4810fd8facf9b2a0ef
Author: Francisco Jerez <[email protected]>
Date: Wed Jun 22 16:18:13 2022 -0700
intel/fs: Fix fs_reg::component_size() to handle two-dimensional register
regions.
Add code to calculate the size in bytes of arbitrary two-dimensional
regions for FIXED_GRF and ARF registers.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=83a0252e8d45f74f9ccc881db8cfc3e9e4470b06
Author: Francisco Jerez <[email protected]>
Date: Thu Dec 7 20:07:25 2023 -0800
intel/fs: Pass builder to per_primitive_reg().
Matches prototype of interp_reg(), will be useful in a subsequent commit.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8e9f09dbe52242dee2c734903ab197691e195f35
Author: Francisco Jerez <[email protected]>
Date: Wed Jun 22 16:19:05 2022 -0700
intel/fs: Provide component index explicitly to interp_reg().
Main motivation is that for multipolygon PS shaders the i-th plane
parameter for the j-th input attribute will no longer necessarily be a
scalar, since different channels may be processing different polygons
with different input plane parameters, so simply taking a component()
of the result of interp_reg() will no longer work. Instead of
duplicating the multipolygon handling logic in every caller of
interp_reg(), fold the component() call into interp_reg() so we can
replace it with multipolygon-correct code more easily.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=742a575bd6f6281a2780ee50a0a29f01bae10e30
Author: Francisco Jerez <[email protected]>
Date: Mon Sep 12 16:48:45 2022 -0700
intel/fs: Consider ATTR registers with different fs_reg::nr as belonging to
disjoint register spaces.
Instead of treating fs_reg::nr as an offset for ATTR registers simply
consider different indices as denoting disjoint spaces that can never
be accessed simultaneously by a single region. From now on geometry
stages will just use ATTR #0 for everything and select specific
attributes via offset() with the native dispatch width of the program,
which should work on current platforms as well as on Xe2+. See
"intel/fs: Map all GS input attributes to ATTR register number 0." for
the rationale.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2d26ed66881f07c2f9490e0865fc806a3d3f719d
Author: Francisco Jerez <[email protected]>
Date: Mon Sep 12 16:49:11 2022 -0700
intel/fs: Assert fs_reg::nr is always zero for ATTR registers in geometry
stages.
Instead of treating fs_reg::nr as an offset for ATTR registers simply
consider different indices as denoting disjoint spaces that can never
be accessed simultaneously by a single region. From now on geometry
stages will just use ATTR #0 for everything and select specific
attributes via offset() with the native dispatch width of the program,
which should work on current platforms as well as on Xe2+. See
"intel/fs: Map all GS input attributes to ATTR register number 0." for
the rationale.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b26cf8b1891b820da10c74eef9298a637e75a976
Author: Francisco Jerez <[email protected]>
Date: Mon Sep 12 16:48:02 2022 -0700
intel/fs: Map all TES input attributes to ATTR register number 0.
Instead of treating fs_reg::nr as an offset for ATTR registers simply
consider different indices as denoting disjoint spaces that can never
be accessed simultaneously by a single region. From now on geometry
stages will just use ATTR #0 for everything and select specific
attributes via offset() with the native dispatch width of the program,
which should work on current platforms as well as on Xe2+. See
"intel/fs: Map all GS input attributes to ATTR register number 0." for
the rationale.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ef12565a378848ad9a65621ea01d66c1719859cf
Author: Francisco Jerez <[email protected]>
Date: Mon Sep 12 16:47:19 2022 -0700
intel/fs: Map all VS input attributes to ATTR register number 0.
Instead of treating fs_reg::nr as an offset for ATTR registers simply
consider different indices as denoting disjoint spaces that can never
be accessed simultaneously by a single region. From now on geometry
stages will just use ATTR #0 for everything and select specific
attributes via offset() with the native dispatch width of the program,
which should work on current platforms as well as on Xe2+. See
"intel/fs: Map all GS input attributes to ATTR register number 0." for
the rationale.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1d22721b5a6bebfa627ded44422a9df25bb033cc
Author: Francisco Jerez <[email protected]>
Date: Mon Sep 12 16:46:57 2022 -0700
intel/fs: Map all GS input attributes to ATTR register number 0.
The fs_reg::nr field currently has a somewhat inconsistent meaning for
ATTR registers depending on the shader stage. In geometry stages it
has a similar effect as fs_reg::offset except it's expressed in 32B
units instead of B units. In the PS however it's expressed in units
of logical scalar attributes (16B on present platforms), which isn't
currently handled correctly throughout the back-end since some places
assume 32B units in all cases.
The different format of the PS setup data in multi-polygon dispatch
modes would make its behavior even more irregular, which would be
worsened further (for both geometry and pixel stages) by the register
size changes coming up on Xe2, particularly in brw_ir_fs.h helpers
where neither the devinfo struct nor the shader stage are available.
Instead of treating it as an offset simply consider different
fs_reg::nr indices as denoting disjoint spaces that can never be
accessed simultaneously by a single region. From now on geometry
stages will just use ATTR #0 for everything and select specific
attributes via offset() with the native dispatch width of the program,
which should work on current platforms as well as on Xe2+.
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e4aca2ebaa75328dc216693f4f23d1161b2fd250
Author: Francisco Jerez <[email protected]>
Date: Wed Jun 22 16:31:00 2022 -0700
intel/fs: Add separate constructor of fs_visitor for fragment shaders.
To allow specifying the number of polygons that will be processed per
SIMD thread.
Rework:
* Jordan: Add needs_register_pressure following
09cdb77a92f ("intel/fs: report max register pressure in shader stats")
Reviewed-by: Jordan Justen <[email protected]>
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1eff2fcb6252a7086f6c8819c9f2f3ab126483cd
Author: Francisco Jerez <[email protected]>
Date: Thu Dec 7 19:47:55 2023 -0800
intel/compiler: Add polygon count statistic to brw_compile_stats.
And use it in ANV in order to return a "SIMDNxM" name from
vkGetPipelineExecutablePropertiesKHR.
Reviewed-by: Jordan Justen <[email protected]>
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ccf9174655c96f8cdb208ed349a9934de4d7dcec
Author: Francisco Jerez <[email protected]>
Date: Tue Jun 28 17:44:13 2022 -0700
intel/compiler: Add multipolygon dispatch fields to brw_wm_prog_data.
Add fields that track the number of polygons processed per PS SIMD
thread (note that this might be lower than the value that was
specified to the compiler via brw_compile_fs_params if compilation at
the desired polygon count wasn't possible), and the dispatch width of
the multi-polygon PS kernel.
Reviewed-by: Jordan Justen <[email protected]>
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e7b1993376503a6922125cc7fec32b1ce5dc16cf
Author: Francisco Jerez <[email protected]>
Date: Wed Jun 22 16:16:08 2022 -0700
intel/compiler: Add max_polygons FS compilation parameter.
Add a brw_compile_fs_params parameter that specifies to the compiler
the maximum number of polygons that may be processed in parallel per
PS SIMD thread.
Reviewed-by: Jordan Justen <[email protected]>
Reviewed-by: Caio Oliveira <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>