Eric Anholt
a29b7b6ff5
nir/opt_undef: Handle a couple more normal store intrinsics.
...
They've got the value in the same slot as the others, and the same undef
behavior should be fine.
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6054 >
2020-08-20 16:44:08 +00:00
Jason Ekstrand
74ac8f3f64
nir/opt_large_constants: Fix a type/deref_type typo
...
Fixes: df9596353a "nir/large_constants: Handle incomplete derefs"
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6403 >
2020-08-20 08:47:04 -05:00
Rhys Perry
30fca3b2e6
nir: fix memory leak in nir_cf_list_clone
...
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6206 >
2020-08-20 10:52:19 +00:00
Rhys Perry
27ec38d746
nir: fix potential left shift of a negative value
...
Fixes UBSan error:
src/compiler/nir/nir_constant_expressions.c:36573:32: runtime error: left shift of negative value -1
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6206 >
2020-08-20 10:52:19 +00:00
Jason Ekstrand
a880f97d59
compiler/types: Allow interfaces in get_explicit_type_for_size_align
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6210 >
2020-08-19 19:43:31 +00:00
Jason Ekstrand
df9596353a
nir/large_constants: Handle incomplete derefs
...
This pass works entirely with variables, all we have to do is ignore any
derefs we see which we can't chase back to the variable. The one
interesting case we have to handle is if we have a complex use of a
deref_var. In that case, we have to flag it non-constant.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6210 >
2020-08-19 19:43:31 +00:00
Jason Ekstrand
9f3c595dfc
nir/find_array_copies: Handle cast derefs
...
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6210 >
2020-08-19 19:43:31 +00:00
Jason Ekstrand
a0a0bcfa26
nir/builder: Add a nir_iand_imm helper
...
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6210 >
2020-08-19 19:43:31 +00:00
Jason Ekstrand
ac95bb45e8
nir: Initialize nir_ssa_def::live_index
...
Previously, this was left uninitialized. Let's initialize it to an
obviously bogus value so we notice if anyone ever tries to use stale
liveness data.
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6210 >
2020-08-19 19:43:31 +00:00
Jesse Natalie
1e7c2d1862
nir/glsl: Add glsl_get_cl_type_size_align helper
...
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6367 >
2020-08-19 18:11:42 +00:00
Connor Abbott
c1a6e34573
nir/lower_input_attachments: Support loading layer id via gl_ViewIndex
...
This is required on adreno when the special multiview mode is switched
on.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5719 >
2020-08-19 16:36:43 +00:00
Connor Abbott
d243bf1032
nir/lower_input_attachments: Support loading layer id as an input
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5719 >
2020-08-19 16:36:43 +00:00
Connor Abbott
e72895767b
nir/lower_input_attachments: Refactor to use an options struct
...
While we're at it, fold the details of how to load the fragcoord into
load_fragcoord().
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5719 >
2020-08-19 16:36:43 +00:00
Connor Abbott
340c73d4ef
nir/spirv: Add the option to keep ViewIndex as an input
...
This is necessary for fragment shaders on adreno.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5719 >
2020-08-19 16:36:43 +00:00
Rhys Perry
60dae98456
nir/opt_remove_phis: optimize out phis with undef
...
This removes some phis that loop unrolling can create.
fossil-db (Navi):
Totals from 349 (0.26% of 135946) affected shaders:
SpillSGPRs: 52 -> 41 (-21.15%)
CodeSize: 3179968 -> 3169920 (-0.32%); split: -0.33%, +0.01%
Instrs: 626965 -> 624712 (-0.36%); split: -0.37%, +0.01%
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6348 >
2020-08-19 13:27:50 +00:00
Jason Ekstrand
b479de8537
spirv: Don't emit RMW for vector indexing in shared or global
...
Anything that fails the is_external_block check is getting the
vtn_local_load/store path which does read-modify-write which isn't
correct if the variable mode can be written cross-workgroup.
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6372 >
2020-08-18 20:22:05 +00:00
Boris Brezillon
165009bc70
spirv: Add support for the CL Round instruction
...
Add a round() implementation that's conformant with the CL spec.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6256 >
2020-08-18 17:09:47 +02:00
Danylo Piliaiev
b6ebf6eba9
spirv: Only require bare types to match when copying variables
...
OpCopyMemory doesn't care about mismatched decorations, only about
matching types.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3418
Fixes: bf1a1eed88
Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6344 >
2020-08-18 11:53:07 +00:00
Marcin Ślusarz
16f1d8b391
glsl: fix crashes on out of bound matrix access using constant index
...
Fixes these piglit tests:
- spec@glsl-1.20@execution@matrix-out-of-bounds-access@fs-mat4-out-of-bounds-2
- spec@glsl-1.20@execution@matrix-out-of-bounds-access@fs-mat4-out-of-bounds-4
- spec@glsl-1.20@execution@matrix-out-of-bounds-access@fs-mat4-out-of-bounds-5
Signed-off-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4998 >
2020-08-18 11:34:54 +00:00
Louis-Francis Ratté-Boulianne
7dcb1d272f
st/mesa: Replace UsesStreams by ActiveStreamMask for GS
...
Some drivers need to know which streams are used by a geometry
shader. Adding a mask of active streams makes the use of
UsesStreams superfluous as it's the equivalent of:
ActiveStreamMask != (1 << 0)
Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5984 >
2020-08-18 11:17:26 +00:00
Jesse Natalie
80163bbec3
nir/vtn: Support OpOrdered and OpUnordered opcodes
...
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6355 >
2020-08-17 15:34:16 -07:00
Jesse Natalie
81e6ad8298
nir/vtn: Handle LessOrGreater deprecated opcode
...
Reviewed-by Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6355 >
2020-08-17 15:34:13 -07:00
Jesse Natalie
c349e35034
nir/vtn: Support SpvOpIsFinite via fisfinite
...
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6355 >
2020-08-17 15:34:11 -07:00
Jesse Natalie
af59e4c400
nir: Add fisfinite op
...
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6355 >
2020-08-17 15:34:08 -07:00
Jesse Natalie
e6e6f52206
nir/vtn: Support SpvOpIsNormal via fisnormal
...
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6355 >
2020-08-17 15:34:05 -07:00
Jesse Natalie
9ebbed6ddc
nir: Add fisnormal op
...
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6355 >
2020-08-17 15:34:00 -07:00
Boris Brezillon
199bea0fd8
nir: Fix i64tof32 lowering
...
The round-to-nearest-even implementation found in lower_2f() is incorrect
for any value having a significand that is not directly representable
and whose non-representable part lies between 1 and half the minimum
representable value. In this case, the significand is rounded up instead
of being rounded down.
Fixes: 936c58c8fc ("nir: Extend nir_lower_int64() to support i2f/f2i lowering")
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Tested-by: Jesse Natalie <jenatali@microsoft.com>
Acked-by: Matt Turner <mattst88@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6290 >
2020-08-17 20:31:31 +00:00
Boris Brezillon
18e464cfc0
compiler/nir: Add new flags to lower pack/unpack split instructions
...
And add new rules to do this lowering in nir_opt_algebraic.py.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6309 >
2020-08-17 19:46:10 +00:00
Daniel Stone
c60cea0daa
glsl/test: Don't run whitespace tests in parallel
...
For some unfathomable reason, three out of these four tests often time
out when running within CI. On the assumption that there is some
parallelisation badness happening rather than the non-UNIX tests
entering infinite loops, try just marking them as serial-only.
This should have a negligible impact on runtime since they are quick to
execute.
Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6301 >
2020-08-17 17:44:26 +00:00
Jesse Natalie
ee905aa3a0
nir/vtn: CL SPIR-V callers should specify address modes
...
Instead of inferring the address mode from the environment, allows
callers to override to suit their needs.
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6330 >
2020-08-17 14:36:18 +00:00
Jason Ekstrand
a097bf160a
nir/builder: Make nir_get_ptr_bitsize take a nir_shader
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6330 >
2020-08-17 14:36:18 +00:00
Jesse Natalie
627c8e1640
nir: Add nir_address_format_32bit_index_offset_pack64
...
This new address mode is supported by nir_lower_explicit_io
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6330 >
2020-08-17 14:36:18 +00:00
Jesse Natalie
113458d372
nir: Add nir_address_format_32bit_offset_as_64bit
...
This new address mode is supported by nir_lower_explicit_io
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6330 >
2020-08-17 14:36:18 +00:00
Jesse Natalie
a1ed83fddd
nir: Optimize mask+downcast to just downcast
...
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6330 >
2020-08-17 14:36:18 +00:00
Jesse Natalie
fd9b33d516
nir: Fix serialize/deserialize of void samplers/images
...
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6222 >
2020-08-17 13:10:19 +00:00
Jesse Natalie
c17b58a9e6
glsl: Add 'bare' shadow sampler type
...
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6222 >
2020-08-17 13:10:19 +00:00
Gert Wollny
418c4c0d7d
compiler/nir: extend lower_fragcoord_wtrans to support VARYING_SLOT_POS
...
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Andreas Baierl <ichgeh@imkreisrum.de>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6220 >
2020-08-17 12:38:05 +00:00
Gert Wollny
7aaddf1a34
compiler/nir: rewrite lower_fragcoord_wtrans to use nir_lower_instructions
...
This compacts the code and makes it easier to extend.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Andreas Baierl <ichgeh@imkreisrum.de>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6220 >
2020-08-17 12:38:05 +00:00
Marek Olšák
8a012f429d
nir: handle load_input_vertex in nir_get_io_offset_src
...
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6328 >
2020-08-17 11:06:49 +00:00
Marek Olšák
83953f9d4d
nir: remove nir_strip stub declaration
...
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6328 >
2020-08-17 11:06:49 +00:00
Marek Olšák
f3a9781ee1
compiler: add glsl_print_type
...
Move it from the glsl compiler. For debugging.
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6328 >
2020-08-17 11:06:49 +00:00
BillKristiansen
ff4c991fd1
compiler/glsl: Initialize local variable to zero to fix MSVC RTC error
...
Without this, we get a run-time error about using an uninitialized
variable.
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6221 >
2020-08-17 09:31:37 +00:00
orbea
a76423e481
spirv/vtn_cfg.c: Include util/debug.h for env_var_as_boolean.
...
Fixes https://gitlab.freedesktop.org/mesa/mesa/-/issues/3414
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6331 >
2020-08-16 06:27:34 +00:00
Jason Ekstrand
b41e74ae4a
spirv: Add a MESA_SPIRV_FORCE_UNSTRUCTURED environment variable
...
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2401 >
2020-08-14 20:35:37 +00:00
Karol Herbst
217def3ac6
spirv: parse unstructured CFG
...
v2 (Boris Brezillon): handle functions with return values
v3: call structurizer
v4: entire rewrite
v5: fix handling of already visited default branches
v2 (Jason Ekstrand): Stop walking hash tables
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Tested-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2401 >
2020-08-14 20:35:37 +00:00
Karol Herbst
467b90fcc4
spirv: extract switch parsing into its own function
...
v2 (Jason Ekstrand):
- Construct a list of vtn_case objects
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2401 >
2020-08-14 20:35:37 +00:00
Boris Brezillon
96dff31bc8
spirv: Move the emit a 'return value' store logic into own function
...
Right now, only the structured CF path emits 'return value' stores when
an SpvOpReturnValue opcode is found. Move the emit 'return value' logic
in a separate function so we can use it from the unstructured path as well.
v2 (Karol): rephrased and removed unstructured changes
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2401 >
2020-08-14 20:35:37 +00:00
Jason Ekstrand
4638de8b1b
nir/lower_goto_if: Add some debug prints
...
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2401 >
2020-08-14 20:35:37 +00:00
Jason Ekstrand
d57573dcd4
nir/lower_goto_if: Add a route::outside set
...
Acked-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2401 >
2020-08-14 20:35:37 +00:00
Jason Ekstrand
d2bf850672
nir/lower_goto_if: Replace a tripple loop with a double loop
...
If there's some reason why this needs to be a tripple loop, I'm not
seeing it. As far as I can tell, all the inner-most loop does is look
for the next remaining block not already in cur_level->blocks. There's
no reason to re-walk the whole set every time just to do that.
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2401 >
2020-08-14 20:35:37 +00:00