Commit graph

32494 commits

Author SHA1 Message Date
Rob Clark
935f2c0ba4 d3d12: Use util_draw_multi() helper
Signed-off-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9742>
2021-03-27 19:30:04 +00:00
Rob Clark
3afde83c41 freedreno/a6xx: Fix obsolete comment
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9864>
2021-03-27 19:13:45 +00:00
Rob Clark
c14e059d9f freedreno/a6xx: Fix indirect+patches draws
Without TC, we'd get draw->count==0.. which is obviously not correct.
With TC we get random garbage for draw->count.  Which turns into
exciting things like trying to allocate multi-gigabyte buffers for
tess param/factor buffers.

But we can just tell the CP to split up large tess draws, and put an
upper bound on the tess param/factor buffer sizes.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9864>
2021-03-27 19:13:45 +00:00
Rob Clark
c6fbbbbf70 ci: Disable panfrost t760
The runners appear to be down at the moment.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Acked-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9872>
2021-03-27 18:16:48 +00:00
Gert Wollny
4b1217146d r600: Handle negate of second operator in TGSI_OPCODE_UADD
nir_to_tgsi lowers nir_op_isub to UADD and the negate source mod
on the second operator. Since r600 doesn't support source mods
for integers but support SUB_INT we switch the opcode and clear the
negate flag.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9579>
2021-03-27 16:25:23 +00:00
Erik Faye-Lund
b307927303 zink: remove no-longer-needed clipdist1 patching
Since the last round of enhanced layout packing, it seems like this code
is no longer needed. This allows us to use the HANDLE_EMIT_BUILTIN()
macro, which simplifies things further.

It would have been incorrect anyway, because it's the only code that
uses the location directly as an index. All other locations multiplies
it by four first.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9860>
2021-03-27 08:39:00 +00:00
Mike Blumenkrantz
ba8ddc0c68 zink: ci updates
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9852>
2021-03-26 21:34:50 +00:00
Eric Anholt
1e8792ea5f freedreno/a6xx: Use the frontend userclip lowering.
This ends up being way more piglit-conformant than our backend lowering.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9815>
2021-03-26 20:51:18 +00:00
Erik Faye-Lund
3463b8bf41 zink: tighten emitted image spir-v caps
We might only need to emit a read or write cap for a given image. This
could provide the Vulkan driver with the chance to optimize things
slightly.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9855>
2021-03-26 14:30:46 +00:00
Boris Brezillon
f23a023a7e panfrost: Use the descriptor allocators where appropriate
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9827>
2021-03-26 08:46:10 +01:00
Vasily Khoruzhick
bff7fa3fe3 lima: compute nir_sha1 for shader key even if disk cache is disabled
We're using it for in-memory cache as well, so it needs to be computed
unconditionally.

Fixes: bf09ba5385 ("lima: implement shader disk cache")
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9838>
2021-03-25 21:58:57 +00:00
Eric Anholt
b1e64a7771 ci/freedreno: Mark a630 as flaky on arb_draw_indirect-transform-feedback
This looks like a new one.  Unclear cause -- appeared in a large branch
with potential impact, but I had also been doing TF work around that time.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9819>
2021-03-25 16:25:24 +00:00
Erik Faye-Lund
cf4ed05417 zink: follow spir-v 1.0 spec
OpEntryPoint is only supposed to include the Input and Output storage
classes prior to SPIR-V 1.4.

Since we're always emitting SPIR-V 1.0, we should simply omit these from
OpEntryPoint for now. If we start emitting SPIR-V 1.4 or later, we
should add these back in.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9828>
2021-03-25 14:29:48 +00:00
Erico Nunes
ab71c0ba44 lima/ppir: rework liveness data structures to bitset
The liveness code in ppir can be a bottleneck in complicated shaders
with multiple spills, and the use of the mesa set data structure is one
of the main reasons it is expensive to run.
With some changes, it can be adapted to using bitsets which makes it run
substantially faster.
ppir liveness can't run with a regular bitset for registers since we
need to track inviditual component masks for non-ssa registers, but we
can switch to using a separate packed bit array just for the masks,
rather than a full blown hash set. This also makes operations such as
liveness propagation much more straightforward.

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9745>
2021-03-25 14:17:26 +00:00
Erico Nunes
2b83d99538 lima/ppir: remove use of live_out
The live_out set was serving mostly as a temporary storage of data
propagated from the next instructions.
If we do an early copy to preserve the instruction live_in set and
propagate the liveness information directly to the live_in set, we can
skip having a live_out set entirely.

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9745>
2021-03-25 14:17:26 +00:00
Erico Nunes
55b1dbb1c1 lima/ppir: remove liveness info from blocks
liveness information was stored in blocks so that the algorithm doesn't
have to find a valid instruction to inherit liveness information from.
It turns out this part of the code can be a performance bottleneck in
applications loading with complicated shaders, so skip the liveness
information in blocks to reduce the number of times we have to copy
liveness information.

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9745>
2021-03-25 14:17:26 +00:00
Danylo Piliaiev
56909868cd turnip: implement VK_KHR_pipeline_executable_properties
Loosely based on ANV implementation.

For executable's internal representation we output:
- Initial NIR after spirv_to_nir
- Final optimized NIR
- IR3 disassembly

Note, that vkGetPipelineExecutablePropertiesKHR is required to
return executable properties even if pipeline was not created with
CAPTURE_STATISTICS or CAPTURE_INTERNAL_REPRESENTATIONS bits set.
So the executables array is unconditionally populated, however
NIR and IR3 disassemlies are filled only when
CAPTURE_INTERNAL_REPRESENTATIONS is set.

Passes dEQP-VK.pipeline.executable_properties.*
Works with RenderDoc.

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8877>
2021-03-25 13:53:33 +00:00
Erik Faye-Lund
e87ff43fb3 zink: do not open-code vector-compares
We already have code to lower away these to something we don't need so
much special-case code to handle.

The sad part here is that we generate slightly worse code; trees of
OpLogicalAnd / OpLogicalOr instead of OpAny OpAll. But I would imagine
that for any GPU where this matters, these would be easy to combine
back, so I'm not losing a lot of sleep over this.

But this makes things simpler. And if we *really* care about OpAny or
OpAll, we should add NIR ALU instructions for them so we can optimize
them on other places as well, not open-code all places where it could
improve things.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9797>
2021-03-25 09:15:13 +00:00
Erik Faye-Lund
296a2fb350 zink: drop bool attempt in float vector compares
There's no such thing as a 1-bit float, so remove the special-case. It's
not going to trigger.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9797>
2021-03-25 09:15:13 +00:00
Erik Faye-Lund
9b52ac694c zink: fix vector comparison
This should have been using unordered compares all along.

This fixes a dEQP failure.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9797>
2021-03-25 09:15:13 +00:00
Vasily Khoruzhick
bf09ba5385 lima: implement shader disk cache
Wire up disk cache routines and change fs and vs keys to use nir_sha1
instead of pointer to uncompiled shader to be able to reuse them for
disk cache.

Tested-by: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9672>
2021-03-25 06:31:41 +00:00
Vasily Khoruzhick
3099ce7d02 lima: rename lima_{fs,vs}_bind_state to lima_{fs,vs}_uncompiled_shader
Tested-by: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9672>
2021-03-25 06:31:41 +00:00
Vasily Khoruzhick
1261c06c68 lima: rename *_shader_state to *_compiled_shader
Tested-by: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9672>
2021-03-25 06:31:41 +00:00
Caio Marcelo de Oliveira Filho
e93c8ab023 intel/compiler: Use a struct for brw_compile_cs parameters
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9779>
2021-03-24 23:18:46 +00:00
Caio Marcelo de Oliveira Filho
57d664245e intel/compiler: Use a struct for brw_compile_vs parameters
Makes calling code more explicit about what is being set, and allows
take advantage of zero initialization for the ones the callsite don't
care.

Besides moving to the struct, two extra "ergonomic" changes were done:

- Add a new shader_time boolean, so shader_time_index is ignored when
  unused -- this allow taking advantage of the zero initialization of
  unset fields.

- Since we have a struct, provide space for the error_str pointer.
  Both iris and i965 were using it, and the extra rstrdup in case of
  failure shouldn't be a burden for the others.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9779>
2021-03-24 23:18:46 +00:00
Caio Marcelo de Oliveira Filho
f5e1765f98 intel/compiler: Use a struct for brw_compile_fs parameters
Makes calling code more explicit about what is being set, and allows
take advantage of zero initialization for the ones the callsite don't
care.

Besides moving to the struct, two extra "ergonomic" changes were done:

- Add a new shader_time boolean, so shader_time_index is ignored when
  unused -- this allow taking advantage of the zero initialization of
  unset fields.

- Since we have a struct, provide space for the error_str pointer.
  Both iris and i965 were using it, and the extra rstrdup in case of
  failure shouldn't be a burden for the others.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9779>
2021-03-24 23:18:46 +00:00
Eric Anholt
9be24c89c8 freedreno: Clamp TF prims written to buffer size pre-a6xx.
I thought based on some previous debug this was going to fix a pile of
dEQPs, but no luck.  Still, one less TODO in the driver.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9687>
2021-03-24 21:22:01 +00:00
Eric Anholt
538e5059d0 freedreno: Don't count SW TF queries on a6xx.
On a6xx, since we have GS and tess, we do this counting in hardware.  The
next fix is going to use some functions that don't work with GS prims.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9687>
2021-03-24 21:22:01 +00:00
Eric Anholt
2e002675db freedreno: Move the primitives generated/written updates after the draw.
If we're going to clamp the written value, we need the max vtx update from
the draw's state emit.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9687>
2021-03-24 21:22:01 +00:00
Eric Anholt
b02d52459f freedreno: Move max-tf-vtx calculation to just the HW that needs it.
a3xx-a4xx use it in in-shader TF code, and all of a3xx-a5xx will need it
shortly for fixing the SW TF queries.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9687>
2021-03-24 21:22:01 +00:00
Eric Anholt
4af6fbb965 freedreno/ir3: Move max-tf-vtx calculation to a .c file
This much code should probably be a function.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9687>
2021-03-24 21:22:01 +00:00
Eric Anholt
c29c7f5042 freedreno: Assert that TF prims generated can ignore active_queries.
We won't ever be in a meta path with transform feedback enabled, so we
don't need to pay attention to the flag here.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9687>
2021-03-24 21:22:01 +00:00
Erik Faye-Lund
a95912e9af zink: check for mirror-clamp extension
This cap depends on a device extension.

Fixes: b59d98ae5f ("zink: enable PIPE_CAP_TEXTURE_MIRROR_CLAMP_TO_EDGE")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9803>
2021-03-24 21:12:00 +00:00
Erik Faye-Lund
a466c2a783 zink: check for stores and atomics features
These limits depens on feature-bits.

Fixes: 322a3d4fb0 ("zink: partially enable SSBO pipe cap")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9803>
2021-03-24 21:12:00 +00:00
Erik Faye-Lund
215ff8246f zink: check for depth-bias-clamp feature
This cap depends on a feature-bit.

Fixes: 3d7d55c2cf ("zink: enable PIPE_CAP_POLYGON_OFFSET_CLAMP")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9803>
2021-03-24 21:12:00 +00:00
Erik Faye-Lund
f6f2cbeb44 zink: check for pipeline statistics feature
This cap depends on a feature-bit.

Fixes: cb5957e13d ("zink: enable pipeline statistics cap")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9803>
2021-03-24 21:12:00 +00:00
Eric Anholt
57e00aed8e iris: Flag for resolves when stencil enable changes, too.
The watcher of this dirty flag looks at this state, so it sure seems like
it needs it.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9768>
2021-03-24 20:38:38 +00:00
Mike Blumenkrantz
bbe5eb43c7 zink: don't generate sampled image type for non-sampled images
this creates validation errors

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9802>
2021-03-24 19:54:20 +00:00
Mike Blumenkrantz
de9f04ca66 zink: add more rp cache asserts
ensure that any discrepencies are immediately detected

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9784>
2021-03-24 17:14:59 +00:00
Mike Blumenkrantz
7892b18acf zink: remove unnecessary flush during image maps
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9786>
2021-03-24 16:45:41 +00:00
Mike Blumenkrantz
6c35b4c771 zink: remove handling for resource flushing between compute/gfx batches
this is no longer a thing

Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9786>
2021-03-24 16:45:41 +00:00
Mike Blumenkrantz
9871c883cc zink: avoid unnecessary resource refs during descriptor update
this was necessary if resources could be on both gfx and compute batches,
but now there's only one type of batch

Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9786>
2021-03-24 16:45:41 +00:00
Mike Blumenkrantz
3d94144d38 zink: add buffer_subdata hook
this just sets some flags to help optimize mapping

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9790>
2021-03-24 16:11:30 +00:00
Mike Blumenkrantz
8dd8754238 zink: explicitly use stream uploader for staging buffers
this requires adding an offset member to the transfer struct

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9789>
2021-03-24 16:00:28 +00:00
Mike Blumenkrantz
a3c65ffa3f zink: create separate upload mgr for constants
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9789>
2021-03-24 16:00:28 +00:00
Mike Blumenkrantz
5313ad8e45 zink: handle gallium multi draws more effectively
there's no need to actually call through the whole function, only the
draw calls need to be looped

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9785>
2021-03-24 12:46:32 +00:00
Mike Blumenkrantz
0daacd1347 zink: ci updates
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9783>
2021-03-24 12:35:18 +00:00
Mike Blumenkrantz
40cc265888 zink: toggle conditional render when beginning/ending a renderpass
this resumes the same conditional render which was previously active

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9783>
2021-03-24 12:35:18 +00:00
Mike Blumenkrantz
4e23816243 zink: only update conditional render buffer when it needs to be updated
avoid re-fetching data

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9783>
2021-03-24 12:35:18 +00:00
Mike Blumenkrantz
cc90a0c3da zink: store conditional render predicate to query and split out start/stop
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9783>
2021-03-24 12:35:18 +00:00