Timur Kristóf
83eebdb507
radv: Set shared VGPR count in radv_postprocess_config.
...
This commit allows RADV to set the shared VGPR count according to
the shader config.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-09-26 13:36:49 +00:00
Rhys Perry
3c966fd688
aco,radv: rename record_llvm_ir/llvm_ir_string to record_ir/ir_string
...
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-09-26 11:08:47 +01:00
Rhys Perry
ec8ced9123
radv/aco: return a correct name and description for the backend IR
...
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-09-26 11:08:43 +01:00
Rhys Perry
6613b81327
aco,radv/aco: get dissassembly for release builds if requested
...
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-09-26 11:08:09 +01:00
Daniel Schürmann
8b78cce433
radv: remove dead shared variables
...
LLVM does this anyway, but for ACO we need to do it in NIR.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-09-19 12:10:00 +02:00
Daniel Schürmann
281262281b
radv/aco: enable VK_EXT_shader_demote_to_helper_invocation
...
For now, this extension will only be enabled for ACO.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-09-19 12:10:00 +02:00
Daniel Schürmann
a70a998718
radv/aco: Setup alternate path in RADV to support the experimental ACO compiler
...
LLVM remains default and ACO can be enabled with RADV_PERFTEST=aco.
Co-authored-by: Daniel Schürmann <daniel@schuermann.dev >
Co-authored-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-09-19 12:10:00 +02:00
Marek Olšák
0692ae34e9
ac: move ac_get_num_physical_sgprs into radeon_info
...
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-09-18 14:39:06 -04:00
Marek Olšák
ca43006fd2
ac: move ac_get_max_wave64_per_simd into radeon_info
...
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-09-18 14:39:06 -04:00
Samuel Pitoiset
5ebc76471c
radv/gfx10: adjust the GS NGG scratch size for streamout
...
It needs more space for multiple streams.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-09-16 12:08:22 +02:00
Samuel Pitoiset
a15b3bcf1a
radv/gfx10: add an option to switch from legacy to NGG streamout
...
This internal option is turned off by default because NGG streamout
still hangs. It seems like it's related to GDS as RadeonSI.
That option will be turned on once all issues are resolved.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-09-16 12:08:22 +02:00
Samuel Pitoiset
538766792d
radv/gfx10: declare a LDS symbol for the NGG emit space
...
This fixes some interactions when NGG GS is enabled. It fixes:
- dEQP-VK.clipping.user_defined.clip_cull_distance_dynamic_index.*geom*
- dEQP-VK.tessellation.geometry_interaction.passthrough.*
For some reasons, using the computed ESGS ring size randomly hangs
with CTS. For now, just use the maximum LDS size for ESGS.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-09-10 09:27:01 +02:00
Samuel Pitoiset
a9af11f1fa
radv: fill shader info for all stages in the pipeline
...
This shouldn't be in NIR->LLVM because ACO also needs the shader
info. This will also help for computing some NGG values that are
necessary for declaring LDS symbols.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-09-10 09:26:45 +02:00
Marek Olšák
d95afd8b9e
radeonsi/gfx10: fix wave occupancy computations
...
Cc: 19.2 <mesa-stable@lists.freedesktop.org >
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
2019-09-09 23:43:03 -04:00
Samuel Pitoiset
83499ac765
radv: merge radv_shader_variant_info into radv_shader_info
...
Having two different structs is useless.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-09-06 15:52:03 +02:00
Vasily Khoruzhick
9367d2ca37
nir: allow specifying filter callback in lower_alu_to_scalar
...
Set of opcodes doesn't have enough flexibility in certain cases. E.g.
Utgard PP has vector conditional select operation, but condition is always
scalar. Lowering all the vector selects to scalar increases instruction
number, so we need a way to filter only those ops that can't be handled
in hardware.
Reviewed-by: Qiang Yu <yuq825@gmail.com >
Reviewed-by: Eric Anholt <eric@anholt.net >
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com >
2019-09-06 01:51:28 +00:00
Connor Abbott
3f5b541fc8
radv: Call nir_propagate_invariant()
...
Without this, invariant qualifiers don't do anything. Together with a
fix to the game, this fixes flickering in No Man's Sky.
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-09-05 14:05:46 +02:00
Connor Abbott
71a6794200
ac/nir: Enable nir_opt_large_constants
...
vkpipeline-db numbers:
Totals:
SGPRS: 1740306 -> 1741322 (0.06 %)
VGPRS: 1331124 -> 1331712 (0.04 %)
Spilled SGPRs: 21201 -> 21316 (0.54 %)
Spilled VGPRs: 0 -> 0 (0.00 %)
Private memory VGPRs: 0 -> 0 (0.00 %)
Scratch size: 256 -> 256 (0.00 %) dwords per thread
Code Size: 79022628 -> 78694788 (-0.41 %) bytes
LDS: 6500 -> 6500 (0.00 %) blocks
Max Waves: 301413 -> 301302 (-0.04 %)
Wait states: 0 -> 0 (0.00 %)
Totals from affected shaders:
SGPRS: 53633 -> 54649 (1.89 %)
VGPRS: 53000 -> 53588 (1.11 %)
Spilled SGPRs: 3454 -> 3569 (3.33 %)
Spilled VGPRs: 0 -> 0 (0.00 %)
Private memory VGPRs: 0 -> 0 (0.00 %)
Scratch size: 0 -> 0 (0.00 %) dwords per thread
Code Size: 5284232 -> 4956392 (-6.20 %) bytes
LDS: 2 -> 2 (0.00 %) blocks
Max Waves: 4239 -> 4128 (-2.62 %)
Wait states: 0 -> 0 (0.00 %)
(The biggest VGPR and max wave regression is due to unrolling a loop,
which made the scheduler more aggressive, but in this case it's able to
effectively hide latency so it's actually probably a win.)
shader-db numbers with radeonsi NIR:
Totals:
SGPRS: 3526496 -> 3526512 (0.00 %)
VGPRS: 2198576 -> 2198576 (0.00 %)
Spilled SGPRs: 10463 -> 10463 (0.00 %)
Spilled VGPRs: 86 -> 86 (0.00 %)
Private memory VGPRs: 3182 -> 2528 (-20.55 %)
Scratch size: 3308 -> 2640 (-20.19 %) dwords per thread
Code Size: 74117280 -> 74106140 (-0.02 %) bytes
LDS: 0 -> 0 (0.00 %) blocks
Max Waves: 775846 -> 775844 (-0.00 %)
Wait states: 0 -> 0 (0.00 %)
Totals from affected shaders:
SGPRS: 856 -> 872 (1.87 %)
VGPRS: 680 -> 680 (0.00 %)
Spilled SGPRs: 0 -> 0 (0.00 %)
Spilled VGPRs: 0 -> 0 (0.00 %)
Private memory VGPRs: 654 -> 0 (-100.00 %)
Scratch size: 668 -> 0 (-100.00 %) dwords per thread
Code Size: 49652 -> 38512 (-22.44 %) bytes
LDS: 0 -> 0 (0.00 %) blocks
Max Waves: 182 -> 180 (-1.10 %)
Wait states: 0 -> 0 (0.00 %)
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
2019-09-05 12:21:46 +02:00
Connor Abbott
5dadbabb47
radv/radeonsi: Don't count read-only data when reporting code size
...
We usually use these counts as a simple way to figure out if a change
reduces the number of instructions or shrinks an instruction. However,
since .rodata sections aren't executed, we shouldn't be counting their
size for this analysis. Make the linker return the total executable
size, and use it to report the more useful size in both drivers.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
2019-09-05 12:21:35 +02:00
Samuel Pitoiset
cc3d36b5dd
radv: remove radv_init_llvm_target() helper
...
RADV no longer uses specific LLVM options compared to the common code.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-08-30 09:33:21 +02:00
Samuel Pitoiset
8d44f83844
radv: move lowering PS inputs/outputs at the right place
...
At shaders creation, just after NIR linking.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-08-30 09:29:31 +02:00
Samuel Pitoiset
151d6990ec
radv: gather info about PS inputs in the shader info pass
...
It's the right place to do that.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-08-30 09:29:29 +02:00
Samuel Pitoiset
49f5ddd3ae
radv: make use of has_ls_vgpr_init_bug
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-08-27 08:04:51 +02:00
Samuel Pitoiset
2b9c371575
ac: add cpdma_prefetch_writes_memory to ac_gpu_info
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
2019-08-27 08:04:29 +02:00
Samuel Pitoiset
1fd60db4a1
ac,radv,radeonsi: remove LLVM 7 support
...
Now that LLVM 9 will be released soon, we will only support
LLVM 8, 9 and master (10).
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
2019-08-23 08:12:34 +02:00
Samuel Pitoiset
e73d863a66
radv: allow to enable VK_AMD_shader_ballot only on GFX8+
...
Scans aren't implemented on SI/CIK.
Cc: 19.2 <mesa-stable@lists.freedesktop.org >
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-08-21 15:14:29 +02:00
Bas Nieuwenhuizen
2e763f7c87
radv: Use correct vgpr_comp_cnt for VS if both prim_id and instance_id are needed.
...
Should take the max of the 2.
Fixes: ea337c8b7e
"radv/gfx10: fix VS input VGPRs with the legacy path"
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-08-21 09:38:46 +00:00
Rhys Perry
7740149852
nir: merge and extend nir_opt_move_comparisons and nir_opt_move_load_ubo
...
v2: add to series
v3: update Makefile.sources
v4: don't remove a comment and break statement
v4: use nir_can_move_instr
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Eric Anholt <eric@anholt.net >
2019-08-12 22:01:30 +00:00
Bas Nieuwenhuizen
8874af8ef4
radv: Keep shader info when needed.
...
This allows enabling the shader info keeping on a per shader basis.
Also disables the cache on a per shader basis.
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-08-12 23:00:24 +02:00
Bas Nieuwenhuizen
5444d3e0c2
radv: Use string for nir dumping.
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
Allows us to easily dump all nir shaders for combined variants in
vega and simplifies ownership.
2019-08-12 23:00:24 +02:00
Bas Nieuwenhuizen
739a2880f5
radv: Get max workgroup size without nir.
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-08-12 23:00:24 +02:00
Bas Nieuwenhuizen
290ca0c4dd
radv: Add utility function to calculate max waves.
...
Not AC because a lot of it is data extraction out of radv structs.
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-08-12 23:00:24 +02:00
Bas Nieuwenhuizen
ba8d3c362b
radv: Properly use Wave64 for non-NGG GS and copy shader.
...
Fixes: 8a86908e9a
"radv/gfx10: add Wave32 support for vertex, tessellation and geometry shaders"
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-08-12 13:32:18 +00:00
Bas Nieuwenhuizen
035406ecf7
radv: Put wave size in shader options/info.
...
Instead of having the three values everywhere. This is also more
future proof if we want the driver to make those decisions eventually.
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-08-12 13:32:18 +00:00
Bas Nieuwenhuizen
72e7b7a00b
ac/nir,radv: Optimize bounds check for 64 bit CAS.
...
When the application does not ask for robust buffer access.
Only implemented the check in radv.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-08-02 21:21:55 +02:00
Samuel Pitoiset
96a5445559
radv/gfx10: use the correct target machine for Wave32
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-08-02 09:37:38 +02:00
Samuel Pitoiset
8a86908e9a
radv/gfx10: add Wave32 support for vertex, tessellation and geometry shaders
...
It can be enabled with RADV_PERFTEST=gewave32.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-08-02 09:37:36 +02:00
Samuel Pitoiset
953bbacc23
radv/gfx10: add Wave32 support for fragment shaders
...
It can be enabled with RADV_PERFTEST=pswave32.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-08-02 09:37:34 +02:00
Samuel Pitoiset
ea38565011
radv/gfx10: add Wave32 support for compute shaders
...
It can be enabled with RADV_PERFTEST=cswave32.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-31 09:35:04 +02:00
Daniel Schürmann
45638e14fb
radv: Don't include radv_private.h from radv_shader.h
...
This patch decouples radv_shader.h from any LLVM dependency.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-30 10:29:11 +02:00
Connor Abbott
a69ab1b7d2
radv: Delete unused local variables in optimization loop
...
Totals from affected shaders:
SGPRS: 376 -> 376 (0.00 %)
VGPRS: 620 -> 560 (-9.68 %)
Spilled SGPRs: 0 -> 0 (0.00 %)
Spilled VGPRs: 0 -> 0 (0.00 %)
Private memory VGPRs: 0 -> 0 (0.00 %)
Scratch size: 292 -> 292 (0.00 %) dwords per thread
Code Size: 20024 -> 20144 (0.60 %) bytes
LDS: 0 -> 0 (0.00 %) blocks
Max Waves: 25 -> 25 (0.00 %)
Wait states: 0 -> 0 (0.00 %)
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-29 11:37:46 +02:00
Samuel Pitoiset
09abe571a2
radv/gfx10: emit streamout shader config
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-24 08:23:32 +02:00
Samuel Pitoiset
ea337c8b7e
radv/gfx10: fix VS input VGPRs with the legacy path
...
For some reasons, InstanceID is VGPR3 although StepRate0 is set to 1.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-24 08:23:21 +02:00
Samuel Pitoiset
9343c93e34
radv: fix dumping disassembly with RADV_DEBUG=shaders
...
Fixes: a20a9d0c5e
("radv: dont store disasm string unless keep_shader_info flag set")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-23 10:22:29 +02:00
Daniel Schürmann
64b7386ee8
radv: move nir_opt_conditional_discard out of optimization loop
...
This late optimization pass is only affected by nir_opt_if() and handles all cases
in a single pass. It's enough to call it once after the optimization loop.
No changes on vkpipeline-db.
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-22 08:12:18 +02:00
Bas Nieuwenhuizen
451f030c06
radv: Fix uninitialized warning.
...
For es_vgpr_comp_cnt.
Fixes: 795adbbadd
"radv/gfx10: Add pipeline state support for tess."
Reviewed-by: Dave Airlie <airlied@redhat.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-21 01:39:08 +02:00
Marek Olšák
921c1d24d5
ac/rtld: add support for Wave32
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-19 20:16:19 -04:00
Dave Airlie
2ac2b98780
radv: fix crash in shader tracing.
...
Enabling tracing, and then having a vmfault, can leads to a segfault
before we print out the traces, as if a meta shader is executing
and we don't have the NIR for it.
Just pass the stage and give back a default.
Fixes: 9b9ccee4d6
("radv: take LDS into account for compute shader occupancy stats")
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-19 11:00:25 +10:00
Timothy Arceri
a20a9d0c5e
radv: dont store disasm string unless keep_shader_info flag set
...
This fixes the memory use regression from bug 111107.
Fixes: 726a31df70
("radv: Add the concept of radv shader binaries.")
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111107
2019-07-18 00:25:55 +00:00
Samuel Pitoiset
07ff367442
radv/gfx10: implement VK_EXT_post_depth_coverage
...
I did implement this extension a while ago but it didn't work
on pre GFX10 for some reasons. Now all CTS pass.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-17 08:32:39 +02:00