Marek Olšák
ec38758e86
nir: return progress from nir_lower_io_to_scalar
...
oversight?
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19399 >
2023-03-03 03:27:40 +00:00
Faith Ekstrand
c11ac5e446
nir: Handle wider unaligned loads in lower_mem_access_bit_size
...
Reviewed-by: M Henning <drawoc@darkrefraction.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21524 >
2023-03-03 02:00:39 +00:00
Faith Ekstrand
7e8a10be67
nir: Make chunk_align_offset const in lower_mem_load()
...
This should make things more clear than changing the value from earlier
in the loop. Also, rename chunk_offset to load_offset so they match.
Reviewed-by: M Henning <drawoc@darkrefraction.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21524 >
2023-03-03 02:00:39 +00:00
Faith Ekstrand
eb9a56b6ca
nir: Rename nir_mem_access_size_align::align_mul to align
...
It's a simple alignment so calling it align_mul is a bit misleading.
Suggested-by: M Henning <drawoc@darkrefraction.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21524 >
2023-03-03 02:00:39 +00:00
Faith Ekstrand
802bf1d9a6
nir: Rename align to whole_align in lower_mem_load
...
Reviewed-by: M Henning <drawoc@darkrefraction.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21524 >
2023-03-03 02:00:39 +00:00
Faith Ekstrand
ca4d73ba36
nir: Add a combined alignment helper
...
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@colllabora.com>
Reviewed-by: M Henning <drawoc@darkrefraction.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21524 >
2023-03-03 02:00:39 +00:00
Faith Ekstrand
e433a7c4fa
nir: Add UBO support to nir_lower_mem_access_bit_sizes
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: M Henning <drawoc@darkrefraction.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21524 >
2023-03-03 02:00:39 +00:00
Faith Ekstrand
116a851264
nir: Add mode filtering to lower_mem_access_bit_sizes
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: M Henning <drawoc@darkrefraction.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21524 >
2023-03-03 02:00:39 +00:00
Faith Ekstrand
4b06b1a7c5
nir: Check against combined alignment in nir_lower_mem_access_bit_sizes
...
Checking against align_mul is insufficient if align_offset > 0. We need
to check against the combined alignment instead.
Fixes: 2e2d7803c7 ("nir: Add a load/store bit size lowering pass")
Reviewed-by: M Henning <drawoc@darkrefraction.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21524 >
2023-03-03 02:00:39 +00:00
Georg Lehmann
0a3387a190
nir/lower_mediump: don't use fp16 for constants if the result is denormal
...
Image stores are not required to preserve denorms.
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21622 >
2023-03-02 11:42:10 +00:00
Timothy Arceri
d75a36a9ee
glsl: remove do_copy_propagation_elements() optimisation pass
...
Since 13b859de do_copy_propagation_elements() has a flaw where
the time it takes to complete grows exponentially slowers as the number
of nested loops increases. It can also hurt rather than help verses
just letting NIR optimise the code. So if the NIR linker is enabled we
let it handle it instead.
shader-db results Iris (BDW):
total instructions in shared programs: 11177181 -> 11199739 (0.20%)
instructions in affected programs: 119424 -> 141982 (18.89%)
helped: 109
HURT: 65
total cycles in shared programs: 368946819 -> 372277173 (0.90%)
cycles in affected programs: 116539428 -> 119869782 (2.86%)
total spills in shared programs: 3983 -> 8785 (120.56%)
spills in affected programs: 2072 -> 6874 (231.76%)
helped: 0
HURT: 6
total fills in shared programs: 2016 -> 6068 (200.99%)
fills in affected programs: 230 -> 4282 (1761.74%)
helped: 0
HURT: 6
LOST: 85
GAINED: 77
freedreno results:
total instructions in shared programs: 11011122 -> 11011620 (<.01%)
instructions in affected programs: 939829 -> 940327 (0.05%)
total full in shared programs: 762725 -> 762674 (<.01%)
full in affected programs: 1096 -> 1045 (-4.65%)
total constlen in shared programs: 1772092 -> 1771596 (-0.03%)
constlen in affected programs: 2780 -> 2284 (-17.84%)
total stp in shared programs: 4040 -> 4058 (0.45%)
stp in affected programs: 3656 -> 3674 (0.49%)
total ldp in shared programs: 2160 -> 2178 (0.83%)
ldp in affected programs: 1748 -> 1766 (1.03%)
stp HURT: shaders/robclark-shaders/gfxbench5/gl_5_high_off/13.shader_test CL: 1231 -> 1234 (0.24%)
stp HURT: shaders/robclark-shaders/gfxbench5/gl_5_normal_off/13.shader_test CL: 1231 -> 1234 (0.24%)
stp HURT: shaders/robclark-shaders/gfxbench5/gl_5_high_off/15.shader_test CL: 453 -> 456 (0.66%)
stp HURT: shaders/robclark-shaders/gfxbench5/gl_5_normal_off/15.shader_test CL: 453 -> 456 (0.66%)
stp HURT: shaders/robclark-shaders/gfxbench5/gl_5_high_off/17.shader_test CL: 144 -> 147 (2.08%)
stp HURT: shaders/robclark-shaders/gfxbench5/gl_5_normal_off/17.shader_test CL: 144 -> 147 (2.08%)
however, those stp counts are misleading -- gfxbench gl-5-normal actually
gets its scratch (ldp/stp) stored as 16 bits instead of 32 thanks to
better NIR copy prop, and the result is 2.64398% +/- 0.0991923% perf
improvement!
i915 results:
total instructions in shared programs: 510528 -> 510489 (<.01%)
instructions in affected programs: 3303 -> 3264 (-1.18%)
total tex_indirect in shared programs: 16708 -> 16717 (0.05%)
tex_indirect in affected programs: 134 -> 143 (6.72%)
total temps in shared programs: 30181 -> 30169 (-0.04%)
temps in affected programs: 1268 -> 1256 (-0.95%)
LOST: 0
GAINED: 1
i915 highlights:
instructions HURT: shaders/closed/steam/legend-of-grimrock/47.shader_test FS: 141 -> 144 (2.13%)
instructions HURT: shaders/closed/steam/steamworld-dig/22.shader_test FS: 84 -> 108 (28.57%)
temps HURT: shaders/closed/steam/left-4-dead-2/medium/3682.shader_test FS: 7 -> 13 (85.71%)
r300 results:
total instructions in shared programs: 1340439 -> 1340845 (0.03%)
instructions in affected programs: 32354 -> 32760 (1.25%)
total temps in shared programs: 179394 -> 179329 (-0.04%)
temps in affected programs: 1505 -> 1440 (-4.32%)
total consts in shared programs: 1177742 -> 1177885 (0.01%)
consts in affected programs: 1107 -> 1250 (12.92%)
total lits in shared programs: 24992 -> 25019 (0.11%)
lits in affected programs: 138 -> 165 (19.57%)
instructions HURT: shaders/closed/steam/legend-of-grimrock/26.shader_test FS: 47 -> 52 (10.64%)
instructions HURT: shaders/closed/steam/sanctum-2/6072.shader_test FS: 43 -> 48 (11.63%)
instructions HURT: shaders/closed/steam/champions-of-regnum/2378.shader_test VS: 35 -> 40 (14.29%)
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13288 >
2023-03-01 16:09:25 +00:00
Emma Anholt
106019a5d8
nir/split_64bit_vec3_and_vec4: Handle 64-bit matrix types.
...
The offset handling should already work for flattening to our split vars,
just need to make sure we have enough (or any!) array elements.
Fixes : #7154
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13288 >
2023-03-01 16:09:25 +00:00
Caio Oliveira
5f79e78911
spirv: Add skip_os_break_in_debug_build option to use in unit tests
...
When running in the CI environment, instead of crashing the test
binary, it is preferable to just fail gracefully (in this case return
a NULL shader) like is done in release mode, so other tests continue
to be executed.
For convenience add a variable break_on_failure to the test so the
breaking behavior can be re-enable in individual tests when debugging.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21512 >
2023-03-01 13:47:57 +00:00
Caio Oliveira
8a91a33b7c
spirv/tests: Add some basic control flow tests
...
The DISABLED test currently fails parsing.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21512 >
2023-03-01 13:47:57 +00:00
Caio Oliveira
4e5b520286
spirv/tests: Parametrize stage in get_nir() helper
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21512 >
2023-03-01 13:47:57 +00:00
Caio Oliveira
131f328a18
spirv/tests: Add script to generate C array from SPIR-V source
...
This is useful for generating the C code to embed the SPIR-V
when adding a new test.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21512 >
2023-03-01 13:47:57 +00:00
Caio Oliveira
17e0c75441
spirv/tests: Subclass spirv_test helper to namespace the tests
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21512 >
2023-03-01 13:47:57 +00:00
Georg Lehmann
aeb68c29b4
nir/opt_algebraic: add patterns for iand/ior of feq/fneu with 0
...
Foz-DB Navi21:
Totals from 1245 (0.92% of 134913) affected shaders:
VGPRs: 66232 -> 66248 (+0.02%); split: -0.01%, +0.04%
CodeSize: 5874976 -> 5868168 (-0.12%); split: -0.17%, +0.05%
MaxWaves: 25278 -> 25274 (-0.02%); split: +0.01%, -0.02%
Instrs: 1087502 -> 1085267 (-0.21%); split: -0.21%, +0.00%
Latency: 6531489 -> 6531672 (+0.00%); split: -0.04%, +0.05%
InvThroughput: 1531774 -> 1532327 (+0.04%); split: -0.02%, +0.05%
VClause: 22218 -> 22202 (-0.07%); split: -0.08%, +0.00%
SClause: 45906 -> 45873 (-0.07%); split: -0.08%, +0.01%
Copies: 64004 -> 64102 (+0.15%); split: -0.24%, +0.39%
Branches: 21529 -> 21534 (+0.02%); split: -0.00%, +0.03%
PreSGPRs: 51936 -> 51850 (-0.17%)
PreVGPRs: 55393 -> 55398 (+0.01%); split: -0.02%, +0.03%
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21576 >
2023-03-01 11:24:43 +00:00
Caio Oliveira
863cbb3e02
spirv: Don't specify nir_var_uniform or nir_var_mem_ubo in barriers
...
These are constant read-only data and don't need to be synchronized.
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21517 >
2023-03-01 09:53:29 +00:00
Eric Engestrom
78c95b2865
glsl: align definition of _mesa_problem with the one in main/error.h
...
The ctx pointer not used by that function anyway, so const'ing it makes
no difference.
Signed-off-by: Eric Engestrom <eric@igalia.com>
Reviewed-by: David Heidelberg <david.heidelberg@collabora.com>
Reviewed-by: Marek Olšák <maraeo@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21557 >
2023-02-28 09:04:47 +00:00
Emma Anholt
87ec94f6aa
glsl: Move lower_vector_insert to GLSL-to-NIR.
...
We already have a nir_builder equivalent for generating this code, just
use that instead of doing it in GLSL.
No change on r300 shader-db.
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21476 >
2023-02-28 06:13:06 +00:00
Emma Anholt
2f53188f18
glsl: Remove unused as_rvalue_to_saturate().
...
This is not where saturate recognition happens. Dead code since
5598458e69 ("i965/vec4: Remove try_emit_saturate") in 2014!
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:09 +00:00
Emma Anholt
d76fb3b2b1
glsl/opt_algebraic: Drop the flrp recognizer.
...
No change to r300.
freedreno looks mixed but slightly positive in instructions:
total instructions in shared programs: 11012472 -> 11012453 (<.01%)
instructions in affected programs: 8250 -> 8231 (-0.23%)
helped: 16
HURT: 50
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:09 +00:00
Emma Anholt
579aca894f
glsl/opt_algebraic: Drop the ftrunc pattern recognizer.
...
Now that it's in NIR, there's no change to r300 or freedreno shader-db
when we do.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:09 +00:00
Emma Anholt
6d52e6fd2c
nir: Port a floor->truncate algebraic opt pattern from GLSL.
...
Prevents regression when dropping code from the GLSL optimizer.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:09 +00:00
Emma Anholt
6229d34b91
glsl/opt_algebraic: Drop some fmul simplifications.
...
Looks like mostly noise, trending slightly positively.
freedreno:
total instructions in shared programs: 11012781 -> 11012472 (<.01%)
instructions in affected programs: 114072 -> 113763 (-0.27%)
helped: 123
HURT: 153
r300:
total instructions in shared programs: 1338236 -> 1337897 (-0.03%)
instructions in affected programs: 3460 -> 3121 (-9.80%)
helped: 61
HURT: 11
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:09 +00:00
Emma Anholt
4bf65ce221
glsl/opt_algebraic: Drop the flrp/ffma simplifiers.
...
NIR seems to do a better job. Freedreno:
total instructions in shared programs: 11013096 -> 11012781 (<.01%)
instructions in affected programs: 258358 -> 258043 (-0.12%)
helped: 470
HURT: 269
r300:
total instructions in shared programs: 1338237 -> 1338236 (<.01%)
instructions in affected programs: 161 -> 160 (-0.62%)
helped: 1
HURT: 0
total presub in shared programs: 45127 -> 44881 (-0.55%)
presub in affected programs: 1719 -> 1473 (-14.31%)
helped: 246
HURT: 0
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:09 +00:00
Emma Anholt
3f632ce764
glsl/opt_algebraic: Drop no-op pack/unpack optimization.
...
No change on freedreno shader-db.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
d589760f44
glsl/opt_algebraic: Drop the eq/neq add-removal optimization.
...
No change on freedreno or r300 shader-db.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
d352bd9737
glsl/opt_algebraic: Drop scalar all_eq/any_neq -> eq/neq opt.
...
No change in r300 or freedreno shader-db.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
62afead36f
glsl/opt_algebraic: Drop fdot 0-channel optimizations.
...
No change on i915g shader-db.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
ef02581590
nir: Add optimization for fdot(x, 0) -> 0.
...
We had all these nice fdot opts to drop individual channels that were 0,
but nothing handling it being entirely 0! Avoids r300g regression when
dropping them from GLSL.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
b328c97e11
glsl/opt_algebraic: Drop csel(true/false, x, y) optimization.
...
No change on freedreno shader-db.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
652ff42f14
glsl/opt_algebraic: Drop x + -x -> 0 optimization.
...
No change on freedreno shader-db.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
69b178ac90
glsl/opt_algebraic: Drop add/sub with 0 optimizations.
...
Looks like minor instruction selection noise in freedreno shader-db:
total instructions in shared programs: 11013100 -> 11013096 (<.01%)
instructions in affected programs: 2714 -> 2710 (-0.15%)
helped: 8
HURT: 6
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
c6908fc8ac
glsl/opt_algebraic: Drop fdiv(1,x) -> frcp(x) and fdiv(x,1) -> x optimizations.
...
No change on freedreno shader-db.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
4fc9342fc6
glsl/opt_algebraic: Drop and/or/xor optimizations.
...
NIR has them, and if anything freedreno shader-db prefers that NIR sees them:
total instructions in shared programs: 11013112 -> 11013100 (<.01%)
instructions in affected programs: 26266 -> 26254 (-0.05%)
helped: 4
HURT: 0
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
ab7a9b4538
glsl/opt_algebraic: Drop rcp optimizations.
...
No change on freedreno shader-db.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
6b53d4b825
glsl/opt_algebraic: Drop pow optimizations.
...
These should all be covered by NIR. Minor shader-db changes on freedreno,
which appear to be scheduling noise.
total instructions in shared programs: 11013132 -> 11013112 (<.01%)
instructions in affected programs: 3408 -> 3388 (-0.59%)
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
bb1b37e6c1
glsl/opt_algebraic: Drop shifts of 0 optimizations.
...
No change on freedreno shader-db.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
71c0c73f8e
glsl/opt_algebraic: drop fsat(fadd(b2f(x), b2f(y))) -> b2f(ior(x, y)) opt.
...
No change on freedreno shader-db.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
144b61437a
glsl/opt_algebraic: Drop f2i(trunc(x)) -> f2i(x) optimization.
...
No change on freedreno shader-db.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
47657b2ffe
glsl/opt_algebraic: Drop -(-x) -> x optimization.
...
No change on freedreno shader-db.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
766f551cb5
glsl/opt_algebraic: Drop abs(-x) -> abs(x) and abs(abs(x)) -> abs(x).
...
NIR does this. No change on freedreno shader-db.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
7a8a50106e
glsl/opt_algebraic: Drop pow-recognizer.
...
NIR handles pow recognizing, too. No change on freedreno shader-db.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
d79061dba1
glsl/opt_algebraic: Drop log(exp(x)) -> x and exp(log(x)) -> x optimisations.
...
No change on freedreno shader-db.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Emma Anholt
2bd0343ba0
glsl/opt_algebraic: Drop ~~x == x transformation.
...
No change on freedreno shader-db.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475 >
2023-02-28 03:36:08 +00:00
Caio Oliveira
fe908ffefa
glsl: Implement use_scoped_barrier option for lowering memory barriers
...
When the option is enabled, lower memory barriers to the
unified nir_intrinsic_scoped_barrier.
The translation of the following is based on
https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gl_spirv.txt
- memoryBarrier()
- memoryBarrierBuffer()
- memoryBarrierImage()
- memoryBarrierShared()
- groupMemoryBarrier()
Also use scoped barrier for the memory counterparts of the GLSL
(control) barrier() when the option is enabled. The execution
part of a (control) barrier() remains using the old intrinsic.
For memoryBarrierAtomicCounter() there's no corresponding
nir_var_atomic_counter mode. Since atomic counters are lowered
to SSBOs, use the nir_var_mem_ssbo mode in the scoped barrier
instead.
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Acked-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3339 >
2023-02-27 20:24:01 +00:00
Caio Oliveira
1db7e6a261
nir: Support use_scoped_barrier in nir_lower_atomics_to_ssbo
...
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Acked-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3339 >
2023-02-27 20:24:01 +00:00
Alyssa Rosenzweig
4eabd6586b
nir/lower_blend: Don't dereference null
...
If a dual source blend colour is never written, src1 will be null and it will be
invalid to dereference it. src1 is dereferenced both for the f2fN instruction
but also if a dual blend factor is used... even if the latter isn't strictly
valid, segfaulting in the NIR pass seems a lot meaner than blending with zero.
The referenced commit hosed Asahi, causing anything that used blending to crash.
Panfrost is unaffected since it always supplies a dual colour due to our crude
construction of blend shaders.
Fixes: 8313016543 ("nir/lower_blend: Consume dual stores")
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21544 >
2023-02-27 15:47:33 +00:00