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
Boris Brezillon
ff2ebdc4d6
nir/format_convert: Promote input to 32-bit before packing integers
...
If we don't do that and the source is not 32-bit we end up with a
bit_size mismatch when doing the ior operation.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29333 >
2024-08-20 15:11:14 +00:00
Timothy Arceri
d681cf96fb
nir/glsl: set deref cast mode during function inlining
...
See code comment for details.
Issue: https://gitlab.freedesktop.org/mesa/mesa/-/issues/11535
Fixes: c6c150b4cd ("glsl_to_nir: support conversion of opaque function params")
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30338 >
2024-08-19 23:54:49 +00:00
Rob Clark
563ec4754a
nir/opt_loop: Don't peel initial break if loop ends in break
...
A loop that looks like:
loop {
do_work_1();
if (cond) {
break;
} else {
}
do_work_2();
break;
}
We can't pull that break ahead of do_work_1() after hoisting the initial
do_work_1() out of the loop. So bail in this case.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/11711
Fixes: 6b4b044739 ("nir/opt_loop: add loop peeling optimization")
Signed-off-by: Rob Clark <robdclark@chromium.org >
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30702 >
2024-08-17 14:27:02 +00:00
Ian Romanick
198d8d9c03
nir/algebraic: Improve some find_lsb and ifind_msb patterns
...
These patterns were observed in shaders from parallel-rdp.
No shader-db changes on any Intel platform.
fossil-db:
Meteor Lake, DG2, Ice Lake had Skylake similar results. (Meteor Lake shown)
Totals:
Instrs: 152535883 -> 152535673 (-0.00%); split: -0.00%, +0.00%
Cycle count: 17112406110 -> 17122827810 (+0.06%); split: -0.01%, +0.07%
Spill count: 78525 -> 78523 (-0.00%)
Fill count: 148132 -> 148127 (-0.00%); split: -0.01%, +0.00%
Max live registers: 31855320 -> 31855314 (-0.00%)
Totals from 206 (0.03% of 633223) affected shaders:
Instrs: 797124 -> 796914 (-0.03%); split: -0.03%, +0.00%
Cycle count: 4716743323 -> 4727165023 (+0.22%); split: -0.05%, +0.27%
Spill count: 18781 -> 18779 (-0.01%)
Fill count: 31381 -> 31376 (-0.02%); split: -0.03%, +0.01%
Max live registers: 31872 -> 31866 (-0.02%)
Tiger Lake
Totals:
Instrs: 150560465 -> 150560343 (-0.00%); split: -0.00%, +0.00%
Cycle count: 15482372893 -> 15479328542 (-0.02%); split: -0.02%, +0.00%
Fill count: 103509 -> 103512 (+0.00%)
Max live registers: 31760378 -> 31760374 (-0.00%)
Totals from 199 (0.03% of 632445) affected shaders:
Instrs: 679513 -> 679391 (-0.02%); split: -0.02%, +0.00%
Cycle count: 4258406125 -> 4255361774 (-0.07%); split: -0.09%, +0.02%
Fill count: 30609 -> 30612 (+0.01%)
Max live registers: 30502 -> 30498 (-0.01%)
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30650 >
2024-08-16 14:52:04 +00:00
Lionel Landwerlin
fbafa9cabd
intel/nir: remove load_global_const_block_intel intrinsic
...
load_global_constant_uniform_block_intel is equivalent in terms of
loading, then for the predicate we just do a bcsel afterward in places
where that is required.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30659 >
2024-08-16 11:12:39 +00:00
Timothy Arceri
08b93c841a
nir: make static assert more flexible
...
The static assert used in encode deref modes used the fact there was
less than 16 modes that we wanted to compress as an opportunity to reuse
MODE_ENC_GENERIC_BIT as it just happened to represent 16. However if we
add more than 16 modes i.e need to compress to 6 bits not 5 bits then
MODE_ENC_GENERIC_BIT becomes 32 and the logic in the assert breaks.
Instead we more precisely make sure MODE_ENC_GENERIC_BIT is large
enough to fit all but the last 4 generic modes and that the last 4 modes
defined in the enum are in fact the 4 generic modes.
Acked-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30654 >
2024-08-15 23:02:20 +00:00
Matt Turner
c437f2e79c
nir/tests: Add tests for opt_if_merge
...
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30629 >
2024-08-15 20:34:54 +00:00
Matt Turner
d2e6be94ae
nir: Skip opt_if_merge when next_if has block ending in a jump
...
Similar to commit 6cef804067 ("nir/opt_if: fix opt_if_merge when
destination branch has a jump"), we shouldn't combine if statements when
the second if-then-else has a block that ends in a jump.
This fixes a case where opt_if_merge combines
if (cond) {
[then-block-1]
} else {
[else-block-1]
}
if (cond) {
[then-block-2]
} else {
[else-block-2]
}
where `then-block-2` or `else-block-2` ends in a jump. The phi nodes
following the control flow will be incorrectly updated to have an input
from a block that is not a predecessor.
Fixes: 4d3f6cb973 ("nir: merge some basic consecutive ifs")
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30629 >
2024-08-15 20:34:54 +00:00
Job Noorman
9998b65695
nir/load_store_vectorize: add load/store_const_ir3
...
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Reviewed-by: Connor Abbott <cwabbott0@gmail.com >
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28341 >
2024-08-15 12:07:27 +00:00
Job Noorman
db2859cb7f
nir/load_store_vectorize: support stores without wrmask
...
Some store intrinsics (e.g., store_const_ir3) don't have a wrmask so
don't assume it always exists.
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Reviewed-by: Connor Abbott <cwabbott0@gmail.com >
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28341 >
2024-08-15 12:07:27 +00:00