Bas Nieuwenhuizen
3268c806fb
radv/gfx10: Implement bin size calculation.
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-23 21:26:59 +02:00
Bas Nieuwenhuizen
4b757697e9
radv/gfx9: Select between depth/color bins based on area.
...
Mirrors radeonsi.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-07-23 21:26:59 +02:00
Bas Nieuwenhuizen
22f2f76789
radv: Generalize binning settings.
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-07-23 21:26:59 +02:00
Bas Nieuwenhuizen
793cbf6161
radv/gfx10: Use new scan converter.
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-23 21:26:59 +02:00
Bas Nieuwenhuizen
4058b354c5
radv: Set FLUSH_ON_BINNING_TRANSITION.
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-23 21:26:59 +02:00
Samuel Pitoiset
6e5e4bf050
radv/gfx10: set BREAK_WAVE_AT_EOI if TES or GS enable the primitive ID
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-18 10:37:10 +02:00
Samuel Pitoiset
8c692ff512
radv/gfx10: move emitting VGT_PRIMITIVEID_EN into the NGG path
...
And do not emit VGT_GS_MODE which is unnecessary on GFX10.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-18 10:36:38 +02:00
Samuel Pitoiset
63d670e350
radv: fix VGT_GS_MODE if VS uses the primitive ID
...
Found by inspection.
Cc: <mesa-stable@lists.freedesktop.org >
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-18 10:03:12 +02:00
Dave Airlie
de524b2c37
radv: use correct register setter for ngg hw addr
...
this shouldn't matter, but it's good to be correct.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-18 10:17:37 +10:00
Samuel Pitoiset
24b1b1f574
radv: add an option for disabling NGG on GFX10
...
Will be useful for testing the legacy path.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-17 15:43:36 +02: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
Samuel Pitoiset
edf1af696f
radv/gfx10: fallback to the legacy path if tess and extreme geometry
...
This is unsupported and hangs.
This fixes GPU hangs with
dEQP-VK.tessellation.geometry_interaction.limits.output_required_*.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-17 08:32:33 +02:00
Samuel Pitoiset
ae4b1fc095
radv/gfx10: always build the GS copy shader but uses it on-demand
...
It should be possible to build it on-demand too but it requires
more work. On GFX10, the GS copy shader is required when tess
is enabled with extreme geometry.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-17 08:32:30 +02:00
Samuel Pitoiset
27d91062a8
radv/gfx10: support pixel shaders without exports
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-07-16 10:10:21 +02:00
Samuel Pitoiset
5d5e26230a
radv/gfx10: emit GE_PC_ALLOC
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-12 17:47:11 +02:00
Samuel Pitoiset
df062afa03
radv/gfx10: enable vertex shaders without export parameters
...
GFX10 allows this.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-12 17:47:11 +02:00
Samuel Pitoiset
3f76c0f47c
radv/gfx10: launch 2 compute waves per CU before going onto the next CU
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-12 17:47:11 +02:00
Samuel Pitoiset
e631d65fc6
radv: use ac_get_compute_resource_limits()
...
No behaviour change.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-12 17:47:11 +02:00
Samuel Pitoiset
4e38322dd8
radv/gfx10: fix wrong emission of GE_CNTL
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-12 12:15:08 +02:00
Samuel Pitoiset
a7b7e94085
radv: only enable the GS copy shader stage if GS is enabled
...
Ooops.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-11 21:44:44 +02:00
Samuel Pitoiset
5bbcb3f5bc
radv/gfx10: implement support for GS as NGG
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-11 15:45:53 +02:00
Bas Nieuwenhuizen
45b73b3aa9
radv/gfx10: Do not allocate a gs_copy_shader on gfx10.
...
Will use ngg for any gs anyway.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-11 15:45:47 +02:00
Samuel Pitoiset
ef5efb40f4
radv/gfx10: fix VGT_SHADER_STAGES_EN for GS as NGG
...
The driver shouldn't set the copy shader bit.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-11 15:45:43 +02:00
Samuel Pitoiset
8bc3ab6f0c
radv/gfx10: fix number of GS invocations for NGG
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-11 15:45:40 +02:00
Samuel Pitoiset
4cadf4309c
radv: compute correct number of input vertices for NGG
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-10 15:17:08 +02:00
Bas Nieuwenhuizen
14291342ec
radv: Add a common member in the union to make things more clear.
...
This clarifies that the struct can be used when the shader can be
one of VS/TES.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-09 09:59:07 +00:00
Bas Nieuwenhuizen
f9070743a9
Revert "radv: keep track of whether NGG is used for GS on GFX10"
...
This reverts commit 63e0675d98
.
The GS is merged with the preceding shader and since the preceding
shader will have as_ngg set the final binary will have is_ngg set.
So we do not need the gs key here.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-09 09:59:07 +00:00
Bas Nieuwenhuizen
64cd972ffb
radv/gfx10: Use correct gs_out for tess point_mode.
...
Fixes: 204e4da9b4
"radv: Use correct gs_out with tessellation."
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-09 09:52:50 +02:00
Samuel Pitoiset
611ddf794e
radv: fix VGT_ESGS_RING_ITEMSIZE for GS as NGG on GFX10
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-07-09 09:54:24 +02:00
Samuel Pitoiset
eca8a478a5
radv: emit VGT_GS_MAX_VERT_OUT for legacy and NGG paths for GS
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-07-09 09:54:22 +02:00
Samuel Pitoiset
f240147cf7
radv: emit the geometry shader as NGG if enabled on GFX10
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-07-09 09:54:21 +02:00
Samuel Pitoiset
63e0675d98
radv: keep track of whether NGG is used for GS on GFX10
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-07-09 09:54:19 +02:00
Samuel Pitoiset
c81b719812
radv: add radv_pipeline_generate_hw_gs() helper
...
For legacy GS path.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-07-09 09:54:17 +02:00
Samuel Pitoiset
54e2470047
radv: fix setting VGT_REUSE_OFF for TES on GFX10
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-07-09 09:54:16 +02:00
Bas Nieuwenhuizen
795adbbadd
radv/gfx10: Add pipeline state support for tess.
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-07-09 12:04:26 +10:00
Bas Nieuwenhuizen
23c6698ea2
radv/gfx10: Only set HW edge flags with gs & tess disabled.
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-07-09 12:04:23 +10:00
Bas Nieuwenhuizen
204e4da9b4
radv: Use correct gs_out with tessellation.
...
We should use the primitives output by the TES in that case.
There is always a separate TES if there is no GS.
Reviewed-by: Dave Airlie <airlied@redhat.com >
2019-07-09 12:04:16 +10:00
Daniel Schürmann
e41e932e57
radv: Lower input attachments in NIR.
...
v2 (Connor)
- Fix warning in release mode using MAYBE_UNUSED
Reviewed-by: Connor Abbott <cwabbott0@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-08 14:14:53 +02:00
Bas Nieuwenhuizen
817bd0cc2e
radv/gfx10: Use GS rectlist when needed.
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-07 17:51:32 +02:00
Samuel Pitoiset
ee21bd7440
radv/gfx10: implement NGG support (VS only)
...
This needs to be cleaned up a bit, and it probably contains
missing stuff and/or bugs.
This doesn't fix the "half of the triangles" issue.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-07 17:51:32 +02:00
Bas Nieuwenhuizen
9e37609d0b
radv: Combine vs and tes output keys parts.
...
That way the same deref is valid for both shader stages.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-07 17:51:32 +02:00
Bas Nieuwenhuizen
d0978427cb
radv/gfx10: Use new uconfig reg index packet for GFX10+.
...
Otherwise the hardware/firmware seems to not set the registers.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-07 17:51:32 +02:00
Samuel Pitoiset
67b6888d8b
radv/gfx10: emit GE_CNTL instead of IA_MULTI_VGT_PARAM for legacy mode
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-07 17:51:32 +02:00
Samuel Pitoiset
2141e6fc73
radv/gfx10: set user data base registers
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-07 17:51:32 +02:00
Samuel Pitoiset
3f68329806
radv/gfx10: emit VGT_VERTEX_REUSE_BLOCK_CNTL during gfx initialization
...
The value doesn't need to be updated for tess.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-07 17:51:32 +02:00
Samuel Pitoiset
e5a8f21b0e
radv/gfx10: implement radv_pipeline_generate_hw_hs()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-07 17:51:31 +02:00
Samuel Pitoiset
b144a70ca8
radv/gfx10: implement radv_pipeline_generate_geometry_shader()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-07 17:03:39 +02:00
Samuel Pitoiset
6b9dbb28ef
radv/gfx10: update DB_DFSM_CONTROL register
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-07-07 17:03:38 +02:00
Bas Nieuwenhuizen
726a31df70
radv: Add the concept of radv shader binaries.
...
This simplifies a bunch of stuff by
(1) Keeping all the things in a single allocation, making things easier
for the cache.
(2) creating a shader_variant creation helper.
This is immediately put to use by creating rtld shader binaries. This
is the main reason for the binaries, as we need to do the linking at
upload time, i.e. post caching. We do not enable rtld yet.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-04 10:52:26 +00:00
Bas Nieuwenhuizen
7469516244
radv: Merge rsrc1/rsrc2 fields with the config fields.
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-07-04 10:52:26 +00:00