Caio Oliveira
6fccacda1e
compiler/types: Use a typedef for glsl_type
...
Most of the code now will see `const glsl_type *` instead of
`const struct glsl_type *`.
Acked-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26708 >
2023-12-22 07:53:25 -08:00
Caio Oliveira
550fdc2026
compiler/types: Remove glsl_type C++ helpers
...
All code now use the C functions. Remove glsl_type_impl.h that
contained the inline C++ wrappers around those.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Acked-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26707 >
2023-12-22 06:51:01 -08:00
Caio Oliveira
d06f0305f6
glsl: Use glsl_type C helpers
...
Acked-by: Jesse Natalie <jenatali@microsoft.com >
Acked-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26707 >
2023-12-22 06:51:01 -08:00
Caio Oliveira
db5f73dc9f
compiler/types: Add a few more glsl_type C helpers
...
These will be used once the C++ ones are removed.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Acked-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26707 >
2023-12-22 06:44:23 -08:00
Caio Oliveira
582c20c431
nir: Use glsl_type C helpers
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Acked-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26707 >
2023-12-22 06:44:23 -08:00
Karol Herbst
f8afd41667
clc: add workaround for clang always defining __IMAGE_SUPPORT_ and __opencl_c_int64
...
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26764 >
2023-12-20 11:31:30 +00:00
Bas Nieuwenhuizen
da6a5e1f63
nir: Add pass for clearing memory at the end of a shader.
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26679 >
2023-12-20 09:15:45 +00:00
Bas Nieuwenhuizen
bc99b73d70
nir: Add nir_static_workgroup_size helper.
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26679 >
2023-12-20 09:15:45 +00:00
Faith Ekstrand
3e042173e4
nir/lower_doubles: Add lowering for fmin/fmax/fsat
...
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26587 >
2023-12-20 02:40:25 +00:00
Timothy Arceri
52dbf44d2e
glsl: add support for inout params to glsl_to_nir()
...
Supporting these means we don't have to depend on calling the GLSL
IR optimisation loop for shaders that contain these parameter types.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26755 >
2023-12-20 01:47:27 +00:00
Timothy Arceri
3d3ba9f428
glsl: move glsl ir lowering out of glsl_to_nir()
...
The main motivation for doing this is that some tests and even the
st tracker linking code dump out the GLSL IR for debugging before
glsl_to_nir() is called expecting it to already be in its final
form. Moving these to the linker makes those assumptions true.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26755 >
2023-12-20 01:47:27 +00:00
Timothy Arceri
bb1873faad
glsl: add additional lower mediump test
...
There were tests for inputs and inout, but no test for out which turned
out to not be behaving correctly.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26755 >
2023-12-20 01:47:27 +00:00
Timothy Arceri
d42f9d94af
glsl: copy precision val of function output params
...
We need to copy the precision to our temp values when converting
to nir or this information will be lost. This change fixes the new
test introduced in the following patch.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26755 >
2023-12-20 01:47:27 +00:00
Timothy Arceri
37e83a93d7
glsl: remove some unused linker code
...
These were missed when removing code in 72ad0db505 .
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26747 >
2023-12-19 23:45:30 +00:00
Timothy Arceri
4584acca6b
glsl: tidy up validation loop in linker
...
There is no need to have a separate loop to determine the first stage in
the shader program. Previously there were other users of this but since
this is the last remain user this patch changes the code to simply detect
the first stage directly.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26747 >
2023-12-19 23:45:30 +00:00
Sviatoslav Peleshko
a6459e0f7b
nir/loop_analyze: Don't test non-positive iterations count
...
Testing negative iterations count makes no sense, and can cause issues
when the unsigned type is used.
Testing 0 iterations is already covered with
will_break_on_first_iteration, so it can be skipped too.
Fixes: 6772a17a ("nir: Add a loop analysis pass")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9913
Signed-off-by: Sviatoslav Peleshko <sviatoslav.peleshko@globallogic.com >
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26173 >
2023-12-19 12:53:52 +00:00
Job Noorman
6cad2fc230
nir: add helper to create cursor after all @decl_regs
...
@decl_reg intrinsics must be in the first block so it's convenient to be
able to create an insertion point after all @decl_regs when the first
block needs to be split.
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26737 >
2023-12-18 14:52:02 +00:00
Christian Gmeiner
a8a33ac5ae
isaspec: Add bool_inv type to print inverted bools
...
Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com >
Reviewed-by: Rob Clark <robdclark@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20144 >
2023-12-16 14:34:18 +00:00
Job Noorman
6e7a61df4c
nir: add _safe variants of nir_foreach_reg_load/store
...
Signed-off-by: Job Noorman <jnoorman@igalia.com >
Reviewed-by: Rob Clark <robdclark@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26175 >
2023-12-15 17:19:28 +00:00
Faith Ekstrand
1cf1b9d741
nir: Scalarize bounds checked loads and stores
...
Fixes: 39da1deb49 ("nir/lower_io: Add a bounds-checked 64-bit global address format")
Reviewed-by: M Henning <drawoc@darkrefraction.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26526 >
2023-12-15 03:53:54 +00:00
Caio Oliveira
81e3b28f78
compiler: Remove C++ static member pointers to builtin types
...
When we moved the bulk of glsl_type to C, these globals were
kept to avoid changes to compiler/glsl code in the MR. Now that
landed, change the code to use the actual bultins directly.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com >
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26658 >
2023-12-15 03:09:19 +00:00
Caio Oliveira
90e364edb0
compiler/types: Add a few more helpers to get builtin types
...
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com >
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26658 >
2023-12-15 03:09:19 +00:00
Caio Oliveira
f17e23e116
compiler/glsl: Reduce scope of is_anonymous
...
This a GLSL parser specific detail, so move it there. Also
add a comment pointing to where #anon prefix is used.
Reviewed-by: Yonggang Luo <luoyonggang@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26656 >
2023-12-13 15:44:40 +00:00
Friedrich Vock
f1817ab7e0
radv,vtn,driconf: Add and use radv_rt_ssbo_non_uniform workaround for Crysis 2/3 Remastered
...
Crysis 2 and 3 Remastered's RT shaders non-uniformly index into SSBO
descriptor arrays without specifying the NonUniformEXT qualifier on the
relevant access chains/load ops. This leads to artifacts around objects.
To add insult to injury, the game fails to provide a meaningful
applicationName/engineName in the Vulkan part of the DX11-Vulkan interop
solution used for RT. Both of these fields are set to "nvpro-sample"
(perhaps the code has been copied from NVIDIA's sample applications).
Therefore, fall back to executable name matching.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9883
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26391 >
2023-12-12 21:16:39 +00:00
Karol Herbst
8c73b1eb90
nir/algebraic: add support for custom arguments
...
Those are passed as an optional argument and are declared as a list of
(type, name) tuples.
At the moment this can only be used for conditions.
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26214 >
2023-12-12 18:48:11 +00:00
Karol Herbst
c674db05e8
clc: use addMacroDef/Undef instead of -D/-U flags
...
It always felt weird having the extension management in two different
places. Later once we require LLVM-14 we might even be able to clean it up
a little more.
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26641 >
2023-12-12 14:24:48 +00:00
Lionel Landwerlin
f53748c481
nir: fixup nir_printf intrinsic description
...
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26505 >
2023-12-12 11:11:10 +00:00
Lionel Landwerlin
dc3e69af1a
nir/serialize: untangle printf serialization from a particular stage
...
This allows any stage to carry printf instructions.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26505 >
2023-12-12 11:11:10 +00:00
Lionel Landwerlin
4e4a3820ab
nir/divergence: handle printf intrinsic
...
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Cc: mesa-stable
Reviewed-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26505 >
2023-12-12 11:11:10 +00:00
Lionel Landwerlin
f7ae92b868
nir: include printfs from linked shaders
...
Once lowered low enough, it's not always possible to tell what strings
are used. So include them all when linking another shader.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26505 >
2023-12-12 11:11:10 +00:00
Lionel Landwerlin
81b3dea993
nir/clone: fix missing printf_info clone
...
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Cc: mesa-stable
Reviewed-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26505 >
2023-12-12 11:11:10 +00:00
Lionel Landwerlin
603f039708
nir: make printf_info (de)serializer available
...
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26505 >
2023-12-12 11:11:10 +00:00
Timothy Arceri
5147e9a26e
glsl: combine shader stage loops in linker
...
The gs validation that was run between these loops can be run after
merging them without any issue.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26628 >
2023-12-12 02:28:33 +00:00
Timothy Arceri
fe44414662
glsl/st: move remaining glsl ir lowering to linker
...
This is a tidy up but also allows us to drop an additional
validate_ir_tree() call.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26628 >
2023-12-12 02:28:33 +00:00
Karol Herbst
7e78802028
clc: add support for cl_khr_subgroup_shuffle and shuffle_relative
...
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26504 >
2023-12-11 23:08:51 +00:00
Eric Engestrom
c51e40dd8b
spirv: add missing build dependency
...
Fixes: 59a72570b6 ("compiler: Move spirv into a module of its own")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10277
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26624 >
2023-12-11 21:47:37 +00:00
Ian Romanick
7fce0a5598
nir: Handle divergence for decl_reg
...
Once decl_reg is handled, src[0].ssa->divergent will be properly set, so
load_reg and load_reg_indirect do not need special treatment.
shader-db can run to completion on HSW, IVB, and SNB now. No other
testing was done.
v2: Refactor nir_intrinsic_load_reg and nir_intrinsic_load_reg_indirect
handling. Suggested by Daniel Schürmann.
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev >
Fixes: 4fd257d20f ("nir: Properly handle divergence for load_reg")
Fixes: 6dbb5f1e07 ("intel/fs: rerun divergence analysis prior to convert_from_ssa")
Closes : #10233
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26436 >
2023-12-11 17:10:51 +00:00
Jesse Natalie
37c0e8beda
compiler/clc: Don't fail to parse SPIR-V if there's no kernels
...
It's valid to have library SPIR-V being parsed that has no entrypoints.
We still want to get spec constant info for them.
Reviewed-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26582 >
2023-12-11 16:28:28 +00:00
Faith Ekstrand
aac1e3f595
nir: Add a new has_fmulz_no_denorms flag
...
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26569 >
2023-12-11 15:29:17 +00:00
Alyssa Rosenzweig
c43c90a5fa
asahi: rewrite pointsize handling
...
In the wise words of Mike Blumenkrantz, "I hate gl_PointSize and so can you".
The mesa/st lowering won't mesh well with vertex shader epilogues, and it falls
over in various circumstances. I am too tired to go against the grain, so let's
just pretend to be a normal gallium driver and trust in the rasterizer CSO,
lowering point size internally. This properly handles transform feedback without
any hacks, both GL and GLES behaviours, etc.
Fixes:
KHR-GL31.transform_feedback.capture_vertex_separate_test
gl-2.0-large-point-fs
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614 >
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
5987e47a29
asahi: rework GS input assembly
...
in prep for tessellation (which will share the IA lowering), and for multidraw
indirect (which greatly complicates IA lowering with geom/tess).
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614 >
2023-12-09 12:08:39 -04:00
Karol Herbst
6979a1aa07
nir/opt_preamble: make load_workgroup_size handling optional
...
not all drivers support it being in the preamble, e.g. asahi.
Signed-off-by: Karol Herbst <git@karolherbst.de >
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614 >
2023-12-09 10:56:37 -04:00
Marek Olšák
7d2faa88ab
nir,radeonsi: add FLAGS into load_vector_arg_amd to record color input usage
...
This will be needed for gathering color usage from lowered PS.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26307 >
2023-12-09 00:05:27 +00:00
Yonggang Luo
e7c614bd20
util,vulkan,mesa,compiler: Generate source files with utf8 encoding from mako template
...
This is for fixes the following error:
FAILED: src/vulkan/runtime/vk_synchronization_helpers.c src/vulkan/runtime/vk_synchronization_helpers.h
"C:\CI-Tools\msys64\mingw64\bin/python3.EXE" "../../src/vulkan/util/vk_synchronization_helpers_gen.py" "--xml" "../../src/vulkan/registry/vk.xml" "--out-c" "src/vulkan/runtime/vk_synchronization_helpers.c" "--beta" "false"
Traceback (most recent call last):
File "C:/work/xemu/mesa/src/vulkan/util/vk_synchronization_helpers_gen.py", line 213, in main
f.write(TEMPLATE_C.render(**environment))
UnicodeEncodeError: 'gbk' codec can't encode character '\xa9' in position 15: illegal multibyte sequence
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com >
Acked-by: Eric Engestrom <eric@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26515 >
2023-12-07 12:41:07 +00:00
Timothy Arceri
72ad0db505
glsl: remove now unused GLSL IR block linker
...
This is now done in the NIR linker instead.
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26534 >
2023-12-07 03:05:10 +00:00
Timothy Arceri
32f274768e
glsl: use new nir based block linker
...
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26534 >
2023-12-07 03:05:10 +00:00
Timothy Arceri
0c6272f97f
glsl: support glsl linking in nir block linker
...
This added support for names and some extra validation that the
spirv linker does not require.
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26534 >
2023-12-07 03:05:10 +00:00
Timothy Arceri
c468aa6059
nir: add nir_fixup_deref_types()
...
This will be used to fix up types after arrays have been resized.
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26534 >
2023-12-07 03:05:09 +00:00
Yonggang Luo
72e30c8853
treewide: Avoid use align as variable, replace it with other names
...
align is a function and when we want use it, the align variable will shadow it
So replace it with other names
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com >
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25997 >
2023-12-07 02:30:53 +00:00
Faith Ekstrand
d2ffcb6092
nir: Lower [su]dot_4x8_[ui]add_sat to [su]dot_4x8_[ui]add
...
Since nir_opt_algebraic runs on its own results, if the driver doesn't
have [su]dot_4x8_[ui]add then the [su]dot_4x8_[ui]add lowering rules
will kick in and lower that to what we had originally.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26533 >
2023-12-06 23:15:33 +00:00