Commit graph

47496 commits

Author SHA1 Message Date
Tapani Pälli
b2af419391 iris: clamp PointWidth in 3DSTATE_SF like i965 does
Values match how MinimumPointWidth, MaximumPointWidth is setup. This
fixes assert hit in debug build when packing the struct with too large
value for genxml.

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9942>
2021-04-01 10:18:23 +03:00
Bas Nieuwenhuizen
6dc07a173e zink: Only set the needed number of scissors.
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9968>
2021-03-31 20:48:38 -04:00
Bas Nieuwenhuizen
bde2291531 zink: Remove initialization of some arrays
We're only using the same number of elements we're writing to.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9968>
2021-03-31 20:48:34 -04:00
Mike Blumenkrantz
6df7d8d40d zink: ci updates
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9935>
2021-03-31 20:16:13 -04:00
Mike Blumenkrantz
d179c5d28e zink: implement threaded context
this includes:
* async buffer mapping/replacement
* async queue submission
* async (threaded) gallium flush handling

the main churn here is from handling async gallium flushes, which involves
creating multiple gallium fences (zink_tc_fence) for each zink fence (zink_fence).
a tc fence may begin waiting for completion at any time, even before the zink_fence
has had its cmdbuf(s) submitted, so handling this type of desync ends up needing
almost a complete rewrite of the existing queue architecture

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9935>
2021-03-31 20:16:05 -04:00
Charmaine Lee
a442e3ff55 gallivm: increase size of texture target enum bitfield
Need to bump up the size of texture target bitfield for MSVC.

Fixes: 0ce7c4a7c9 ("gallivm: Use the proper enum for the texture target bitfield.")

Reviewed-by: Neha Bhende <bhenden@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9928>
2021-03-31 18:18:13 +00:00
Adam Jackson
f181e61375 ci: Bump the llvmpipe test timeout to 240 seconds
lp_test_blend occasionally exceeds this on s390x, but we don't really
want to lose what little (hah) big-endian coverage we have.

Related: mesa/mesa#3437
Acked-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9921>
2021-03-31 10:47:50 -04:00
Erik Faye-Lund
70066fb036 zink: do not request scoped memory barriers
While barriers in Vulkan are scoped, we do not handle
nir_intrinsic_scoped_barrier, so we do not support them from NIR.

The reason why this hasn't been a problem seems to be that VTN is the
only place that respects them, so we haven't seen them yet.

But if the GLSL compiler starts respecting the setting, things will
start blowing up. There's WIP patches for this in !3339 already.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9949>
2021-03-31 14:07:11 +00:00
Danylo Piliaiev
049f56fc4e freedreno/a6xx: fix primitive counters debug output
Each counter spans two regs: LO and HI

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8228>
2021-03-31 16:36:09 +03:00
Danylo Piliaiev
4ce7d2138a freedreno/a6xx: copy full 64bit of primitive counter
Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8228>
2021-03-31 16:36:09 +03:00
Erik Faye-Lund
5cd113cb10 zink: document why we're calling pipe_shader_type_from_mesa
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9898>
2021-03-31 08:31:10 +00:00
Erik Faye-Lund
b25188021d zink: simplify shader-removal
This is so trivial to do, so there's no need for the helper.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9898>
2021-03-31 08:31:10 +00:00
Erik Faye-Lund
c0609b1585 zink: assert that pstage is within range
This makes it clearer that these don't include the compute-stage.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9898>
2021-03-31 08:31:10 +00:00
Erik Faye-Lund
2de07d1ad2 zink: check base-requirements
This one is a bit of a tough nut to deal with gracefully. Zink has a set
of base-requirements that we always require. There's no Gallium caps to
report these missing features, so we're essentially left with two options:

1. Fail to create the screen.
2. Ignore the missing fetures.

Solution 1 will lead to difficulties bringing up a new Vulkan driver on
Zink, and solution 2 will lead to mis-rendering.

Since Zink is mostly an opt-in driver to use when there's no OpenGL driver
available, we should probably do 2 for now. It seems better to have some
mis-rendering than no rendering at all.

But let's at least check, and print a warning. That way people get to
know what's up.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9925>
2021-03-31 08:19:24 +00:00
Erik Faye-Lund
4bf238f744 zink: do not enable unused extension
While we should probably use this extension at some point, we don't
currently do. So let's remove it, so the code documents the status-quo
instead of some potential future direction.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9925>
2021-03-31 08:19:23 +00:00
Dave Airlie
d62bb8bc0d lavapipe: fail out if spirv->nir fails
Just fail out earlier and assume a feature is missing.

Fixes a crash in validation layer tests

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9937>
2021-03-31 05:23:57 +00:00
Dave Airlie
a17e10b109 lavapipe: only reference pCounterBuffers if non-NULL
Fixes crash in validation layer tests.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9937>
2021-03-31 05:23:57 +00:00
Mike Blumenkrantz
598dc3dca4 zink: use cached memory for all resources when possible
this massively speeds up memory access across the driver, specifically
for pbo-related operations

it does require that mapped memory is manually invalidated/flushed, however, and
we also need to manually align host-visible memory to be able to do that

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9884>
2021-03-30 17:27:15 -04:00
Mike Blumenkrantz
1998e216b6 zink: track coherent resource objects
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9884>
2021-03-30 17:11:43 -04:00
Adam Jackson
4daef7ffe3 mesa: Remove redundant gl_config::sampleBuffers
This is just !!samples.

Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9817>
2021-03-30 20:33:51 +00:00
Matt Turner
40647fcc3d ci: Disable panfrost g52
The runners appear to be down at the moment.

Fixes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4538
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9930>
2021-03-30 19:41:56 +00:00
Boyuan Zhang
3c64c090e0 frontends/omx/h265: search entire dpb list
When more than 1 idr frames have been added to dpb list, there might be 2
frames with same poc in the dpb list. In this case, driver needs to search
the entire dpb list in order to get newly added reference frame with given poc

Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9881>
2021-03-30 15:47:54 +00:00
Ruijing Dong
eaf197605e radeon/vcn: release si buffer for encoding at the end.
Signed-off-by: Ruijing Dong <Ruijing.Dong@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Boyuan Zhang <Boyuan.Zhang@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9882>
2021-03-30 15:41:12 +00:00
Mike Blumenkrantz
cb580af02a zink: remove zink_create_fence()
merge this down into batch state creation to keep fence file complexity down

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:59 +00:00
Mike Blumenkrantz
11926342e3 zink: also check for device lost reset on flush
if there's a reset callback available, call that instead of cycling

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:59 +00:00
Mike Blumenkrantz
dc5d02ca54 zink: break out queue submit into separate functions
to be used with async submission

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:59 +00:00
Mike Blumenkrantz
38c5e154df zink: move VkQueue to batch object
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:59 +00:00
Mike Blumenkrantz
ef538e50c8 zink: remove zink_fence_init()
contents moved to more correct places

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:59 +00:00
Mike Blumenkrantz
95af27f032 zink: make a local screen pointer in zink_flush
no functional changes

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:59 +00:00
Mike Blumenkrantz
3a344174dc zink: store context to batch state
this will be used for post-flush device resets when device is lost

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:59 +00:00
Mike Blumenkrantz
ba6265a1ff zink: rename init_batch_state to get_batch_state
more sensible, no functional changes

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:58 +00:00
Mike Blumenkrantz
f9ee9c4539 zink: assume fence has already completed if a batch state isn't found
we're not going to be waiting on fences from the future, so if we can't
find a fence then it must have completed

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:58 +00:00
Mike Blumenkrantz
03946bfcdd zink: explicitly reset a couple more batch state members
no functional changes at this time

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:58 +00:00
Mike Blumenkrantz
f32079efab zink: add locking for fence resources
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:58 +00:00
Mike Blumenkrantz
0ebc13564a zink: split fence finish func
one part of this will be used to handle tc mechanics, the other part is for
internal use

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:58 +00:00
Mike Blumenkrantz
4a736677af zink: add function for checking whether a batch is done
this is like wait_on_batch, but without the waiting

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:58 +00:00
Mike Blumenkrantz
6eaaaaa542 zink: add locking for batch states
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:58 +00:00
Mike Blumenkrantz
c452c82b98 zink: manually invoke cpu detection during screen init
ensure this gets populated before using it

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:58 +00:00
Mike Blumenkrantz
0731861748 zink: add locking for resource maps
vulkan prohibits multiple maps on a resource, so these have to be locked
down

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:58 +00:00
Mike Blumenkrantz
e7420c7708 zink: add locking for descriptor pools
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9885>
2021-03-30 15:12:58 +00:00
Erik Faye-Lund
8e2f320f36 lavapipe: report correct value for maxTexelBufferElements
We already have a pipe_cap for this, so let's use that to report the
correct value.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9891>
2021-03-30 08:25:05 +00:00
Marcin Ślusarz
1df3a00dcd iris: disable dynamic VAO fastpath on GFX version 9
Enabling this fast path, while making CPU side simpler
(and thus reducing driver's CPU overhead), forces us to
generate multiple VERTEX_BUFFER_STATE packets pointing to
the same buffer, but with slightly shifted BufferStartingAddress.
This is fine on GFX version >= 11 and < 8, but on version
8 and 9, thanks to internal details of the VF cache, vertex
data from each VERTEX_BUFFER_STATE is cached separately
and this results in a lot of cache misses.

Disabling this fast path restores previous performance levels.

On my SKL GT2 machine this improves performance in:
- GLB27 Egypt offscreen by 37%
- GLB27 TRex offscreen by 22%
- gfxbench5 Manhattan offscreen by 1.75%
- gfxbench5 Manhattan31 offscreen by 1.9%
- gfxbench5 Aztec Ruins high by 2.3%

In Intel performance CI on GFX version 9 it improves performance in:
- gfxbench5 Manhattan offscreen by 1.65%
- gfxbench5 Aztec Ruins normal offscreen by 1.33%

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3277
Fixes: 42842306d3 ("mesa,st/mesa: add a fast path for non-static VAOs")
Signed-off-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9857>
2021-03-30 07:32:16 +00:00
Marcin Ślusarz
33d87eeb5a gallium: add PIPE_CAP_ALLOW_DYNAMIC_VAO_FASTPATH
Fixes: 42842306d3 ("mesa,st/mesa: add a fast path for non-static VAOs")
Signed-off-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9857>
2021-03-30 07:32:16 +00:00
Mike Blumenkrantz
84ad0feec5 zink: rework memory_barrier hook
this is a bit more sensible all around without being too much hammer
and not enough nail

Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9886>
2021-03-30 04:26:28 +00:00
Mike Blumenkrantz
3047c7c77f zink: rework some includes
descriptors.h requires stuff from context.h and vice versa, so there's
a little redefinition here to work around that

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9883>
2021-03-30 04:11:37 +00:00
Mike Blumenkrantz
5c1ce2edb8 zink: use GENERAL layout for sampler images that are also bound as shader images
we can't have the same image with 2 layouts, so just go with the more global one

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9883>
2021-03-30 04:11:37 +00:00
Mike Blumenkrantz
ed0fedf1c2 zink: simplify some descriptor update function parameters
just removing unused params

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9883>
2021-03-30 04:11:37 +00:00
Mike Blumenkrantz
dd29a7e5b0 zink: move descriptor barrier handling to main update function
no functional changes

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9883>
2021-03-30 04:11:37 +00:00
Mike Blumenkrantz
c7f9dc5891 zink: move update_descriptors & related funcs to zink_descriptors.c
keep zink_draw.c for draw stuff

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9883>
2021-03-30 04:11:37 +00:00
Mike Blumenkrantz
812f7ecb13 zink: rework texture_barrier hook
we can be more precise with this and avoid flushing unnecessarily

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9791>
2021-03-30 00:49:43 +00:00