platform/upstream/mesa.git
17 months agovenus: log upon device creation
Yiwei Zhang [Wed, 1 Feb 2023 01:12:23 +0000 (17:12 -0800)]
venus: log upon device creation

Log the deviceName and driverInfo gated behind VN_DEBUG=log_ctx_info

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21030>

17 months agonir: mark progress when removing trailing unused load_const channels
Pavel Ondračka [Tue, 31 Jan 2023 12:57:22 +0000 (13:57 +0100)]
nir: mark progress when removing trailing unused load_const channels

When the unused channels were at the end and so no reswizzling was
needed, we wouldn't correctly mark the progress.

Fixes: 3305c960
Signed-off-by: Pavel Ondračka <pavel.ondracka@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21014>

17 months agonir: mark progress when removing trailing unused alu channels
Pavel Ondračka [Tue, 31 Jan 2023 12:16:54 +0000 (13:16 +0100)]
nir: mark progress when removing trailing unused alu channels

When the unused channels were at the end and so no reswizzling was
needed, we wouldn't correctly mark the progress.

Fixes: cb7f2012
Signed-off-by: Pavel Ondračka <pavel.ondracka@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21014>

17 months agonir: nir opt_shrink_vectors whitespace fix
Pavel Ondračka [Tue, 31 Jan 2023 12:29:48 +0000 (13:29 +0100)]
nir: nir opt_shrink_vectors whitespace fix

Signed-off-by: Pavel Ondračka <pavel.ondracka@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21014>

17 months agointel/compiler: use lower_image_samples_to_one
Amber [Tue, 24 Jan 2023 10:56:49 +0000 (11:56 +0100)]
intel/compiler: use lower_image_samples_to_one

Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Reviewer-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Signed-off-by: Amber Amber <amber@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20813>

17 months agoir3: use lower_image_samples_to_one
Amber [Tue, 24 Jan 2023 10:38:17 +0000 (11:38 +0100)]
ir3: use lower_image_samples_to_one

This is necessary to properly support ARB_shader_texture_image_samples
fixes crash in KHR-GL45.shader_texture_image_samples_tests.image_functional_test

Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Reviewed-by: Rob Clark <robclark@freedesktop.org>
Reviewer-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Signed-off-by: Amber Amber <amber@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20813>

17 months agonir: support lowering nir_intrinsic_image_samples to a constant load
Amber [Tue, 24 Jan 2023 10:35:43 +0000 (11:35 +0100)]
nir: support lowering nir_intrinsic_image_samples to a constant load

This can be used by multiple drivers that do not support ms images

Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Reviewed-by: Rob Clark <robclark@freedesktop.org>
Reviewer-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Signed-off-by: Amber Amber <amber@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20813>

17 months agoradv: Fix creating accel structs with unbound buffers
Konstantin Seurer [Tue, 31 Jan 2023 16:03:15 +0000 (17:03 +0100)]
radv: Fix creating accel structs with unbound buffers

If the buffer hasn't been bound to memory yet, we will dereference a
NULL pointer in radv_CreateAccelerationStructureKHR.

cc: mesa-stable

Closes: #8199
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21019>

17 months agod3d12: Honor suggested driver profile/level for H264/HEVC encode
Sil Vilerino [Tue, 31 Jan 2023 19:18:08 +0000 (14:18 -0500)]
d3d12: Honor suggested driver profile/level for H264/HEVC encode

Fixes some H264 <-> HEVC transcode cases where the wrong level/profile was assigned to the output bitstream

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21043>

17 months agoaco: limit VALUPartialForwardingHazard search
Rhys Perry [Thu, 26 Jan 2023 16:14:26 +0000 (16:14 +0000)]
aco: limit VALUPartialForwardingHazard search

Complicated CFG and lots of SALU can cause this to take an extremely long
time to finish.

Fixes
dEQP-VK.graphicsfuzz.cov-value-tracking-selection-dag-negation-clamp-loop
and Monster Hunter Rise demo compile times.

fossil-db (gfx1100):
Totals from 57 (0.04% of 134574) affected shaders:
Instrs: 170919 -> 171165 (+0.14%)
CodeSize: 860144 -> 861128 (+0.11%)
Latency: 961466 -> 961505 (+0.00%)
InvThroughput: 127598 -> 127608 (+0.01%)

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8153
Fixes: 5806f0246fd ("aco/gfx11: workaround VALUPartialForwardingHazard")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20941>

17 months agointel/ds: Fix crash when allocating more intel_ds_queues than u_vector was initialized
José Roberto de Souza [Mon, 23 Jan 2023 20:09:56 +0000 (12:09 -0800)]
intel/ds: Fix crash when allocating more intel_ds_queues than u_vector was initialized

u_vector_add() don't keep the returned pointers valid.
After the initial size allocated in u_vector_init() is reached it will
allocate a bigger buffer and copy data from older buffer to the new
one and free the old buffer, making all the previous pointers returned
by u_vector_add() invalid and crashing the application when trying to
access it.

This is reproduced when running
dEQP-VK.synchronization.signal_order.timeline_semaphore.* in DG2 SKUs
that has 4 CCS engines, INTEL_COMPUTE_CLASS=1 is set and of course
perfetto build is enabled.

To fix this issue here I'm moving the storage/allocation of
struct intel_ds_queue to struct anv_queue/iris_batch and using
struct list_head to maintain a chain of intel_ds_queue of the
intel_ds_device.
This allows us to append or remove queues dynamically in future if
necessary.

Fixes: e760c5b37be9 ("anv: add perfetto source")
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20977>

17 months agohasvk: Let spirv_to_nir() set UBO/SSBO base cast alignments
Faith Ekstrand [Tue, 31 Jan 2023 23:51:14 +0000 (17:51 -0600)]
hasvk: Let spirv_to_nir() set UBO/SSBO base cast alignments

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21027>

17 months agoanv: Let spirv_to_nir() set UBO/SSBO base cast alignments
Faith Ekstrand [Tue, 31 Jan 2023 23:51:08 +0000 (17:51 -0600)]
anv: Let spirv_to_nir() set UBO/SSBO base cast alignments

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21027>

17 months agovtn: Set alignment on initial UBO/SSBO casts
Faith Ekstrand [Tue, 31 Jan 2023 23:48:52 +0000 (17:48 -0600)]
vtn: Set alignment on initial UBO/SSBO casts

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21027>

17 months agofreedreno/a6xx: Remove excess CS flushing
Rob Clark [Sat, 28 Jan 2023 17:57:42 +0000 (09:57 -0800)]
freedreno/a6xx: Remove excess CS flushing

Also requires fixing where we emit barriers, and flushing pending
barriers at the end of the batch.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20975>

17 months agofreedreno/a6xx: Also FLUSH_CACHE on image barrier
Rob Clark [Sun, 29 Jan 2023 16:27:05 +0000 (08:27 -0800)]
freedreno/a6xx: Also FLUSH_CACHE on image barrier

For the same reason we need to on an UPDATE_BUFFER barrier.  Fixes
KHR-GLES31.core.compute_shader.pipeline-post-fs once the hard-coded
cache-flush is removed from launch_grid path.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20975>

17 months agofreedreno/a6xx: Make shader state independent of grid info
Rob Clark [Sat, 21 Jan 2023 19:44:28 +0000 (11:44 -0800)]
freedreno/a6xx: Make shader state independent of grid info

Eventually we want to move this into a state group, so we can pre-bake
the cmdstream and re-emit it via CP_SET_DRAW_STATE when it is dirty.
But in order to do that it needs to not depend on grid info.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20975>

17 months agofreedreno: Don't open-code setting dirty CS state
Rob Clark [Sat, 21 Jan 2023 19:27:12 +0000 (11:27 -0800)]
freedreno: Don't open-code setting dirty CS state

There is actually no issue with setting FD_DIRTY_PROG, since all state
is marked dirty when we switch from compute to 3d.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20975>

17 months agofreedreno/a6xx: Don't double-write SP_CS_OBJ_START
Rob Clark [Sat, 21 Jan 2023 19:25:43 +0000 (11:25 -0800)]
freedreno/a6xx: Don't double-write SP_CS_OBJ_START

Also SP_CS_INSTRLEN.  This is already done in fd6_emit_shader().

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20975>

17 months agofreedreno: Skip flush_resource with explicit sync
Rob Clark [Thu, 29 Dec 2022 17:04:31 +0000 (09:04 -0800)]
freedreno: Skip flush_resource with explicit sync

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20975>

17 months agofreedreno: nondraw-batch
Rob Clark [Sun, 4 Dec 2022 20:22:25 +0000 (12:22 -0800)]
freedreno: nondraw-batch

Allow multiple compute grids to be combined into a single non-draw
batch.  This will allow us to optimize state emit and remove excess
flushing between compute jobs.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20975>

17 months agofreedreno/a6xx: Add CS instrlen workaround
Rob Clark [Sat, 28 Jan 2023 17:52:02 +0000 (09:52 -0800)]
freedreno/a6xx: Add CS instrlen workaround

Based on !19023.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20975>

17 months agofreedreno/a6xx: Add missing CS_BINDLESS mapping
Rob Clark [Sat, 21 Jan 2023 17:29:17 +0000 (09:29 -0800)]
freedreno/a6xx: Add missing CS_BINDLESS mapping

Fixes: e51975142c0 ("freedreno/a6xx: Add bindless state"
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20975>

17 months agofreedreno/ir3: Scalarize load_ssbo
Rob Clark [Thu, 29 Dec 2022 16:55:25 +0000 (08:55 -0800)]
freedreno/ir3: Scalarize load_ssbo

The benefits of turning it into isam (which needs to be scalar as the
SSBO is sampled as a single component R32 texture) outweigh the benefits
of vectorizing.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20975>

17 months agofreedreno/a6xx: LRZ for MSAA
Rob Clark [Mon, 5 Dec 2022 16:53:28 +0000 (08:53 -0800)]
freedreno/a6xx: LRZ for MSAA

We don't need to fall off the LRZ path when we fall back to clearing
depth with a u_blitter draw, since u_blitter uses zsa state to achieve
the depth/stencil clear and this is entirely compabile with LRZ.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20975>

17 months agofreedreno/decode: Increase size of offsets table
Rob Clark [Sat, 14 Jan 2023 15:10:11 +0000 (07:10 -0800)]
freedreno/decode: Increase size of offsets table

The offsets table stores offsets of a buffer (such as cmdstream) that
we've already dumped.  The suballoc pool results in more suballocated
cmdstream allocated from a single backing buffer, meaning that we need
to increase the size of this table.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20975>

17 months agoaco: use s_pack_ll_b32_b16 for constant copies
Georg Lehmann [Sat, 28 Jan 2023 19:34:55 +0000 (20:34 +0100)]
aco: use s_pack_ll_b32_b16 for constant copies

Totals from 2 (0.00% of 134913) affected shaders:
CodeSize: 28636 -> 28628 (-0.03%)

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20970>

17 months agoaco: use s_bfm_64 for constant copies
Georg Lehmann [Sat, 28 Jan 2023 19:10:36 +0000 (20:10 +0100)]
aco: use s_bfm_64 for constant copies

Foz-DB Navi21:
Totals from 1025 (0.76% of 134913) affected shaders:
CodeSize: 1436752 -> 1432412 (-0.30%)

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20970>

17 months agoaco/spill: always end spill vgpr after control flow
Rhys Perry [Tue, 10 Jan 2023 17:33:52 +0000 (17:33 +0000)]
aco/spill: always end spill vgpr after control flow

To fix a hypothetical issue:

v0 = start_linear_vgpr
if (...) {

} else {
   use_linear_vgpr(v0)
}
v0 = phi

We need a p_end_linear_vgpr to ensure that the phi does not use the same
VGPR as the linear VGPR.

This is also much simpler.

fossil-db (gfx1100):
Totals from 1195 (0.89% of 134574) affected shaders:
Instrs: 4123856 -> 4123826 (-0.00%); split: -0.00%, +0.00%
CodeSize: 21461256 -> 21461100 (-0.00%); split: -0.00%, +0.00%
Latency: 62816001 -> 62812999 (-0.00%); split: -0.00%, +0.00%
InvThroughput: 9339049 -> 9338564 (-0.01%); split: -0.01%, +0.00%
Copies: 304028 -> 304005 (-0.01%); split: -0.02%, +0.01%
PreVGPRs: 115761 -> 115762 (+0.00%)

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20621>

17 months agoaco/tests: add setup_reduce_temp.divergent_if_phi
Rhys Perry [Fri, 27 Jan 2023 19:56:56 +0000 (19:56 +0000)]
aco/tests: add setup_reduce_temp.divergent_if_phi

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20621>

17 months agoaco: end reduce tmp after control flow, when used within control flow
Rhys Perry [Tue, 10 Jan 2023 15:29:15 +0000 (15:29 +0000)]
aco: end reduce tmp after control flow, when used within control flow

In the case of:

v0 = start_linear_vgpr
if (...) {

} else {
   use_linear_vgpr(v0)
}
v0 = phi

We need a p_end_linear_vgpr to ensure that the phi does not use the same
VGPR as the linear VGPR.

fossil-db (gfx1100):
Totals from 3763 (2.80% of 134574) affected shaders:
MaxWaves: 90296 -> 90164 (-0.15%)
Instrs: 6857726 -> 6856608 (-0.02%); split: -0.03%, +0.01%
CodeSize: 35382188 -> 35377688 (-0.01%); split: -0.02%, +0.01%
VGPRs: 234864 -> 235692 (+0.35%); split: -0.01%, +0.36%
Latency: 47471923 -> 47474965 (+0.01%); split: -0.03%, +0.04%
InvThroughput: 5640320 -> 5639736 (-0.01%); split: -0.04%, +0.03%
VClause: 93098 -> 93107 (+0.01%); split: -0.01%, +0.02%
SClause: 214137 -> 214130 (-0.00%); split: -0.00%, +0.00%
Copies: 369895 -> 369305 (-0.16%); split: -0.31%, +0.15%
Branches: 164996 -> 164504 (-0.30%); split: -0.30%, +0.00%
PreVGPRs: 210655 -> 211438 (+0.37%)

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20621>

17 months agoac/gpu_info: add PCIe info
Marek Olšák [Fri, 30 Dec 2022 22:02:57 +0000 (17:02 -0500)]
ac/gpu_info: add PCIe info

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20790>

17 months agoamd: update amdgpu_drm.h
Marek Olšák [Fri, 30 Dec 2022 22:00:45 +0000 (17:00 -0500)]
amd: update amdgpu_drm.h

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20790>

17 months agoradv: pass pCreateInfo to radv_graphics_pipeline_compile()
Samuel Pitoiset [Tue, 31 Jan 2023 13:11:15 +0000 (14:11 +0100)]
radv: pass pCreateInfo to radv_graphics_pipeline_compile()

This removes some duplicated code.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20990>

17 months agoradv: pass radv_compute_pipeline to radv_compute_pipeline_compile()
Samuel Pitoiset [Mon, 30 Jan 2023 15:06:58 +0000 (16:06 +0100)]
radv: pass radv_compute_pipeline to radv_compute_pipeline_compile()

Similar to graphics.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20990>

17 months agoradv: move retained shaders info to radv_graphics_pipeline
Samuel Pitoiset [Mon, 30 Jan 2023 15:02:21 +0000 (16:02 +0100)]
radv: move retained shaders info to radv_graphics_pipeline

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20990>

17 months agoradv: pass radv_graphics_pipeline to radv_graphics_pipeline_compile()
Samuel Pitoiset [Mon, 30 Jan 2023 14:59:45 +0000 (15:59 +0100)]
radv: pass radv_graphics_pipeline to radv_graphics_pipeline_compile()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20990>

17 months agoradv: add helpers for capturing shaders and statistics
Samuel Pitoiset [Mon, 30 Jan 2023 11:51:42 +0000 (12:51 +0100)]
radv: add helpers for capturing shaders and statistics

Instead of duplicating the logic everywhere.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20990>

17 months agoradv: simplify pipeline_has_ngg during graphics shaders compilation
Samuel Pitoiset [Fri, 27 Jan 2023 16:10:22 +0000 (17:10 +0100)]
radv: simplify pipeline_has_ngg during graphics shaders compilation

The is_ngg field is copied during shader info linking for GS, so
after radv_shader_fill_info() is performed, it's possible to use it.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20990>

17 months agoradv: remove useless check about CS in radv_lower_io()
Samuel Pitoiset [Fri, 27 Jan 2023 15:37:20 +0000 (16:37 +0100)]
radv: remove useless check about CS in radv_lower_io()

This function is now called only for graphics pipeline.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20990>

17 months agoanv: expose EXT_load_store_op_none
Lionel Landwerlin [Tue, 31 Jan 2023 14:47:48 +0000 (15:47 +0100)]
anv: expose EXT_load_store_op_none

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21018>

17 months agomailmap: Remap name and email for Val Packett
Val Packett [Wed, 1 Feb 2023 05:52:26 +0000 (05:52 +0000)]
mailmap: Remap name and email for Val Packett

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21032>

17 months agointel: enable existing workaround for ICL platform
Tapani Pälli [Fri, 27 Jan 2023 07:42:10 +0000 (09:42 +0200)]
intel: enable existing workaround for ICL platform

Patch changes comment to refer to the lineage 14014097488, this
workaround applies for ICL as well.

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20952>

17 months agoradv: Improve the BVH size estimation
Konstantin Seurer [Mon, 30 Jan 2023 15:12:28 +0000 (16:12 +0100)]
radv: Improve the BVH size estimation

The previous estimation was from before we had proper LBVH and PLOC.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20988>

17 months agozink: use VK_EXT_multisampled_render_to_single_sampled for EXT_multisample_render_to_...
Mike Blumenkrantz [Tue, 24 Jan 2023 17:43:21 +0000 (12:43 -0500)]
zink: use VK_EXT_multisampled_render_to_single_sampled for EXT_multisample_render_to_texture

this extension was added for the purpose of emulating the GL ext,
and using it is reasonably straightforward

the only (somewhat) invasive part is modifying the renderpass/dynamic hashes
to have samplecounts in the key, but this is also not too much work

now only fbfetch requires real renderpasses, and everything else is dynamic

fixes #7559

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20883>

17 months agozink: shrink zink_render_pass_state::msaa_expand_mask
Mike Blumenkrantz [Tue, 24 Jan 2023 17:05:55 +0000 (12:05 -0500)]
zink: shrink zink_render_pass_state::msaa_expand_mask

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20883>

17 months agozink: hook up VK_EXT_multisampled_render_to_single_sampled
Mike Blumenkrantz [Tue, 24 Jan 2023 15:24:49 +0000 (10:24 -0500)]
zink: hook up VK_EXT_multisampled_render_to_single_sampled

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20883>

17 months agomeson: turn android-libbacktrace into a feature option
Eric Engestrom [Wed, 25 Jan 2023 18:44:33 +0000 (18:44 +0000)]
meson: turn android-libbacktrace into a feature option

Signed-off-by: Eric Engestrom <eric@igalia.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20915>

17 months agofreedreno/gmem: Fix for partial z/s fast-clear
Rob Clark [Mon, 30 Jan 2023 21:31:34 +0000 (13:31 -0800)]
freedreno/gmem: Fix for partial z/s fast-clear

If we have a combined depth+stencil buffer, but fast-clear just one of
the two channels, we need to mark the other as needing restore.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20998>

17 months agonir: Add sha1 hash for nir shaders converted from spir-v
Illia Polishchuk [Tue, 31 Jan 2023 20:30:13 +0000 (22:30 +0200)]
nir: Add sha1 hash for nir shaders converted from spir-v

The sha1 hash inside nir structure
makes it easier to find bad shader in games.

For example INTEL_DEBUG=fs will show not zero
source_sha1 field for shaders with vulkan applications

Signed-off-by: Illia Polishchuk <illia.a.polishchuk@globallogic.com>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21012>

17 months agoutil/format: Fix wrong colors when importing YUYV and UYVY
Nicolas Dufresne [Fri, 20 Jan 2023 18:30:01 +0000 (13:30 -0500)]
util/format: Fix wrong colors when importing YUYV and UYVY

This changes the swizzling so that importation of YUYV dmabuf without
dedicated blitter HW can work.

v2: fix the other format too, update test results

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20815>

17 months agoutil/disk_cache: Switch to multipart mesa-db cache
Dmitry Osipenko [Mon, 24 Oct 2022 17:46:21 +0000 (20:46 +0300)]
util/disk_cache: Switch to multipart mesa-db cache

Replace single file mesa-db cache with multipart mesa-db cache.
Each part of the multipart cache essentially is a single file
mesa-db cache, aka database shard. Multipart cache brings much
more optimized cache eviction times in comparison to a single file
cache.

Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20256>

17 months agoutil/mesa-db: Introduce multipart mesa-db cache
Dmitry Osipenko [Mon, 24 Oct 2022 10:24:16 +0000 (13:24 +0300)]
util/mesa-db: Introduce multipart mesa-db cache

Whenever a single file mesa-db cache hits max size limit, a half of cache
is evicted and the cache file is defragmented. The downside of this eviction
strategy is that it causes high disk IO usage during eviction if mesa-db
cache file size is large.

In order to mitigate this downside, we will split mesa-db into multiple
part such that only one part will be evicted at a time. Each part will be
an individual single file mesa-db cache, like a DB shard. The new multipart
mesa-db cache will merge the parts into a single virtual cache.

This patch introduces two new environment variables:

1. MESA_DISK_CACHE_DATABASE_NUM_PARTS:
Controls number of mesa-db cache file parts. By default 50 parts will be
created. The old pre-multipart mesa-db cache files will be auto-removed
if they exist, i.e. Mesa will switch to the new DB version automatically.

2. MESA_DISK_CACHE_DATABASE_EVICTION_SCORE_2X_PERIOD:
Controls the eviction score doubling time period. The evicted DB part
selection is based on cache entries size weighted by 'last_access_time' of
the entries. By default the cache eviction score is doubled for each month
of cache entry age, i.e. for two equally sized entries where one entry is
older by one month than the other, the older entry will have x2 eviction
score than the other entry. Database part with a highest total eviction
score is selected for eviction.

This patch brings x40 performance improvement of cache eviction time using
multipart cache vs a single file cache due to a smaller eviction portions
and more optimized eviction algorithm.

Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20256>

17 months agoutil/cache_test: Remove dummy cache entry added by cache_exists()
Dmitry Osipenko [Mon, 24 Oct 2022 16:47:03 +0000 (19:47 +0300)]
util/cache_test: Remove dummy cache entry added by cache_exists()

The cache_exists() function adds a dummy cache entry that may affect cache
eviction testing results. Remove this entry.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20256>

17 months agoutil/mesa-db: Support removal of cache entries
Dmitry Osipenko [Mon, 24 Oct 2022 16:41:59 +0000 (19:41 +0300)]
util/mesa-db: Support removal of cache entries

Add support for removal of cache entries to mesa-db cache. This allows
to have a more predictable unit tests by removing dummy entries that
are added to cache when test-cache is created by unit-testing framework.

Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20256>

17 months agoutil/mesa-db: Don't account header size
Dmitry Osipenko [Mon, 24 Oct 2022 10:13:29 +0000 (13:13 +0300)]
util/mesa-db: Don't account header size

In order to ease writing mesa-db eviction unit tests, stop accounting
mesa-db cache file header size during checking whether cache file reached
the size limit. This change ensures that older unit tests will keep working
whenever cache header version/size will change.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20256>

17 months agoutil/cache_test: Unset env vars left after Cache.List test
Dmitry Osipenko [Wed, 25 Jan 2023 21:36:13 +0000 (00:36 +0300)]
util/cache_test: Unset env vars left after Cache.List test

The environment variables are persistent and must be explicitly unset by
each cache test, otherwise next test will fail. Add the missing unsets to
the Cache.List test.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20256>

17 months agomailmap: Lina is Chad's new name
Lina Versace [Tue, 31 Jan 2023 19:47:05 +0000 (11:47 -0800)]
mailmap: Lina is Chad's new name

If you can longer find chadversary or chadv on the interwebs, then
search for linyaa or versalinyaa.

Egg-crAcked-By: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Egg-Cracked-By: Faith Ekstrand <faith@gfxstrand.net>
Egg-Cracked-By: Lyude Paul <lyude@redhat.com>
Egg-Cracked-By: Wann
Egg-Cracked-By: Zach Lesher
Egg-Cracked-By: 初音ミク
Acked-by: Daniel Stone <daniels@collabora.com>
17 months agointel: add missing PS restriction on BDW+
Lionel Landwerlin [Thu, 26 Jan 2023 19:37:54 +0000 (21:37 +0200)]
intel: add missing PS restriction on BDW+

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: mesa-stable
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20949>

17 months agodocs: list anv in EXT_extended_dynamic_state3 support
Lionel Landwerlin [Tue, 31 Jan 2023 14:54:39 +0000 (15:54 +0100)]
docs: list anv in EXT_extended_dynamic_state3 support

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Luis Felipe Strano Moraes <luis.strano@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21017>

17 months agoutil/xmlconfig: add MESA_DRICONF_EXECUTABLE_OVERRIDE
Ryan Neph [Thu, 19 Jan 2023 18:48:59 +0000 (10:48 -0800)]
util/xmlconfig: add MESA_DRICONF_EXECUTABLE_OVERRIDE

Allow the loading process to affect driconf option matching without
changing the behavior throughout mesa common code or leaking the name of
the loading process to logs, artifact storage, or in sub-thread naming,
as can be the case with the broader MESA_PROCESS_NAME override.

This new MESA_DRICONF_EXECUTABLE_OVERRIDE takes higher precedence over
MESA_PROCESS_NAME in the case where both are set.

Signed-off-by: Ryan Neph <ryanneph@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20779>

17 months agoutil/u_process: remove util_get_process_name_may_override()
Ryan Neph [Thu, 19 Jan 2023 18:20:15 +0000 (10:20 -0800)]
util/u_process: remove util_get_process_name_may_override()

Also deprecate GALLIUM_PROCESSS_NAME in favor of MESA_PROCESS_NAME,
while maintaining existing functionality for use cases relying on
GALLIUM_PROCESSS_NAME.

GALLIUM_PROCESSS_NAME takes higher precedence over MESA_PROCESS_NAME in
the case where both are set.

Signed-off-by: Ryan Neph <ryanneph@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20779>

17 months agoutil/u_process: add MESA_PROCESS_NAME override to util_get_process_name()
Ryan Neph [Thu, 19 Jan 2023 01:10:12 +0000 (17:10 -0800)]
util/u_process: add MESA_PROCESS_NAME override to util_get_process_name()

Allow processes to set a custom process name before loading drivers.

Especially useful for virtualized workloads hidden behind a
generically-named host renderer process (e.g. Venus render_server) to
retain game-specific driconf option matching.

Signed-off-by: Ryan Neph <ryanneph@google.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20779>

17 months agoci: fix directory existence racing in parallel test execution
Ryan Neph [Thu, 26 Jan 2023 19:22:23 +0000 (11:22 -0800)]
ci: fix directory existence racing in parallel test execution

meson tests sharing a binary (and deviating in their env/args) will
produce temporary logs to the same directory, which is assumed to exist
only for the duration of a single test. This is problematic when running
tests in parallel, as one test may remove the directory before the
other(s) finish, causing a test flake.

This appends the each test's pid to the output directory to enforce
uniqueness and avoid the race.

Signed-off-by: Ryan Neph <ryanneph@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20779>

17 months agoradv: skip shaders cache for fast-linked pipelines with GPL
Samuel Pitoiset [Mon, 30 Jan 2023 11:27:11 +0000 (12:27 +0100)]
radv: skip shaders cache for fast-linked pipelines with GPL

Shader binaries that are imported during linking should already be in
the cache (not yet implemented though) and computing the per pipeline
cache hash is really expensive.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21009>

17 months agoradeonsi/vcn: use encoder/decoder caps reported by kernel
Thong Thai [Fri, 27 Jan 2023 23:35:18 +0000 (18:35 -0500)]
radeonsi/vcn: use encoder/decoder caps reported by kernel

Rely on the kernel for video encoder/decode capabilities where possible,
since there might be special cases for some devices. Otherwise, fallback
to the older logic for older kernels.

v2: Made the macro lines shorter and added a comment to explain (David)
v3: Undo deleting some logic (Ruijing)

Signed-off-by: Thong Thai <thong.thai@amd.com>
Reviewed-by: Ruijing Dong <ruijing.dong@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20969>

17 months agointel/compiler/mesh: remove dead code path supporting >4 dword writes
Marcin Ślusarz [Tue, 31 Jan 2023 13:52:24 +0000 (14:52 +0100)]
intel/compiler/mesh: remove dead code path supporting >4 dword writes

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20858>

17 months agointel/compiler/mesh: support longer write messages
Marcin Ślusarz [Fri, 13 Jan 2023 13:53:54 +0000 (14:53 +0100)]
intel/compiler/mesh: support longer write messages

Allowing longer writes reduces the number of send messages needed
to support unaligned 4-component writes.

Note: nothing currently generates 8-component writes, so this change
makes "second_mask" code path in emit_urb_direct_writes and
emit_urb_indirect_writes_mod dead.

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20858>

17 months agoagx: Bump preamble_storage_size to 512
Alyssa Rosenzweig [Thu, 29 Dec 2022 03:46:35 +0000 (22:46 -0500)]
agx: Bump preamble_storage_size to 512

nir_opt_preamble is now aware of the internal uniforms we insert, so it can use
the whole uniform file available to it. This lets us push more (all?) uniform
loads in Dolphin ubershaders to the preamble.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20562>

17 months agoagx: Lower system values in NIR in the driver
Alyssa Rosenzweig [Thu, 29 Dec 2022 02:16:35 +0000 (21:16 -0500)]
agx: Lower system values in NIR in the driver

To comply with The Ekstrand Rule.

AGX has a large number of "uniform registers" available. These may be loaded
with arbitrary ranges of GPU memory by the driver, or they can be written by the
preamble shader. Currently, the compiler runs nir_opt_preamble on the first half
of the uniform file, and then translates NIR sysvals to moves from the second
half of the uniform file, passing back a uniform->sysval map for the GL driver
to respect. This has (at least) two issues:

* Since nir_opt_preamble runs before gathering sysvals, it has to assume the
  maximum number of sysvals are pushed, which can prevent it from moving some
  computation to the preamble due to running out of partitioned uniform registers.
  This is a problem for Dolphin's ubershaders, though it's unclear how much it
  matters for Dolphin perf.

* This violates The Ekstrand Rule and apparently will be a problem for our
  Vulkan driver. I'm just a compiler+GL girl, so I wouldn't know.

To fix this, we invert the order of operations. At the end of this series, we
instead lower NIR system values to NIR load_preamble instructions in the GL
driver. The compiler just translates directly to uniform registers reads. The
Vulkan driver will need its own version of this code, but maybe it can do
something clever and descriptor set aware.

This means that there will already be some load_preamble instructions when
nir_opt_preamble runs, so I've made minor changes to nir_opt_preamble to handle
that gracefully. This is a bit lazy... The alternative is to introduce a
`load_uniform_agx` intrinsic which `load_preamble` gets lowered to trivially.
But that's another pass over the IR (and due to AGX's shader variant hell I'm
sensitive to backend compile time) and it would be more complicated than what's
implemented here.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Acked-by: Ella Stanforth <ella@iglunix.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20562>

17 months agonir/opt_preamble: Consider load_preamble as movable
Alyssa Rosenzweig [Thu, 29 Dec 2022 03:40:36 +0000 (22:40 -0500)]
nir/opt_preamble: Consider load_preamble as movable

It's kosher to get load_preamble intrinsics ahead of time if the driver is
pushing sysvals. Handle them like load_uniform.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Acked-by-(with-sparkles): Asahi Lina <lina@asahilina.net>

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20562>

17 months agonir/opt_preamble: Treat *size as an input
Alyssa Rosenzweig [Thu, 29 Dec 2022 02:56:00 +0000 (21:56 -0500)]
nir/opt_preamble: Treat *size as an input

Some backends may wish to reserve early uniforms for internal system values, and
use the remaining space for preamble storage. In this case, it's convenient to
teach nir_opt_preamble about a reserved offset. It's logical to treat the output
*size instead of an in/out variable that nir_opt_preamble adds to. This requires
a slight change to the consumers to zero the input.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Acked-by-(with-sparkles): Asahi Lina <lina@asahilina.net>

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20562>

17 months agozink: always unref old images when adding new binds
Mike Blumenkrantz [Mon, 23 Jan 2023 21:34:31 +0000 (16:34 -0500)]
zink: always unref old images when adding new binds

at some point this was correct, but refactoring has since occurred,
and this ends up leaking storage image objects

cc: mesa-stable

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20867>

17 months agozink: stop leaking push descriptor templates
Mike Blumenkrantz [Mon, 23 Jan 2023 21:08:48 +0000 (16:08 -0500)]
zink: stop leaking push descriptor templates

templates[ZINK_DESCRIPTOR_TYPE_UNIFORMS] needs to be deleted, which
requires a larger iterator

cc: mesa-stable

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20867>

17 months agozink: don't add dmabuf export type if dmabuf isn't supported
Mike Blumenkrantz [Thu, 19 Jan 2023 18:22:30 +0000 (13:22 -0500)]
zink: don't add dmabuf export type if dmabuf isn't supported

avoid trying to create dmabuf-exportable resources too

cc: mesa-stable

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20791>

17 months agoradv: fix GPL fast-linking with libs that have retained NIR shaders
Samuel Pitoiset [Thu, 26 Jan 2023 13:02:51 +0000 (14:02 +0100)]
radv: fix GPL fast-linking with libs that have retained NIR shaders

Zink creates all libaries with CREATE_RETAIN_LINK_TIME_OPTIMIZATION,
then it first creates unoptimized pipelines and it enqueues optimized
pipelines in the background with CREATE_LINK_TIME_OPTIMIZATION.

If a pipeline is linked without CREATE_LINK_TIME_OPTIMIZATION, the
driver should import binaries instead of retained NIR shaders. This
was broken because RADV wasn't compiling binaries at all in presence
of CREATE_RETAIN_LINK_TIME_OPTIMIZATIONS. Now, it always compiles
binaries in libraries but can also retain NIR if requested.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8150
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21008>

17 months agointel/compiler/mesh: optimize indirect writes
Marcin Ślusarz [Thu, 10 Nov 2022 19:29:54 +0000 (20:29 +0100)]
intel/compiler/mesh: optimize indirect writes

Our hardware requires that we write to URB using full vec4s at aligned
addresses. It gives us an ability to mask-off dwords within vec4 we don't
want to write, but we have to know their positions at compile time.

Let's assume that:
- V represents one dword we want to write
- ? is an unitinitialized value
- "|" is a vec4 boundary.

When we want to write 2-dword value at offset 0 we generate 1 write message:
| V1 V2 ? ? |
with mask:
| 1  1  0 0 |

When we want to write 4-dword value at offset 2 we generate 2 write messages:
| ? ? V1 V2 | V3 V4 ? ? |
with mask:
| 0 0 1  1  | 1  1  0 0 |

However if we don't know the offset within vec4 at *compile time* we
currently generate 4 write messages:
| V1 V1 V1 V1 |
| 0  0  1  0  |

| V2 V2 V2 V2 |
| 0  0  0  1  |

| V3 V3 V3 V3 |
| 1  0  0  0  |

| V4 V4 V4 V4 |
| 0  1  0  0  |

where masks are determined at *run time*.

This is quite wasteful and slow.

However, if we could determine the offset modulo 4 statically at compile time,
we could generate only 1 or 2 write messages (1 if modulo is 0) instead of 4.

This is what this patch does: it analyzes the addressing expression for
modulo 4 value and if it can determine it at compile time, we generate
1 or 2 writes, and if it can't we fallback to the old 4 writes method.

In mesh shader, the value of offset modulo 4 should be known for all outputs,
with an exception of primitive indices.

The modulo value should be known because of MUE layout restrictions, which
require that user per-primitive and per-vertex data start at address aligned
to 8 dwords and we should statically always know the offset from this base.

There can be some cases where the offset from the base is more dynamic
(e.g. indirect array access inside a per-vertex value), so we always do
the analysis.

Primitive indices are an exception, because they form vec3s (for triangles),
which means that the offset will not be easy to analyse.

When U888X index format lands, primitive indices will use only one dword
per triangle, which means that we'll always write them using one message.

Task shaders don't have any predetermined structure of output memory, so
always do the analysis.

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20050>

17 months agonir: add nir_mod_analysis & its tests
Marcin Ślusarz [Wed, 7 Dec 2022 14:31:58 +0000 (15:31 +0100)]
nir: add nir_mod_analysis & its tests

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20050>

17 months agoradv: adjust ACCUM tessellation fields on GFX11+
Samuel Pitoiset [Mon, 30 Jan 2023 07:44:17 +0000 (08:44 +0100)]
radv: adjust ACCUM tessellation fields on GFX11+

Based on RadeonSI/PAL.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20982>

17 months agoradv: fix RB+ for SRGB formats
Samuel Pitoiset [Mon, 30 Jan 2023 08:16:50 +0000 (09:16 +0100)]
radv: fix RB+ for SRGB formats

This should be set for linear colorspace only.

Ported from RadeonSI.

Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20982>

17 months agoradv: stop setting INTERPOLATE_COMP_Z
Samuel Pitoiset [Mon, 30 Jan 2023 07:50:05 +0000 (08:50 +0100)]
radv: stop setting INTERPOLATE_COMP_Z

Based on RadeonSI/PAL.

Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20982>

17 months agovulkan/runtime: match the spec when taking pipeline subsets.
Hyunjun Ko [Tue, 31 Jan 2023 07:30:03 +0000 (16:30 +0900)]
vulkan/runtime: match the spec when taking pipeline subsets.

Signed-off-by: Hyunjun Ko <zzoon@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21006>

17 months agoegl: fix fd_display_gpu on surfaceless and device platforms
Simon Ser [Mon, 30 Jan 2023 18:02:31 +0000 (19:02 +0100)]
egl: fix fd_display_gpu on surfaceless and device platforms

The original commit missed these.

Signed-off-by: Simon Ser <contact@emersion.fr>
Fixes: 31013f3ce7cf ("egl: remove is_different_gpu variable from struct dri2_egl_display")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8194

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20992>

17 months agofrontents/va: Use PIPE_USAGE_STAGING for coded buffer
David Rosca [Mon, 30 Jan 2023 15:31:21 +0000 (16:31 +0100)]
frontents/va: Use PIPE_USAGE_STAGING for coded buffer

Coded buffer will only be read on CPU, setting
PIPE_USAGE_STAGING instead of PIPE_USAGE_STREAM
makes the CPU reads much faster.

On 6700XT this reduces the CPU copy by around
3ms to 0.3 ms on average while under high GPU
load - real-time game streaming.

Signed-off-by: David Rosca <nowrep@gmail.com>
Reviewed-by: Ruijing Dong <ruijing.dong@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20989>

17 months agoradv: only initialize non-zero values for the default dynamic state
Samuel Pitoiset [Fri, 27 Jan 2023 17:34:48 +0000 (18:34 +0100)]
radv: only initialize non-zero values for the default dynamic state

This avoids a big memcpy and cut the function time by 2x.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20960>

17 months agoradv: regroup dynamic states initialization
Samuel Pitoiset [Fri, 27 Jan 2023 17:22:32 +0000 (18:22 +0100)]
radv: regroup dynamic states initialization

It should be possible to initialize these inside libraries at some
point.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20960>

17 months agoradv: ignore all CB dynamic states when there is no color attachments
Samuel Pitoiset [Fri, 27 Jan 2023 17:14:50 +0000 (18:14 +0100)]
radv: ignore all CB dynamic states when there is no color attachments

This simplifies radv_init_dynamic_state() slightly.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20960>

17 months agoci: Run our manual jobs during the nightly scheduled run.
Emma Anholt [Thu, 26 Jan 2023 21:14:19 +0000 (13:14 -0800)]
ci: Run our manual jobs during the nightly scheduled run.

We have a common pain point with fractional CTS coverage, where the test
list changes on a CTS uprev or board load rebalancing, so you get a
different subset of tests run.  The dev updates the list of xfails (a
pain), but also we end up with xfails left behind that aren't tested any
more and don't reflect reality.

For some drivers (tu, freedreno, zink-anv) we have manual jobs available
for curious devs to look at the current state of the CTS, but without
anyone having to keep the full xfails updated during uprevs, you don't
necessarily know what to do with the results you get on your MR.

So, let's introduce nightly testing for the tests that aren't guaranteed
green by Marge.  With that, Someone (possibly me? sigh) can review the
nightly results and push up updates for full-run xfails so everyone can be
on the same page other than a day or so of delay.  We also have some hope
for automated tooling to do this thanks to what Collabora has been working
on for automated CI uprev MR generation.

Reviewed-by: Martin Roukala <martin.roukala@mupuf.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20950>

17 months agoci/zink: Move the zink-anv-tgl manual full run to custom manual deps.
Emma Anholt [Thu, 26 Jan 2023 21:04:57 +0000 (13:04 -0800)]
ci/zink: Move the zink-anv-tgl manual full run to custom manual deps.

Follow-up to !17445, since this run had been added while that MR was
outstanding.  Now it shouldn't show up in unrelated pipelines.

Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Martin Roukala <martin.roukala@mupuf.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20950>

17 months agoci/zink: Disable Amnesia trace until the linked issue gets fixed.
Emma Anholt [Thu, 26 Jan 2023 20:13:58 +0000 (12:13 -0800)]
ci/zink: Disable Amnesia trace until the linked issue gets fixed.

Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Martin Roukala <martin.roukala@mupuf.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20950>

17 months agoradv: Shift left the tile swizzle more on GFX11.
Bas Nieuwenhuizen [Mon, 30 Jan 2023 01:54:19 +0000 (02:54 +0100)]
radv: Shift left the tile swizzle more on GFX11.

ac/surface puts the raw pip_bank_xor there, which needs the extra
shift for the actual tile_swizzle.

(I think long term we should refactor this in ac/surface but for
 now lets fix like radeonsi to avoid race conditions.)

CC: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20979>

17 months agoradv: Set FDCC_CONTROL SAMPLE_MASK_TRACKER_WATERMARK
Bas Nieuwenhuizen [Mon, 30 Jan 2023 01:31:41 +0000 (02:31 +0100)]
radv: Set FDCC_CONTROL SAMPLE_MASK_TRACKER_WATERMARK

Might cause hangs according to comments. Syncs with radeonsi/PAL.

Fixes: e210ffb4d0d ("radv: update framebuffer registers on GFX11")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20979>

17 months agomailmap: Remap e-mail addresses for Faith Ekstrand
Faith Ekstrand [Mon, 30 Jan 2023 23:02:20 +0000 (17:02 -0600)]
mailmap: Remap e-mail addresses for Faith Ekstrand

Acked-by: Lina Versace <lina@kiwitree.net>
Acked-by: Daniel Stone <daniels@collabora.com>
Lovingly-reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21000>

17 months agobroadcom/compiler: fix indentation at v3d_nir_lower_image_load_store
Alejandro Piñeiro [Mon, 22 Nov 2021 14:08:29 +0000 (15:08 +0100)]
broadcom/compiler: fix indentation at v3d_nir_lower_image_load_store

Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20972>

17 months agodzn, driconf: Add a driconf entry for NMS to claim wide line support
Jesse Natalie [Fri, 27 Jan 2023 16:50:54 +0000 (08:50 -0800)]
dzn, driconf: Add a driconf entry for NMS to claim wide line support

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20959>

17 months agoiris: Stop marking context unconditionally as guilty
Sagar Ghuge [Thu, 26 Jan 2023 00:10:52 +0000 (16:10 -0800)]
iris: Stop marking context unconditionally as guilty

With this change, we would fetch the reset status and if the context
status is banned or in unknown state, we would just start with the fresh
context.

Also, use the fetched reset status to communicate back to the gallium
frontend.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7802

Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20928>

17 months agoCI: Lima farm is offline
Jesse Natalie [Mon, 30 Jan 2023 20:05:12 +0000 (12:05 -0800)]
CI: Lima farm is offline

Acked-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20995>

17 months agodocs: Add GL 4.3 support info in mesa docs
Neha Bhende [Mon, 23 Jan 2023 22:22:23 +0000 (14:22 -0800)]
docs: Add GL 4.3 support info in mesa docs

Reviewed-by: Charmaine Lee <charmainel@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20964>

17 months agoradeonsi/vcn: validate fence handle before using it
Boyuan Zhang [Mon, 30 Jan 2023 14:28:33 +0000 (09:28 -0500)]
radeonsi/vcn: validate fence handle before using it

Check if picture fence handle pointer is valid before using.

Fixes: 843bdd22 ('radeonsi/vcn: check fence before destroying dpb')

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/20986>

17 months agowsi/win32: Use app-provided timeout instead of arbitrary hardcoded value
Jesse Natalie [Fri, 27 Jan 2023 20:06:34 +0000 (12:06 -0800)]
wsi/win32: Use app-provided timeout instead of arbitrary hardcoded value

Prevents returning spurious timeouts when the app wanted to wait
infinitely. Fixes 3DMark Wild Lands which would otherwise attempt
to render/present a buffer it didn't successfully acquire.

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20963>