Alyssa Rosenzweig
afc7557cb6
nir,agx: make block image store an image() intrinsic
...
so we can do a bindless version
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30981 >
2024-09-02 23:27:14 +00:00
Alyssa Rosenzweig
4941d71846
nir/divergence_analysis: handle load_agx
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30981 >
2024-09-02 23:27:14 +00:00
Qiang Yu
d43c5003fc
nir: add skip_lower_packing_ops shader compile option
...
Drivers like radeonsi and radv prefer to not lowering
some packing ops.
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30885 >
2024-08-30 05:46:51 +00:00
Ian Romanick
c160ed212e
nir/divergence: resource_intel is less divergent than you thought
...
When the non_uniform flag is not set, the result is never divergent.
v2: Remove redundant assignment to is_divergent. Suggested by Caio.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30251 >
2024-08-30 03:39:30 +00:00
Ian Romanick
f11a414645
nir/algebraic: Remove incorrect bfi of iand pattern
...
The comment says, "This expands to (b & 3) & ~0xc which is (b & 3) &
3." This is not correct. ~0xc is actually 0xfffffff3.
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Closes : #11695
Fixes: 1c7e35d4e0 ("nir/algebraic: Optimize some bit operation nonsense observed in some shaders")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30913 >
2024-08-29 22:21:55 +00:00
Timothy Arceri
bb426b7f3c
nir/tests: add basic terminator merge test
...
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30862 >
2024-08-29 10:26:30 +00:00
Timothy Arceri
85741c6a15
nir/tests: make add_loop_terminators more flexible
...
Here we update the helper to have an option to add the break to the else
blocks of the terminators.
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30862 >
2024-08-29 10:26:30 +00:00
Daniel Schürmann
51bb0e68b3
nir/opt_if: merge IFs which have phis between them
...
The phi-uses are rewritten on each side of the following if-stmt,
so that register pressure is kept the same.
Totals from 719 (0.91% of 79395) affected shaders: (Navi31)
MaxWaves: 18531 -> 18527 (-0.02%); split: +0.02%, -0.04%
Instrs: 4683616 -> 4621920 (-1.32%); split: -1.32%, +0.00%
CodeSize: 24154608 -> 23811472 (-1.42%); split: -1.42%, +0.00%
VGPRs: 46020 -> 46140 (+0.26%); split: -0.05%, +0.31%
SpillSGPRs: 1134 -> 1107 (-2.38%)
SpillVGPRs: 2221 -> 2202 (-0.86%)
Scratch: 603648 -> 602624 (-0.17%)
Latency: 30355976 -> 29516199 (-2.77%); split: -2.77%, +0.01%
InvThroughput: 7017283 -> 6878583 (-1.98%); split: -2.00%, +0.03%
VClause: 119826 -> 113392 (-5.37%); split: -5.37%, +0.00%
SClause: 100380 -> 93516 (-6.84%); split: -6.85%, +0.01%
Copies: 360589 -> 359154 (-0.40%); split: -1.13%, +0.73%
Branches: 146438 -> 138623 (-5.34%); split: -5.37%, +0.03%
PreSGPRs: 38237 -> 38317 (+0.21%); split: -0.52%, +0.72%
PreVGPRs: 37745 -> 37742 (-0.01%); split: -0.05%, +0.04%
VALU: 2594909 -> 2593667 (-0.05%); split: -0.12%, +0.07%
SALU: 572636 -> 554587 (-3.15%); split: -3.19%, +0.04%
VMEM: 203188 -> 201030 (-1.06%)
SMEM: 135731 -> 128683 (-5.19%)
VOPD: 1978 -> 1982 (+0.20%)
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7710 >
2024-08-29 09:42:55 +00:00
Daniel Schürmann
37881801c1
nir/opt_if: optimize phis between similar IFs
...
This small optimization targets phis between two IF statements with
the same condition. If the phi dst is only used on one branch leg,
the 'unused' phi source gets replaced with undef.
Totals from 1773 (2.23% of 79395) affected shaders: (Navi31)
Instrs: 6546338 -> 6539039 (-0.11%); split: -0.11%, +0.00%
CodeSize: 34819124 -> 34780660 (-0.11%); split: -0.11%, +0.00%
VGPRs: 92100 -> 92052 (-0.05%); split: -0.07%, +0.01%
SpillVGPRs: 2211 -> 2206 (-0.23%)
Latency: 51621404 -> 51620966 (-0.00%); split: -0.03%, +0.03%
InvThroughput: 7907110 -> 7905382 (-0.02%); split: -0.05%, +0.03%
VClause: 159268 -> 159273 (+0.00%); split: -0.00%, +0.01%
SClause: 180166 -> 180155 (-0.01%)
Copies: 559867 -> 553966 (-1.05%); split: -1.07%, +0.01%
Branches: 237327 -> 236366 (-0.40%); split: -0.41%, +0.00%
PreSGPRs: 81128 -> 81116 (-0.01%); split: -0.02%, +0.01%
PreVGPRs: 74264 -> 74245 (-0.03%)
VALU: 3547408 -> 3541257 (-0.17%); split: -0.18%, +0.00%
SALU: 824426 -> 824104 (-0.04%); split: -0.04%, +0.00%
VMEM: 265009 -> 265003 (-0.00%)
SMEM: 235766 -> 235760 (-0.00%)
VOPD: 1853 -> 1839 (-0.76%)
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7710 >
2024-08-29 09:42:55 +00:00
Daniel Schürmann
50d416fe89
nir: add nir_block *nir_src_get_block(src) helper
...
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7710 >
2024-08-29 09:42:55 +00:00
Konstantin Seurer
0fc3c52e43
nir/opt_loop: Fix handling else-breaks in merge_terminators
...
If both breaks are in the else branch, we have to use iand.
Fixes: 9995f33 ("nir: add merge loop terminators optimisation")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/11726
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30850 >
2024-08-29 05:49:35 +00:00
Jesse Natalie
03655dfda1
compiler, vk: Support subgroup size of 4
...
Relax the assert and assign it an enum value
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30876 >
2024-08-29 03:30:31 +00:00
Faith Ekstrand
c60a421f0c
vtn: Add a debug flag to dump SPIR-V assembly
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30875 >
2024-08-28 21:52:59 +00:00
Faith Ekstrand
9520fb8ecc
vtn: Allow SPIR-V debug options in release builds
...
As long as no one sets any flags, they cost us virtually nothing.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30875 >
2024-08-28 21:52:58 +00:00
Faith Ekstrand
ee7b596abc
vtn: Move initialization of mesa_spirv_debug to a helper
...
Importantly, this gives us a single once_flag instead of two so we
actually only initialize it once. This race will probably never matter
in practice because it's just a debug var but this is cleaner.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30875 >
2024-08-28 21:52:58 +00:00
Faith Ekstrand
518b2d548f
nir: Preserve fp_fast_math in nir_opt_vectorize()
...
Fixes the following CTS tests on NVK:
dEQP-VK.spirv_assembly.instruction.*.float_controls.fp16.generated_args.signed_zero_sub_var_preserve*
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30859 >
2024-08-28 12:29:06 +00:00
Georg Lehmann
ef970c5a9d
nir: optimize pack_uint_2x16 of pack_half(a, 0)
...
Foz-DB Navi31:
Totals from 31 (0.04% of 79395) affected shaders:
Instrs: 6157 -> 6065 (-1.49%)
CodeSize: 35676 -> 34936 (-2.07%)
Latency: 23979 -> 23805 (-0.73%); split: -0.79%, +0.07%
InvThroughput: 5248 -> 5124 (-2.36%)
VALU: 3224 -> 3162 (-1.92%)
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30855 >
2024-08-28 07:16:55 +00:00
Karol Herbst
b77eca8a95
vtn: mark ImageMipmap as supported
...
The SPIRV-LLVM-Translator seems to also set that cap for MSAA cl images,
but it looks like it works just fine in regards to LODs as well.
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30834 >
2024-08-27 15:06:17 +00:00
Karol Herbst
fc88f04ba1
vtn, nir: handle OpImageQueryLevels on images
...
This is needed for cl_khr_mipmap_image, specifically the OpenCL C
function get_image_num_mip_levels.
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30834 >
2024-08-27 15:06:17 +00:00
Karol Herbst
260a50add5
nir: Support multisampled images in lower_read_only_images_to_tex()
...
This is needed for cl_khr_gl_msaa_sharing
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30834 >
2024-08-27 15:06:16 +00:00
Karol Herbst
c5e38d5cb8
compiler/types: Add multisample vimage/vtexture types
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30834 >
2024-08-27 15:06:16 +00:00
Karol Herbst
9982568fa8
clc: add support for more image related extensions
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30834 >
2024-08-27 15:06:16 +00:00
Lionel Landwerlin
2158fe2ae2
nir/divergence: add missing load_constant_base_ptr
...
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: mesa-stable
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30712 >
2024-08-27 01:33:52 +00:00
Alyssa Rosenzweig
fc28ebcfa1
vtn: infer SpvCapabilityLinkage
...
It is always implemented by vtn, and it is available to the shader
depending on the create_library option. Either way, no reason for the backend to
worry about this.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30792 >
2024-08-26 15:04:00 +00:00
Qiang Yu
40fdd97de3
glsl: set shader_info.subgroup_size for KHR_shader_subgroup
...
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30610 >
2024-08-26 10:46:20 +08:00
Qiang Yu
ea33876fbe
glsl: remove unused fields in gl_shader
...
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30610 >
2024-08-26 10:46:20 +08:00
Qiang Yu
7538edf706
glsl: add KHR_shader_subgroup_quad builtin functions
...
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30610 >
2024-08-26 10:46:19 +08:00
Qiang Yu
72517a8be9
glsl: add KHR_shader_subgroup_clustered builtin functions
...
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30610 >
2024-08-26 10:46:19 +08:00
Qiang Yu
db41c09e17
glsl: add KHR_shader_subgroup_arithmetic builtin functions
...
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30610 >
2024-08-26 10:46:19 +08:00
Qiang Yu
ac0bbb5b3f
glsl: add KHR_shader_subgroup_shuffle_relative builtin functions
...
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30610 >
2024-08-26 10:46:19 +08:00
Qiang Yu
eee3091e3e
glsl: add KHR_shader_subgroup_shuffle builtin functions
...
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30610 >
2024-08-26 10:46:19 +08:00
Qiang Yu
a496d84ac8
glsl: add KHR_shader_subgroup_ballot builtin functions
...
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30610 >
2024-08-26 10:46:18 +08:00
Qiang Yu
7113d3c6ba
glsl: prepare ballot function args for subgroup usage
...
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30610 >
2024-08-26 10:46:18 +08:00
Qiang Yu
5f212a190b
glsl: add KHR_shader_subgroup_vote builtin functions
...
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30610 >
2024-08-26 10:46:18 +08:00
Qiang Yu
2d71467ec3
glsl: prepare vote function args for subgroup usage
...
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30610 >
2024-08-26 10:46:18 +08:00
Qiang Yu
f0c8520a90
glsl: add KHR_shader_subgroup_basic builtin functions
...
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30610 >
2024-08-26 10:46:18 +08:00
Qiang Yu
6ae013a032
glsl: use generic convertion code for some intrinsics
...
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30610 >
2024-08-26 10:46:18 +08:00
Qiang Yu
c631116644
glsl: remove unused builtin function macros
...
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30610 >
2024-08-26 10:46:17 +08:00
Qiang Yu
e2b07f9329
glsl: add builtin variables for KHR_shader_subgroup
...
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30610 >
2024-08-26 10:46:17 +08:00
Qiang Yu
19e4549944
glsl: add KHR_shader_subgroup extensions
...
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30610 >
2024-08-26 10:46:17 +08:00
Karol Herbst
e9d908206b
vtn: ignore volatile on functions for now
...
Not sure if we have to do something about it here, but maybe at some point
we do?
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30739 >
2024-08-25 14:11:32 +00:00
Konstantin Seurer
81e3930ec0
nir/print: Add a helper for generating debug info
...
Prints the shader to a string and assigns source locations based on
that.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18903 >
2024-08-25 10:26:33 +00:00
Konstantin Seurer
4423c50c1b
spirv: Emit nir_debug_info_instr for OpLine
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18903 >
2024-08-25 10:26:33 +00:00
Konstantin Seurer
ce24486ee4
nir: Introduce nir_debug_info_instr
...
Adds a new instruction type that stores metadata that might be useful
for debugging purposes. Passes must ignore these instructions when
making decisions.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18903 >
2024-08-25 10:26:33 +00:00
Timothy Arceri
4c32709c74
glsl: fix function overload resolution at link time
...
Previously we didn't check if the glsl version supported overload resolution
at link time only compile time. Note with this change we just use the
has_implicit_int_to_uint_conversion bool as support for both is added under
the same conditions.
Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30752 >
2024-08-23 12:14:22 +10:00
Timothy Arceri
8e4b14dcfd
glsl: apply implicit matching rules when linking
...
Previously when linking i.e. when compiler state was NULL. We just
assumed all implicit matching was avaliable.
Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30752 >
2024-08-23 12:14:22 +10:00
Timothy Arceri
018ebeca72
glsl: store has implicit conversions bools in gl_shader
...
We want to be able to use these at link time also.
Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30752 >
2024-08-23 12:14:22 +10:00
Timothy Arceri
ac312e9548
glsl: drop double support checks in helper
...
If doubles are not supported by the shader the compiler will throw
an error if it sees one, there is no need to check if they are
supported in this helper for implicit conversions.
Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30752 >
2024-08-23 12:14:22 +10:00
Lionel Landwerlin
cf986dd589
nir: remove unused intel intrinsics
...
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Ivan Briano <ivan.briano@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30713 >
2024-08-22 19:44:40 +00:00
Rohan Garg
52c8e6da69
vtn: handle SpvOpExtInstWithForwardRefsKHR for non semantic instructions
...
Signed-off-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30726 >
2024-08-21 14:13:46 +00:00