Pierre-Eric Pelloux-Prayer
d92d35c9db
ac/llvm: add a return value to ac_nir_translate
...
Return a boolean instead of aborting when the NIR->LLVM translation fails.
This way, we can deal with the error at the calling site instead of crashing
the whole application.
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18147 >
2022-08-31 00:09:37 +00:00
Georg Lehmann
07b3adec12
nir: Print selection control for nir_if.
...
It's useful to see this information now that aco is going to use it.
Signed-off-by: Georg Lehmann <dadschoorse@gmail.com >
Reviewed-by: Emma Anholt <emma@anholt.net >
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18297 >
2022-08-30 23:16:51 +00:00
Karol Herbst
a5c5b172fd
nv50: race free state tracking
...
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Acked-by: M Henning <drawoc@darkrefraction.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:19 +00:00
Karol Herbst
df0a4d02f2
nvc0: make state handling race free
...
I am not entirely convinced that contexts can't mess up the state of other
contexts, but with this we at least turn down the amount of races on the
CPU side.
If we hit bugs later we can always look into it then and figure out what
to fix how.
I think we might need a better solution for it in the future as state
tracking might need to become more involved, but for now this should be
good enough.
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Acked-by: M Henning <drawoc@darkrefraction.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:19 +00:00
Karol Herbst
f2af3a9cae
nouveau: make fencing race free
...
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Acked-by: M Henning <drawoc@darkrefraction.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:19 +00:00
Karol Herbst
a85cb39914
nouveau: per context client and pushbuf
...
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Acked-by: M Henning <drawoc@darkrefraction.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:19 +00:00
Karol Herbst
8e30cfc231
nouveau/fence: per context fence
...
This doesn't add a fence list per pipe context, it simply makes us track
the current fence per context so we can safely modify the fence object
per thread.
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Acked-by: M Henning <drawoc@darkrefraction.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:19 +00:00
Karol Herbst
962a09c90f
nv50: remove nv50_bufctx_fence call in vbo_kick_notify
...
No idea why it is there. nvc0 doesn't do anything like it and it doesn't
regress any tests. Also removing is easier than handling the fence locking
inside the kick notify handler.
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:19 +00:00
Karol Herbst
88b76f8492
nv50: remove nouveau_fence_signalled prior nouveau_fence_wait
...
nouveau_fence_wait handles signalled fences just as well.
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: M Henning <drawoc@darkrefraction.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:19 +00:00
Karol Herbst
0642f95c4e
nouveau/fence: make the fence struct part of the fence API
...
This makes it easier to implement proper locking of the fence struct as we
can redesign some of the functions to take the list object instead of
fence objects.
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: M Henning <drawoc@darkrefraction.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:19 +00:00
Karol Herbst
1abc27983a
nouveau: use PUSH_KICK instead of nouveau_pushbuf_kick
...
This makes it easier to insert locking code around libdrm.
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: M Henning <drawoc@darkrefraction.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:19 +00:00
Karol Herbst
574404010a
nouveau: wrap nouveau_pushbuf_refn
...
This makes it easier to insert locking code around libdrm.
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: M Henning <drawoc@darkrefraction.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:18 +00:00
Karol Herbst
de811ee8eb
nouveau: wrap nouveau_pushbuf_validate
...
This makes it easier to insert locking code around libdrm.
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: M Henning <drawoc@darkrefraction.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:18 +00:00
Karol Herbst
3866a5433a
nouveau: wrap all nouveau_pushbuf_space calls
...
This makes it easier to insert locking code around libdrm.
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: M Henning <drawoc@darkrefraction.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:18 +00:00
Karol Herbst
5fe8fedf24
nouveau: wrap nouveau_bo_wait
...
This makes it easier to insert locking code around libdrm.
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: M Henning <drawoc@darkrefraction.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:18 +00:00
Karol Herbst
db825e34a9
nouveau: wrap nouveau_bo_map
...
This makes it easier to insert locking code around libdrm.
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: M Henning <drawoc@darkrefraction.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:18 +00:00
Karol Herbst
4154d53a85
nouveau: move nouveau_context initialization to common code
...
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: Emma Anholt <emma@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:18 +00:00
Karol Herbst
54f285901d
nouveau/fence: rework nouveau_fence_emit so we can call it on emitted fences
...
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: Emma Anholt <emma@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:18 +00:00
Karol Herbst
060d055ac5
nouveau/buffer: simplify uses of nouveau_fence_work
...
nouveau_fence_work already checks the state, so we can just call it
directly.
Strictly speaking, this isn't functional equivalent, but practically it
doesn't matter when we get the callback called.
Main reason for doing this is, that this makes locking way easier as we
can simply lock within nouveau_fence_* functions and callers don't have to
take locks themselves.
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: M Henning <drawoc@darkrefraction.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:18 +00:00
Karol Herbst
35d28251d1
nouveau/mm: make code thread safe
...
With this helgrind doesn't report any races in this code.
Cc: mesa-stable
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: Pierre Moreau <dev@pmoreau.org >
Reviewed-by: Emma Anholt <emma@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:18 +00:00
Karol Herbst
607a9e1fd2
nouveau: use the contexts pushbuf and client where possible
...
At the moment the context uses the screens object, but in order to fix
threading without having to lock too much we will have to allocate those
objects per context later.
Cc: mesa-stable
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: Emma Anholt <emma@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10752 >
2022-08-30 23:08:18 +00:00
Nanley Chery
5c2c8652d1
mesa/st: Drop st_texture_image_transfer::map
...
It's only used in the scope of a single function, st_UnmapTextureImage. Use
a local variable instead.
Acked-by: Marek Olšák <marek.olsak@amd.com >
Reviewed-by: Tapani Pälli <tapani.palli@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18257 >
2022-08-30 22:11:34 +00:00
Nanley Chery
21038d1540
mesa/st: Fix indentation in st_MapTextureImage
...
Dedent an if-else block and setup the else braces according to the coding
style.
Acked-by: Marek Olšák <marek.olsak@amd.com >
Reviewed-by: Tapani Pälli <tapani.palli@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18257 >
2022-08-30 22:11:34 +00:00
Nanley Chery
dab19642ee
mesa/st: Don't map compressed texture fallbacks for reads
...
We don't need to map the compressed texture's fallback resource for operations
which will only read from the texture (e.g., glGetCompressedTexImage2D and
glCopyImageSubData).
For compressed textures using a fallback, delay the map until
st_UnmapTextureImage and only do the map if it's being written to.
To help identify what's being changed, the expected indentation changes are
split out into the next patch.
Acked-by: Marek Olšák <marek.olsak@amd.com >
Reviewed-by: Tapani Pälli <tapani.palli@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18257 >
2022-08-30 22:11:34 +00:00
Nanley Chery
81094981b6
mesa/st: Add and use st_texture_image_transfer::box
...
Use this field to determine which parts of the compressed texture fallback
resource needs updating. Drops a dependency on the
st_texture_image_transfer::transfer pointer.
Acked-by: Marek Olšák <marek.olsak@amd.com >
Reviewed-by: Tapani Pälli <tapani.palli@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18257 >
2022-08-30 22:11:34 +00:00
Nanley Chery
5f1967e92b
mesa/st: Add and use st_texture_image_insert_transfer
...
Split out the transfer array reallocation and insertion functionality from
st_texture_image_map.
Acked-by: Marek Olšák <marek.olsak@amd.com >
Reviewed-by: Tapani Pälli <tapani.palli@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18257 >
2022-08-30 22:11:34 +00:00
Nanley Chery
9fe525e37b
mesa/st: Set PIPE_MAP_DISCARD_RANGE in fallback_copy_image
...
Enables some drivers to avoid reading from the destination when mapping it.
Acked-by: Marek Olšák <marek.olsak@amd.com >
Reviewed-by: Tapani Pälli <tapani.palli@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18257 >
2022-08-30 22:11:34 +00:00
Konstantin Seurer
c8d36f92a0
v3dv: Use the common physical device enumeration
...
Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com >
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17750 >
2022-08-30 19:34:47 +00:00
Konstantin Seurer
08ed174e74
panvk: Use the common physical device enumeration
...
Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17750 >
2022-08-30 19:34:47 +00:00
Konstantin Seurer
ff54fcd1a9
lvp: Use the common physical device enumeration
...
Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17750 >
2022-08-30 19:34:47 +00:00
Konstantin Seurer
6c452aa1ad
turnip: Use the common physical device enumeration
...
Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com >
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17750 >
2022-08-30 19:34:47 +00:00
Konstantin Seurer
e90fb9cb23
anv: Use the common physical device enumeration
...
Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17750 >
2022-08-30 19:34:47 +00:00
Konstantin Seurer
52555c7d5d
radv: Use the common physical device enumeration
...
Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17750 >
2022-08-30 19:34:47 +00:00
Konstantin Seurer
7b4b9ee7ee
vulkan: Add common physical device management
...
Add common entrypoints for enumerating physical devices, based on the RADV implementation.
Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17750 >
2022-08-30 19:34:47 +00:00
Rhys Perry
e743e739a9
radv: enable 64-bit vertex formats
...
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6956
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17894 >
2022-08-30 19:02:11 +00:00
Rhys Perry
96df4499ac
radv,aco: implement 64-bit vertex inputs
...
Note that, from 22.4.1. Vertex Input Extraction of Vulkan spec:
The input variable in the shader must be declared as a 64-bit data type if
and only if format is a 64-bit data type.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17894 >
2022-08-30 19:02:11 +00:00
Rhys Perry
813468c43c
radv: enable R8G8B8, B8G8R8 and R16G16B16 vertex formats
...
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Gitlab: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6956
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17894 >
2022-08-30 19:02:11 +00:00
Rhys Perry
97c1731f14
radv: remove radv_translate_vertex_format
...
This is not used anymore.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17894 >
2022-08-30 19:02:11 +00:00
Rhys Perry
831257bdce
radv,aco: use pipe_format for dynamic vertex input state
...
Also prepare for 64-bit and R8G8B8/R16G16B16 with the addition of
radv_vs_input_state::nontrivial_formats.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5021
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17894 >
2022-08-30 19:02:11 +00:00
Rhys Perry
c06a5a5ebd
radv,aco: use pipe_format for static vertex input state
...
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17894 >
2022-08-30 19:02:11 +00:00
Rhys Perry
d4ec156d82
radv: add radv_is_vertex_buffer_format_supported
...
We will want to support formats which cannot used for texel buffers.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17894 >
2022-08-30 19:02:11 +00:00
Rhys Perry
6a2ada93b4
ac: add ac_vtx_format_info
...
This will be used by RADV and ACO.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17894 >
2022-08-30 19:02:11 +00:00
Rhys Perry
dfbb4b384a
util/format,vulkan/format: update p_format for Vulkan vertex buffers
...
We need to move some earlier (so they are <= 255 like the comment says)
and add a few 64-bit ones.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17894 >
2022-08-30 19:02:11 +00:00
Rhys Perry
d09b658dbd
nir: use a GC context for instructions
...
Gives an roughly -15% change in compile-time for RADV/ACO.
Memory usage increase seems to be 5-6%.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Reviewed-by: Emma Anholt <emma@anholt.net >
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5034
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12910 >
2022-08-30 18:21:44 +00:00
Rhys Perry
69ba1c4d59
nir: adjust nir_src_copy signature to take a nir_instr *
...
This is almost always a nir_instr and updating the src of a nir_if will
have to work slightly differently in the future.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Acked-by: Alyssa Rosenzweig <alyssa@collabora.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Reviewed-by: Emma Anholt <emma@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12910 >
2022-08-30 18:21:44 +00:00
Rhys Perry
aa2d6e020b
Revert "nir: Drop the unused instr arg for src/dest copy functions."
...
This reverts commit c3a01841184ee8303c0c5ebe58491301622c5ad6.
Acked-by: Alyssa Rosenzweig <alyssa@collabora.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Reviewed-by: Emma Anholt <emma@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12910 >
2022-08-30 18:21:44 +00:00
Rhys Perry
1df320dae7
nir/serialize: remove unused parameter from read_src()
...
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Reviewed-by: Emma Anholt <emma@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12910 >
2022-08-30 18:21:44 +00:00
Rhys Perry
69a9b343e8
util: add freelist allocator with mark/sweep
...
Based on the allocator https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/524 ,
but modified a bit (in particular, it's now separate from ralloc).
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Reviewed-by: Emma Anholt <emma@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12910 >
2022-08-30 18:21:44 +00:00
Rhys Perry
9bd7b0b305
util/ralloc: add HEADER_ALIGN macro
...
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Reviewed-by: Emma Anholt <emma@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12910 >
2022-08-30 18:21:44 +00:00
Connor Abbott
9d9b891f94
nir: Free instructions more often
...
Soon we'll be allocating instructions out of a per-shader pool, which
means that if we don't free too many instructions during the main
optimization loop, the final nir_sweep() call will create holes which
can't be filled. By freeing instructions more aggressively, we can
allocate more instructions from the freelist which will reduce the final
memory usage.
Modified from Connor Abbott's original patch to rebase on top of
refactored DCE and so that the use-after-free in nir_algebraic_impl() is
fixed.
Co-authored-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com >
Reviewed-by: Emma Anholt <emma@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12910 >
2022-08-30 18:21:44 +00:00