Emma Anholt [Tue, 15 Jun 2021 20:58:50 +0000 (13:58 -0700)]
freedreno: Flush batches upon destroying the ctx.
The invalidate would take it out of the bc tracking, so you could go
allocate a new batch->idx matching this one, while this one is still in
the bc using that idx.
You can't generate any new rendering with the ctx's old batches at this
point, anyway, so just flush for simplicity.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11439>
Emma Anholt [Tue, 15 Jun 2021 19:53:34 +0000 (12:53 -0700)]
freedreno: Remove broken back_blit optimization.
It wasn't checking that the transfer map would definitely overwrite all of
the data being initialized by the back blit, and if we knew that it
would then the caller would have provided PIPE_MAP_DISCARD_WHOLE_RESOURCE.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11439>
Emma Anholt [Tue, 15 Jun 2021 17:43:11 +0000 (10:43 -0700)]
freedreno: Move the !MAP_WRITE write batch refcounting to the branch.
For MAP_WRITE, we flush all the batches referencing the BO, so the write
batch will get flushed anyway. No need to take an extra ref.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11439>
Emma Anholt [Tue, 15 Jun 2021 17:38:49 +0000 (10:38 -0700)]
freedreno: Fix batch reference handling in flush_resource().
We take references under the lock, but then accessed the lock-requiring
batch_cache structure without holding the lock. The batches wouldn't get
freed and removed from their slots until the last ref goes away so it was
safe (other than the assert at the end), but writing the simple code is
shorter and requires fewer assumptions.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11439>
Iago Toral Quiroga [Thu, 17 Jun 2021 10:12:46 +0000 (12:12 +0200)]
v3dv: implement VK_EXT_index_type_uint8
Relevant CTS tests:
dEQP-VK.pipeline.input_assembly.*.index_type_uint8.*
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11444>
Charlie [Fri, 11 Jun 2021 19:02:10 +0000 (20:02 +0100)]
v3dv: enable ASTC formats
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11336>
Charlie [Fri, 11 Jun 2021 19:00:51 +0000 (20:00 +0100)]
v3dv: add ASTC formats to get_compatible_tlb_format
CTS doesn't seem to hit this, but they're all 128bit formats so this
should be right
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11336>
Charlie [Fri, 11 Jun 2021 18:58:28 +0000 (19:58 +0100)]
v3dv: divide by block size in copy_image_blit
This handles compressed formats with non-4x4 blocks, like ASTC.
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11336>
Charlie [Fri, 11 Jun 2021 18:54:50 +0000 (19:54 +0100)]
v3dv: add the unswizzled RGBA4444 format
If we're supporting the R/B swapped one we might as well support the one that
isn't.
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11336>
Gert Wollny [Sun, 13 Jun 2021 18:20:08 +0000 (20:20 +0200)]
r600/sfn: Clean up some ALU lowering and move code
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11348>
Gert Wollny [Sun, 13 Jun 2021 12:36:13 +0000 (14:36 +0200)]
r600/sfn: Don't read return values of atomic ops that are not used
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11348>
Gert Wollny [Sun, 13 Jun 2021 12:35:02 +0000 (14:35 +0200)]
r600/sfn: Drop method for emit_atomic_add, it is handled in generic code
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11348>
Gert Wollny [Sun, 13 Jun 2021 12:15:31 +0000 (14:15 +0200)]
r600/sfn: don't read back unused image atomic result values
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11348>
Gert Wollny [Sun, 13 Jun 2021 12:10:19 +0000 (14:10 +0200)]
r600/sfn: don't designates initializers, since they are c++20
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11348>
Kai-Heng Feng [Fri, 4 Jun 2021 04:13:04 +0000 (12:13 +0800)]
iris: Avoid abort() if kernel can't allocate memory
When the system doesn't have enough memory, GNOME Shell may be crashed
by iris:
gnome-shell[1161]: iris: Failed to submit batchbuffer: Cannot allocate memory
gnome-shell[1161]: GNOME Shell crashed with signal 6
So don't abort() when kernel can't allocate memory to avoid crashing the
entire desktop.
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11178>
Iago Toral Quiroga [Thu, 17 Jun 2021 07:18:23 +0000 (09:18 +0200)]
v3dv: expose VK_KHR_shader_non_semantic_info
This is entirely implemented in the SPIR-V frontend.
Relevant CTS tests:
dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.*
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11440>
Pierre-Eric Pelloux-Prayer [Wed, 9 Jun 2021 11:52:36 +0000 (13:52 +0200)]
disk_cache: use UTIL_QUEUE_INIT_SCALE_THREADS
Instead of spawning 4 threads when the cache is created,
spawn 1 and let u_queue grow the number of threads if
needed.
I wrote this patch because when running piglit's quick_shader
profile I had lots of samples in disk cache threads - mostly
in native_queued_spin_lock_slowpath kernel function.
Since these tests shouldn't really stress the cache, I assumed
it was caused only by thread creations.
After writing the patch and redoing the measurement, I got an
improvement but I still more hits in the same function for
shader_runner:$disk0 thread so something was wrong.
After digging more, I found out that my shader cache index was
corrupted: the on-disk size was 29MB but the index reported it
was way more than 1GB. So each disk cache thread was spending
a lot of time trying to evict files. Given that my cache had
a really low count of files, the LRU method based on randomly
generating subfolder names failed, so evicting was very slow.
Now that my cache index is fixed, the disk cache threads are
mostly idle but I still think it makes sense to grow the
number of threads instead of spawning 4 at the program start.
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11296>
Pierre-Eric Pelloux-Prayer [Wed, 9 Jun 2021 11:49:23 +0000 (13:49 +0200)]
util/u_queue: add UTIL_QUEUE_INIT_SCALE_THREADS flag
This flag allow to create a single thread initially, but set
max_thread to the request thread count.
If the queue is full and num_threads is lower than max_threads,
we spawn a new thread to help process the queue faster.
This avoid creating N threads at queue creation time.
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11296>
Pierre-Eric Pelloux-Prayer [Wed, 9 Jun 2021 11:48:25 +0000 (13:48 +0200)]
util/u_queue: move function definition up
Will be used by the next commit.
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11296>
Pierre-Eric Pelloux-Prayer [Wed, 9 Jun 2021 08:32:41 +0000 (10:32 +0200)]
radeonsi: delay sample_pos_buffer creation until first use
And use pipe_buffer_create_with_data instead of doing it
manually.
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11296>
Pierre-Eric Pelloux-Prayer [Wed, 9 Jun 2021 08:26:14 +0000 (10:26 +0200)]
vbo: delay vbo_exec_vtx_map call
Instead of doing vbo_exec_vtx_map during initialization,
defer it until the first actual user.
v2: move init to vbo_exec_wrap_upgrade_vertex (Emma Anholt)
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11296>
Vinson Lee [Sun, 13 Jun 2021 23:57:32 +0000 (16:57 -0700)]
nvc0/ir: Initialize CodeEmitterNVC0 member progType in constructor.
Fix defect reported by Coverity Scan.
Uninitialized scalar field (UNINIT_CTOR)
uninit_member: Non-static class member progType is not initialized
in this constructor nor in any functions that it calls.
Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11350>
Marek Olšák [Fri, 21 May 2021 21:52:27 +0000 (17:52 -0400)]
mesa: execute glFlush asynchronously if no image has been imported/exported
This improves viewperf performance and it shouldn't break synchronization
with external clients when it's indirectly implied by glFlush.
This should not break the cases described in:
https://gitlab.freedesktop.org/mesa/mesa/-/issues/4903
Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11341>
Marek Olšák [Mon, 14 Jun 2021 20:56:57 +0000 (16:56 -0400)]
mesa: move _mesa_notifySwapBuffers into the x11 swrast driver
It has no other use and no relevance to DRI drivers despite the name.
Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11341>
Marek Olšák [Sat, 12 Jun 2021 16:20:06 +0000 (12:20 -0400)]
mesa: add gallium flush_flags param into ctx->Driver.Flush
Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11341>
Marek Olšák [Sat, 12 Jun 2021 16:28:41 +0000 (12:28 -0400)]
st/mesa: move the st_flush_bitmap_cache call into st_flush
Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11341>
Marek Olšák [Sat, 12 Jun 2021 16:27:21 +0000 (12:27 -0400)]
st/mesa: fix an incorrect comment in st_context_flush
Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11341>
Marek Olšák [Sat, 12 Jun 2021 16:31:28 +0000 (12:31 -0400)]
glthread: change when glFlush flushes asynchronously
This fixes the flushing with external textures.
We don't know if we need to flush synchronously with multiple contexts,
so I removed that.
Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11341>
Kenneth Graunke [Wed, 16 Jun 2021 22:58:28 +0000 (15:58 -0700)]
anv: Fix dynamic primitive topology for tess on Gfx7.x too
Commit
24342e499bc58348b257716f629dccca3c1b0833 changed how primitive
topology is handled on Gfx8+ but missed updating the Gfx7.x code.
As a result, tests which previously used topologies like PATCHLIST_3
instead started using bogus ones like LINESTRIP_ADJ. This caused a
GPU hangs in a bunch of Vulkan conformance tests involving tessellation.
This fixes those hangs.
Fixes:
24342e499bc ("anv: fix dynamic primitive topology for tess")
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11434>
Zhaofeng Li [Sun, 13 Jun 2021 03:37:16 +0000 (20:37 -0700)]
Add default driver selections for RISC-V
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11346>
Mike Blumenkrantz [Wed, 7 Apr 2021 14:55:49 +0000 (10:55 -0400)]
zink: always defer image descriptor barriers
this is simpler and guaranteed to be accurate
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11393>
Mike Blumenkrantz [Wed, 7 Apr 2021 14:49:39 +0000 (10:49 -0400)]
zink: use fake buffer barriers for descriptors
GL requires explicit glMemoryBarrier calls for shader synchronization
and only calls that map/copy buffers get implicit sync, so we don't actually
need barriers for any of these cases, only the state needs to be updated
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11393>
Mike Blumenkrantz [Thu, 6 May 2021 16:55:07 +0000 (12:55 -0400)]
zink: check actual mem props to determine if resource object is coherent
this was correct for what it has been used for until now, but it will no
longer be correct going forward
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11397>
Mike Blumenkrantz [Thu, 6 May 2021 14:59:50 +0000 (10:59 -0400)]
zink: key alloc cache on heap index, not heap flags
this is a bit more sane
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11397>
Mike Blumenkrantz [Thu, 6 May 2021 13:52:08 +0000 (09:52 -0400)]
zink: avoid caching visible vram allocations
the visible vram heap is potentially going to be limited in size, so avoid
caching these allocations since that locks them to a given allocation size
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11397>
Mike Blumenkrantz [Thu, 6 May 2021 13:51:02 +0000 (09:51 -0400)]
zink: change a bunch of sparse buffer resource checks to host-visible checks
(sparse buffer) is a subset of !host-visible, and !host-visible is actually the
more correct check to be using
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11397>
Mike Blumenkrantz [Thu, 6 May 2021 13:48:55 +0000 (09:48 -0400)]
zink: collapse host_visible and non-coherent alignment alloc cases
* buffers can use normal mem prop checking to determine host_visible setting
* sparse buffers are never coherent, so this case can be dropped from the conditional
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11397>
Martin Krastev [Tue, 15 Jun 2021 19:18:31 +0000 (12:18 -0700)]
compiler/glsl: Use mutex lock while freeing up mem_ctx
builtin_builder::~builtin_builder() and builtin_builder::release()
are running into race condition. This leads lightsmark to crash at
the end because both calls ralloc_free which mutates the arguments state
This patch fixes lightsmark2008 crash
Fixes:
e4da8b9c331cc3a ("mesa/compiler: rework tear down of builtin/types")
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
Reviewed-by: Neha Bhende <bhenden@vmware.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Tested-by: Neha Bhende <bhenden@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11385>
Mike Blumenkrantz [Thu, 15 Apr 2021 12:59:16 +0000 (08:59 -0400)]
zink: mark some functions inline
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11429>
Connor Abbott [Wed, 16 Jun 2021 13:55:30 +0000 (15:55 +0200)]
ir3/ra: Fix array parallelcopy confusion
With array registers, there are two num's we care about:
1. The base num that the whole array starts at (->array.base)
2. The num that the instruction uses, plus possibly an indirect offset
(->num or ->array.offset)
For parallel copies we always copy the whole array, so (2) is irrelevant
here. For phis and parallel copies inserted for phis, we used
assign_reg() which assigned ->array.base, but we forgot about this when
constructing our own parallel copies for live range splitting, just
setting ->num instead. The parallel copy lowering was also inconsistent
here, using ra_reg_get_num() (which looks at ->array.base for arrays)
for sources but looking at ->num directly for destinations. This makes
everything use ->array.base consistently.
While we're here, make sure to remove IR3_REG_SSA from liveout copies to
make sure printing works correctly.
Fixes: 0ffcb19 ("ir3: Rewrite register allocation")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11422>
Connor Abbott [Wed, 16 Jun 2021 13:50:56 +0000 (15:50 +0200)]
ir3: Improve printing of array parallelcopies/phis
Normally something with IR3_REG_ARRAY doesn't have a register assigned,
but we keep IR3_REG_ARRAY for parallel copies after RA because we need
to know the appropriate size. We want to see the register assigned for
these when printing the RA result before parallel copies are lowered.
The register is in ->array.base in this case, so initialize it to
INVALID_REG and print ->array.base if it's been assigned to something,
similar to ->num in the normal case.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11422>
Marek Olšák [Tue, 25 May 2021 20:27:30 +0000 (16:27 -0400)]
shader_enums: change VERT_BIT back to the 32-bit shift
This reverts
0e2566a8. The warning is fixed differently.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10993>
Marek Olšák [Tue, 25 May 2021 20:28:47 +0000 (16:28 -0400)]
gallium/pb: change alignment to 32 bits
This partially reverts
4a3f0444. The warning is fixed differently.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10993>
Marek Olšák [Wed, 16 Jun 2021 17:16:23 +0000 (13:16 -0400)]
radeonsi: remove -Wstrict-overflow=0 since it doesn't seem to be needed
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11384>
Marek Olšák [Mon, 14 Jun 2021 01:13:39 +0000 (21:13 -0400)]
radeonsi: remove the chip_class dimension from the draw_vbo array
We don't use/initialize draw_vbo callbacks for other generations anymore.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11384>
Marek Olšák [Mon, 14 Jun 2021 01:12:22 +0000 (21:12 -0400)]
radeonsi: compile si_state_draw.cpp for each gfx generation separately
It makes compilating faster.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11384>
Marek Olšák [Mon, 14 Jun 2021 01:04:42 +0000 (21:04 -0400)]
radeonsi: move a few functions from si_state_draw.cpp into si_gfx_cs.c
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11384>
Yiwei Zhang [Wed, 9 Jun 2021 23:05:50 +0000 (23:05 +0000)]
venus: remove workarounds for multi-planar format interop
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11282>
Yiwei Zhang [Tue, 15 Jun 2021 05:39:39 +0000 (05:39 +0000)]
anv: fix build errors after commit 8b7ff78
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Roman Stratiienko <r.stratiienko@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11373>
Yiwei Zhang [Tue, 15 Jun 2021 05:34:15 +0000 (05:34 +0000)]
radv: fix build errors after commit
8b7ff784
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Roman Stratiienko <r.stratiienko@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11373>
Mike Blumenkrantz [Wed, 16 Jun 2021 17:54:23 +0000 (13:54 -0400)]
zink: ci updates
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11391>
Mike Blumenkrantz [Fri, 2 Apr 2021 15:59:20 +0000 (11:59 -0400)]
zink: support more RGBX formats
the base formats are supported, so these should fall into place naturally
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11391>
Mike Blumenkrantz [Tue, 13 Apr 2021 18:56:08 +0000 (14:56 -0400)]
zink: also nope out of any dst alpha blends for rgbx formats
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11391>
Mike Blumenkrantz [Wed, 7 Apr 2021 15:00:25 +0000 (11:00 -0400)]
zink: smash dstAlphaBlendFactor to ZERO for RGBX attachments
this is a no-op
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11391>
Mike Blumenkrantz [Fri, 2 Apr 2021 17:34:26 +0000 (13:34 -0400)]
zink: add a more direct check for rgbx formats in create_sampler_view hook
really the point of this is to clamp void channels for any permutation of rgbx
where all channels are the same (e.g., both rgbx8 and rgbx16), so the previous
helper isn't inclusive enough
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11391>
Mike Blumenkrantz [Wed, 9 Jun 2021 22:14:29 +0000 (18:14 -0400)]
util/queue: add a global data pointer for the queue object
this better enables object-specific (e.g., context) queues where the owner
of the queue will always be needed and various pointers will be passed in
for tasks
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11312>
Marek Olšák [Sun, 13 Jun 2021 18:11:27 +0000 (14:11 -0400)]
radeonsi: set desc[3] of all buffer descriptors at context creation
instead of at bind time. When we unbind, we shouldn't memset the last
element.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11340>
Marek Olšák [Sun, 13 Jun 2021 17:58:16 +0000 (13:58 -0400)]
radeonsi: remove no-op unref in si_set_constant_buffer
buffer is already NULL here
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11340>
Marek Olšák [Sun, 6 Jun 2021 12:34:56 +0000 (08:34 -0400)]
radeonsi: restructure si_set_sampler_views for faster unbinding trailing slots
si_set_sampler_view updates only one slot. This rewrites it to update
multiple slots.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11340>
Marek Olšák [Sun, 6 Jun 2021 11:35:00 +0000 (07:35 -0400)]
radeonsi: don't clear register fields in si_set_mutable_tex_desc_fields
They are always initialized to 0.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11340>
Marek Olšák [Sun, 6 Jun 2021 11:17:53 +0000 (07:17 -0400)]
radeonsi: use the restrict keyword to set sampler view descriptors faster
All places must set restrict for the same pointer.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11340>
Marek Olšák [Sun, 6 Jun 2021 10:45:48 +0000 (06:45 -0400)]
radeonsi: check is_buffer once instead of 4 times in si_set_sampler_view_desc
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11340>
Erik Faye-Lund [Wed, 16 Jun 2021 09:29:45 +0000 (02:29 -0700)]
zink: do not check buffer-format for usage-bits
Buffers are created without a format in Vulkan, and we always pass in
R8_UNORM for them in Gallium. It's the view-formats we should have
checked, if anything.
But that's orthogonal to this. We shoudn't keep checking R8_UNORM
capabilities for buffers, all it's going to do is trigger asserts.
Fixes:
00dc0036b ("zink: flatten out buffer creation usage flags codepath")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11416>
Erik Faye-Lund [Wed, 16 Jun 2021 08:51:07 +0000 (01:51 -0700)]
zink: drop repeated usage-bit
We already set this bit unconditionally right before, no point in
repeating it.
Fixes:
00dc0036b ("zink: flatten out buffer creation usage flags codepath")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11416>
Erik Faye-Lund [Wed, 16 Jun 2021 13:13:28 +0000 (15:13 +0200)]
zink: remove unused function
There's no call-sites to this function, so let's drop it.
Fixes:
e4e20556d62 ("zink: switch to memory barriers instead of actual buffer barriers")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11421>
Erik Faye-Lund [Wed, 16 Jun 2021 13:09:09 +0000 (15:09 +0200)]
zink: fixup signedness of subtraction
I'm not even going to pretend that I grok this code, but since we take
the abs value, it's pretty obvious that we meant to use a signed value
here. So let's cast the two operands to int before we subtract.
This was noticed by the following clang warning:
---8<---
../src/gallium/drivers/zink/zink_context.c:3284:14: warning: taking the
absolute value of unsigned type 'unsigned int' has no effect
[-Wabsolute-value]
last = abs(reads - writes) > UINT32_MAX / 2 ? MIN2(reads, writes) : MAX2(reads, writes);
^
---8<---
Fixes:
0c1fe392e8d ("zink: implement a tc is_resource_busy hook")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11421>
Mike Blumenkrantz [Thu, 6 May 2021 20:41:36 +0000 (16:41 -0400)]
zink: move queue init to screen creation
this is a race condition
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11398>
Mike Blumenkrantz [Fri, 7 May 2021 23:08:30 +0000 (19:08 -0400)]
zink: set subdata hook as PIPE_MAP_ONCE
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11401>
Mike Blumenkrantz [Thu, 22 Apr 2021 18:52:58 +0000 (14:52 -0400)]
zink: update pipe_screen::num_contexts
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11394>
Mike Blumenkrantz [Fri, 11 Jun 2021 21:47:53 +0000 (17:47 -0400)]
anv: fix dynamic primitive topology for tess
this needs to use the pre-converted topology using tess state patch control points
Fixes:
f6fa4a80000 ("anv: add support for dynamic primitive topology change")
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11332>
Erik Faye-Lund [Wed, 16 Jun 2021 08:49:25 +0000 (01:49 -0700)]
zink: correct type of flags to flush
This type is unsigned in the prototype, so this produces a warning on
MSVC.
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11380>
Erik Faye-Lund [Wed, 16 Jun 2021 08:15:49 +0000 (01:15 -0700)]
zink: use alloca instead of hard-to-size vlas
These variable-length arrays are hard to size statically, and VLAs
aren't supported by MSVC. So let's use alloca instead.
Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11380>
Erik Faye-Lund [Tue, 15 Jun 2021 15:27:43 +0000 (08:27 -0700)]
zink: use max-descriptor define
This avoids compile errors on MSVC due to VLAs.
Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11380>
Erik Faye-Lund [Tue, 15 Jun 2021 15:25:34 +0000 (08:25 -0700)]
zink: introduce a define for max descriptors per type
We know what this max is in the compiler, let's move that out into
zink_descriptors.h, so we can reuse the constant.
Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11380>
Erik Faye-Lund [Tue, 15 Jun 2021 15:31:21 +0000 (08:31 -0700)]
zink: fix more initializer styles
Empty initializer lists are a GCC extension, let's use the syntax that
compilers like MSVC also supports.
Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11380>
Erik Faye-Lund [Tue, 15 Jun 2021 15:15:42 +0000 (08:15 -0700)]
zink: drop some more vla usage
MSVC doesn't like them, so let's get rid of more of them.
Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11380>
Erik Faye-Lund [Tue, 15 Jun 2021 15:12:38 +0000 (08:12 -0700)]
zink: add missing compiler-dependency
Without this, we depend on something else previously in the build to
have built these.
Fixes:
ed2fb809 ("zink: introduce vk_dispatch_table")
Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11380>
Erik Faye-Lund [Wed, 16 Jun 2021 09:36:05 +0000 (02:36 -0700)]
zink: drop paranoid code
If we ever get here, res->dt is non-NULL. No need to assert, and no need
to check twice.
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11414>
Erik Faye-Lund [Wed, 16 Jun 2021 09:34:18 +0000 (02:34 -0700)]
zink: do not unmap dt-buffers twice
Seems I missed that we already did an unconditional unmap here, and
forgot to remove it. Whoops.
Fixes:
5159f406d ("zink: use gallium api to copy to display-target")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11414>
Mike Blumenkrantz [Thu, 6 May 2021 20:09:10 +0000 (16:09 -0400)]
zink: split stencil ref changes to separate dirty flag
the values here are for the cmdbuf, not the pipeline, so they should
always be updated regardless of what the current dsa state uses
Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11396>
Mike Blumenkrantz [Thu, 6 May 2021 19:59:14 +0000 (15:59 -0400)]
zink: add update flag for dsa state change
reduce overhead by avoiding unnecessary updates
Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11396>
Mike Blumenkrantz [Thu, 6 May 2021 19:58:37 +0000 (15:58 -0400)]
zink: add update flag for rasterizer state change
this can be used to avoid updating related dynamic states too frequently
Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11396>
Mike Blumenkrantz [Mon, 5 Apr 2021 16:00:04 +0000 (12:00 -0400)]
zink: handle nir_op_pack_64_2x32
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11392>
Charlie [Mon, 14 Jun 2021 21:54:26 +0000 (22:54 +0100)]
v3dv: remove sRGB blending workaround
This reverts commits
4c15131b1d36874b643aed8407933ccd8675841d and
1cf36797bf9d63b33c405d85ce720dcd5e75a47c.
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11377>
Charlie [Mon, 14 Jun 2021 19:19:40 +0000 (20:19 +0100)]
v3dv: clamp srgb render targets
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11377>
Iago Toral Quiroga [Wed, 16 Jun 2021 09:34:18 +0000 (11:34 +0200)]
Revert "v3dv: allow creating uncompressed views from compressed images and vice versa"
This reverts commit
b32a48c7e26bffdc696d3cceef0305e2c4731c96.
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11415>
Iago Toral Quiroga [Wed, 16 Jun 2021 09:23:30 +0000 (11:23 +0200)]
v3dv: don't support VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
The hardware doesn't support this naturally and we need to do a lot
of nasty stuff in the driver to almost make it work.
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11415>
Karol Herbst [Tue, 16 Jun 2020 18:17:55 +0000 (20:17 +0200)]
nv50/ir: fix surface lowering when values get shared accross operations
With nir I encountered the case where the same value can be written to from
multiple surface operations. This caused some weird messups with the unions
as the def.rewrite operations caused unrelated instructions to get new their
value replaced as well.
In order to replace def.rewrite, we have to create a new temp value, write
to that one instead and move to the original value.
Fixes:
869e32593a9 ("gm107/ir: fix loading z offset for layered 3d image bindings")
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11053>
Ilia Mirkin [Tue, 15 Jun 2021 04:49:02 +0000 (00:49 -0400)]
st/mesa: always report the max samples as supported
This is required by GL. Doing this even when the backend driver does not
support it leads to creating attachments which are not renderable. This
is not ideal, but does pass tests. This covers scenarios such as missing
MSAA for 128-bit formats on Sandybridge, and missing 8x MSAA on 128-bit
formats on NVIDIA Tesla generation boards.
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11372>
Mike Blumenkrantz [Tue, 11 May 2021 17:50:14 +0000 (13:50 -0400)]
zink: stop sanitizing primitive_restart flag in draw info
this is a 1bit struct member, sanitizing is pointless
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11408>
Mike Blumenkrantz [Tue, 11 May 2021 17:49:42 +0000 (13:49 -0400)]
zink: move batch decl to top of draw_vbo
this may still change during descriptor updating, but having the pointer
earlier is helpful
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11408>
Mike Blumenkrantz [Tue, 11 May 2021 17:49:10 +0000 (13:49 -0400)]
zink: remove unnecessary draw checks
I don't know how/why these got here but they aren't needed
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11408>
Mike Blumenkrantz [Mon, 10 May 2021 10:50:49 +0000 (06:50 -0400)]
zink: use u_live_shader_cache
let the duplicated shader madness end
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11403>
Mike Blumenkrantz [Mon, 10 May 2021 10:30:19 +0000 (06:30 -0400)]
zink: unify gfx shader create callbacks
these are identical
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11403>
Mike Blumenkrantz [Sat, 23 Jan 2021 16:03:52 +0000 (11:03 -0500)]
zink: mark bind_stage() as inline
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11403>
Mike Blumenkrantz [Tue, 11 May 2021 16:58:36 +0000 (12:58 -0400)]
zink: simplify zink_program_has_descriptors()
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11407>
Mike Blumenkrantz [Tue, 11 May 2021 16:21:10 +0000 (12:21 -0400)]
zink: remove return types from program update functions during draw
also remove some null checks; these add overhead and the app is going to
explode anyway if they fail
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11406>
Mike Blumenkrantz [Tue, 11 May 2021 16:18:19 +0000 (12:18 -0400)]
zink: slightly refactor program updating during draw
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11406>
Mike Blumenkrantz [Sun, 9 May 2021 18:14:53 +0000 (14:14 -0400)]
zink: destroy lazy descriptor pools during batch reset when unused
this should keep resource usage a bit lower
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11404>
Mike Blumenkrantz [Sun, 9 May 2021 17:59:06 +0000 (13:59 -0400)]
zink: track active use counts for descriptor layouts
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11404>