Patrick Lerda [Sat, 25 Mar 2023 01:14:32 +0000 (02:14 +0100)]
r600/sfn: fix memory leak related to sh_info->arrays
For instance, with "piglit/bin/shader_runner tests/spec/glsl-1.10/execution/glsl-vs-arrays-2.shader_test -auto -fbo":
Direct leak of 12 byte(s) in 1 object(s) allocated from:
#0 0x7f33c3f3d097 in operator new[](unsigned long) (/usr/lib64/libasan.so.6+0xb3097)
#1 0x7f33b9af1e5b in r600::ValueFactory::get_shader_info(r600_shader*) ../src/gallium/drivers/r600/sfn/sfn_valuefactory.cpp:1056
#2 0x7f33b9a96860 in r600::Shader::get_shader_info(r600_shader*) ../src/gallium/drivers/r600/sfn/sfn_shader.cpp:1445
#3 0x7f33b99ddd07 in r600_shader_from_nir ../src/gallium/drivers/r600/sfn/sfn_nir.cpp:1032
#4 0x7f33b9c3e701 in r600_pipe_shader_create ../src/gallium/drivers/r600/r600_shader.c:231
Fixes:
79ca456b4837 ("r600/sfn: rewrite NIR backend")
Signed-off-by: Patrick Lerda <patrick9876@free.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22262>
Martin Roukala (né Peres) [Thu, 20 Apr 2023 17:55:49 +0000 (20:55 +0300)]
zink/ci: document that some tests no longer fail
This is likely to have been fixed by
6a39d35df062 ("aco: fix nir_f2u64
translation") (thanks @DadSchoorse!).
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Signed-off-by: Martin Roukala (né Peres) <martin.roukala@mupuf.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22596>
Martin Roukala (né Peres) [Thu, 20 Apr 2023 12:21:02 +0000 (15:21 +0300)]
radv/ci: only reboot on hangs for vkcts-navi10-valve
vkcts-navi10-valve has the nasty habit on hanging the GPU, so we
introduced an auto-retry... but for every radv job. Let's stop doing
that, and instead limit the auto-retry to vkcts-navi10-valve only.
Additionally, let's increase the number of attempts to 3 (2 retries),
as sometimes, it may still fail and we don't want to flag it as a
fail in nightly runs.
Let's hope we'll get to the bottom of this hang sooner rather than
later, so that we can remove this hack!
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Signed-off-by: Martin Roukala (né Peres) <martin.roukala@mupuf.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22596>
Martin Roukala (né Peres) [Thu, 20 Apr 2023 12:20:04 +0000 (15:20 +0300)]
ci/b2c: allow not specifying a reboot condition
This will allow us to only enable this feature where we need it.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Signed-off-by: Martin Roukala (né Peres) <martin.roukala@mupuf.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22596>
Martin Roukala (né Peres) [Thu, 20 Apr 2023 12:02:33 +0000 (15:02 +0300)]
radv/ci: document all the flakes we hit while I was away
Closes: 8817
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Signed-off-by: Martin Roukala (né Peres) <martin.roukala@mupuf.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22596>
Martin Roukala (né Peres) [Thu, 20 Apr 2023 07:23:36 +0000 (10:23 +0300)]
radv/ci: disable the vkcts-navi21-llvm-valve job
It is badly-broken and until someone actually fixes it, it provides
no additional value to other developers.
We'll keep the job around, as a courtesy to the developer that will
be trying to fix it.
Closes: #8799
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Signed-off-by: Martin Roukala (né Peres) <martin.roukala@mupuf.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22596>
Juan A. Suarez Romero [Thu, 20 Apr 2023 15:04:20 +0000 (17:04 +0200)]
v3d/ci: annotate failure
The test requires a fix already submitted to piglit.
Reviewed-by: Emma Anholt <emma@anholt.net>
Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22607>
Juan A. Suarez Romero [Thu, 20 Apr 2023 14:56:22 +0000 (16:56 +0200)]
v3d: use primitive type to get stream output offset
So far we were only considering the number of vertices to draw to
compute the offset in a stream output buffer.
But this is not correct, as it depends on the primitive type too. For
instance, with 4 vertices, if we use a triangle strip primitive, then 2
triangles are generated from those 4 vertices, so 6 vertices will be
captured.
This fixes spec@!opengl es
3.0@gles-3.0-transform-feedback-uniform-buffer-object.
CC: 23.1
Reviewed-by: Emma Anholt <emma@anholt.net>
Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22607>
Sergi Blanch Torne [Thu, 13 Apr 2023 09:51:29 +0000 (11:51 +0200)]
ci: Move Vulkan CTS patches to their own directory
VulkanCTS can receive patches from a reference to an upstream commit or by a
file stored in Mesa. Those locally stored patches for VulkanCTS should be
stored in the specific directory for patches with a prefix like skqp does.
The schema of how both sources apply patches has received a slight
modification to resemble each other.
Signed-off-by: Sergi Blanch Torne <sergi.blanch.torne@collabora.com>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Acked-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22463>
xurui [Thu, 20 Apr 2023 09:32:39 +0000 (17:32 +0800)]
zink: Add some printfs when initialization fails
Signed-off-by: xurui <xurui@kylinos.cn>
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22592>
Michel Zou [Thu, 20 Apr 2023 17:10:56 +0000 (19:10 +0200)]
mesa/draw: fix -Wformat warning
fixes:
5791826b
cc @pepp @mareko
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22605>
Rob Clark [Thu, 20 Apr 2023 18:57:31 +0000 (11:57 -0700)]
freedreno/a6xx: Fix valid_format_cast logic for newer a6xx
Fixes a pile of
dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.*
on a6xx gen2 and later.
Fixes:
87978c39334 ("freedreno/a6xx: Allow z24s8 format casts")
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22610>
Jesse Natalie [Thu, 20 Apr 2023 17:38:49 +0000 (10:38 -0700)]
dzn: Support aniso-with-point-mip samplers
Also rework the sampler translation logic to take advantage of the
fact that the D3D12 filter types are bitfields. No need to loop over
a sparse enum space like we were doing.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22606>
Jesse Natalie [Thu, 20 Apr 2023 17:21:55 +0000 (10:21 -0700)]
dzn: Use narrow quadrilateral lines when supported
This lets us follow the Vulkan spec requirements for MSAA line
rasterization, using a width of 1.0 instead of D3D's proscribed
width of 1.4. There's no reason to predicate this on MSAA being
enabled, since quadrilateral lines with a width of 1.0 are actually
the most desired type of line rasterization for Vulkan.
Follow-ups:
- We can probably turn on 'strict lines' when this is supported.
- We should enable the line rasterization mode extension.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22606>
Jesse Natalie [Thu, 20 Apr 2023 17:15:09 +0000 (10:15 -0700)]
dzn: Support dynamic depth bias via command list instead of PSO
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22606>
Jesse Natalie [Thu, 20 Apr 2023 16:05:58 +0000 (09:05 -0700)]
dzn: Add physical device arg to format lookup
A followup change will switch format mappings based on this
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22606>
Jesse Natalie [Thu, 20 Apr 2023 14:41:25 +0000 (07:41 -0700)]
dzn: Remove driconf for quad ops in vertex stages
These actually work now.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22606>
Jesse Natalie [Thu, 20 Apr 2023 14:41:02 +0000 (07:41 -0700)]
spirv2dxil: Lower quad ops in non-fragment/compute stages
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22606>
Eric Engestrom [Thu, 13 Apr 2023 19:29:12 +0000 (20:29 +0100)]
ci: rework vulkan validation layer build script
Initially this was just adding a missing popd, but actually there's no
reason to pushd into the build dir, so let's just pass the build dir as
arguments to cmake & ninja instead.
`--arch x64` was also dropped as it only applies to Windows builds,
which this script doesn't support anyway.
Fixes:
512f1c160a63a7ba1b00 ("ci/zink: Add coverage using the vulkan validation layer on lvp.")
Signed-off-by: Eric Engestrom <eric@igalia.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22488>
Jordan Justen [Wed, 19 Apr 2023 00:11:41 +0000 (20:11 -0400)]
intel/compiler/gfx12.5+: Lower 64-bit cluster_broadcast with 32-bit ops
For MTL (verx10 == 125), float64 is supported, but int64 is not.
Therefore we need to lower cluster broadcast using 32-bit int ops.
For gfx12.5+ platforms that support int64, the register regions
used by cluster broadcast aren't supported by the 64-bit pipeline.
On MTL, dEQP-VK.subgroups.clustered.*_double* and
dEQP-VK.subgroups.clustered.*_dvec* were failing to validate the
compiled shader in debug mode, and reportedly gpu-hanging in release
mode.
With this change dEQP-VK.subgroups.clustered.*_double* passed all 48
tests and dEQP-VK.subgroups.clustered.*_dvec* passed all 140 tests on
MTL.
Rework:
* Move from generator to brw_fs_lower_regioning.cpp. (Suggested by
Francisco)
* Apply to verx10 >= 125.. (Suggested by Francisco)
Cc: 23.1 <mesa-stable>
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Marcin Ślusarz <marcin.slusarz@intel.com> (v1)
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22569>
Samuel Pitoiset [Mon, 10 Apr 2023 15:08:21 +0000 (17:08 +0200)]
radv: update binning settings to work around GPU hangs
Ported from RadeonSI, but it seems PAL always use 1 for both
parameters as well.
This should fix random GPU hangs with small chips (eg. NAVI24, GFX1103),
though all chips might have been affected.
Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8046
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8597
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8683
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22528>
André Almeida [Wed, 19 Apr 2023 15:11:01 +0000 (12:11 -0300)]
radv: debug: Update decode ring umr command
The old ring decoder command is deprecated since umr release 1.0.4 and
was effectively removed at 1.0.7. Update the command to use the new
decode flag.
Signed-off-by: André Almeida <andrealmeid@igalia.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Tatsuyuki Ishi <ishitatsuyuki@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22576>
Michel Zou [Thu, 13 Apr 2023 16:41:39 +0000 (18:41 +0200)]
vk/entry_points:: fix mingw build
MinGW does not play well either with weak symbols and crashes at runtime without a trace
fixes:
7e833713d83087934221cd47ece49e87199a00d1
Reviewed-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22474>
Samuel Pitoiset [Tue, 18 Apr 2023 15:53:21 +0000 (17:53 +0200)]
radv: use gfx_level in radv_flush_occlusion_query_state()
Cleanup.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22556>
Samuel Pitoiset [Tue, 18 Apr 2023 14:07:43 +0000 (16:07 +0200)]
radv: emit PIXEL_PIPE_STAT_CONTROL in the gfx preamble for GFX11
This is more optimal than emitting for every BeginOcclusionQuery().
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22556>
Samuel Pitoiset [Tue, 18 Apr 2023 12:01:51 +0000 (14:01 +0200)]
radv: track DB_COUNT_CONTROL changes to avoid context rolls
This can be really noticeable for the BeginQuery/Draw/EndQuery pattern.
It seems to improve a depth-only pass by +35% in one upcoming game
because this removes a bunch of context rolls.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22556>
Samuel Pitoiset [Tue, 18 Apr 2023 11:49:52 +0000 (13:49 +0200)]
radv: delay enabling/disabling occlusion queries at draw time
Most applications have a sequence like BeginQuery/Draw/EndQuery which
can be optimized by delaying DB_COUNT_CONTROL at draw time instead of
enabling/disabling for every draw.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22556>
Mike Blumenkrantz [Thu, 20 Apr 2023 15:15:27 +0000 (11:15 -0400)]
zink: check for extendedDynamicState3DepthClipNegativeOneToOne for ds3 support
somehow this was forgotten
Fixes:
c7f46d2ad6d ("zink: use dynamic state3 rasterization states when available")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22603>
Leo Liu [Tue, 18 Apr 2023 15:49:49 +0000 (11:49 -0400)]
radeonsi/vcn: AV1 skip the redundant bs resize
For AV1, the begin bitstream buffer have included all the tile data,
and extra bitstream buffer is useless and causing the bad performance
by bs buffer resize/map/copy.
Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Ruijing Dong <ruijing.dong@amd.com>
Reviewed-by: Veerabadhran Gopalakrishnan <veerabadhran.gopalakrishnan@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22557>
Samuel Pitoiset [Wed, 19 Apr 2023 14:28:48 +0000 (16:28 +0200)]
radv: wait for occlusion queries in the resolve query shader
This is really noticeable for games that resolve a bunch of occlusion
queries (in this case 4096) because it seems that emitting 4096
WAIT_REG_MEM packets can stall more than expected. Fixes this by
waiting for queries in the resolve query shader.
This improves performance of an unreleased game by +~10% (71->78 FPS).
RADV should now be really close to Windows performance for that title.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22579>
Mike Blumenkrantz [Mon, 10 Apr 2023 13:47:06 +0000 (09:47 -0400)]
drisw: don't leak the winsys
if a winsys is allocated by the frontend, it should be freed by the frontend
rather than the driver to ensure it doesn't leak if it doesn't reach
the driver
cc: mesa-stable
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22396>
Frank Binns [Wed, 29 Mar 2023 15:44:32 +0000 (16:44 +0100)]
pvr: fix typo in pvr_rt_get_region_headers_stride_size()
This function was returning the size of a single region header as the stride
when it was supposed to be returning the total size of the region headers for a
single render target. This went unnoticed due to the fact this function had two
variables with basically identical names. To avoid any future confusion, rename
rgn_header_size to single_rgn_header_size throughout the code.
Signed-off-by: Frank Binns <frank.binns@imgtec.com>
Reviewed-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22574>
Mike Blumenkrantz [Wed, 5 Apr 2023 13:35:56 +0000 (09:35 -0400)]
zink: don't create separate shader dsls if there are no bindings
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22577>
Mike Blumenkrantz [Thu, 30 Mar 2023 13:08:21 +0000 (09:08 -0400)]
zink: add a util function for printing shaders
now that these are serialized, nir_print_shader is slightly less convenient
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22577>
Mike Blumenkrantz [Wed, 29 Mar 2023 12:52:43 +0000 (08:52 -0400)]
zink: call zink_shader_free for compute shaders
ensure everything is deallocated consistently
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22577>
Mike Blumenkrantz [Fri, 7 Apr 2023 20:16:00 +0000 (16:16 -0400)]
zink: always wait on precompile fence at start of zink_gfx_shader_free()
this shouldn't affect anything at present, but that will change in the future
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22577>
Mike Blumenkrantz [Wed, 29 Mar 2023 12:52:26 +0000 (08:52 -0400)]
zink: split out generic shader destruction for reuse
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22577>
Mike Blumenkrantz [Wed, 29 Mar 2023 12:50:43 +0000 (08:50 -0400)]
zink: zink_shader_free -> zink_gfx_shader_free
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22577>
Mike Blumenkrantz [Tue, 28 Mar 2023 18:54:28 +0000 (14:54 -0400)]
zink: don't bitcast bool deref loads/stores
a bool can only be a bool, and OpBitCast requires the src type to be
different than the dst type, so this is illegal
cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22577>
Mike Blumenkrantz [Tue, 28 Mar 2023 13:47:45 +0000 (09:47 -0400)]
zink: avoid recursion during msrtss blits from flushing clears
if an attachment other than the msrtss blit attachment has clears pending,
unbinding the other attachment will trigger a clear flush, which will then
recurse into the msrtss blit that's being triggered
instead, save/restore these clears around the msrtss blit since they
can be executed during the normal renderpass
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22577>
Mike Blumenkrantz [Tue, 28 Mar 2023 13:46:16 +0000 (09:46 -0400)]
zink: skip msrtss replicate if the attachment will be full-cleared
this should be unnecessary and avoids a perf hit
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22577>
Mike Blumenkrantz [Mon, 27 Mar 2023 19:50:10 +0000 (15:50 -0400)]
zink: handle 'blitting' flag better in msrtss replication
barriers are illegal while 'blitting' is set, so unset it temporarily
for the replication barriers and then also re-set the layouts after
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22577>
Mike Blumenkrantz [Mon, 27 Mar 2023 19:35:47 +0000 (15:35 -0400)]
zink: manually re-set framebuffer after msrtss replicate blit
with the new zsbuf elimination handling, the fb state calculated in
u_blitter's fb restore may be incorrect if the zsbuf has indeed been
eliminated, so ensure the right fb is stored to be reapplied so that
misrenders will be avoided
fixes some crashes/misrenders in webgl
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22577>
Samuel Pitoiset [Mon, 17 Apr 2023 16:06:11 +0000 (18:06 +0200)]
radv: fix usage flag for 3D compressed 128 bpp images on GFX9
VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT is equal to
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT but we want COLOR_ATTACHMENT_BIT.
Found by inspection.
Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22540>
Samuel Pitoiset [Mon, 17 Apr 2023 16:03:38 +0000 (18:03 +0200)]
radv: do not allow 1D block-compressed images with (extended) storage on GFX6
For some reasons this seems broken only on GFX6. Note that PAL doesn't
allowed block-compressed with 1D on all GPUs.
Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22540>
Caio Oliveira [Fri, 29 Jul 2022 16:22:50 +0000 (09:22 -0700)]
spirv: Rework structured control flow handling
The new code splits the work into a few passes instead of trying to do
everything with a single pass. This helps to apply the new clarified
rules for structured control flow in the SPIR-V specification, in
particular the "exit construct" rules.
First find an appropriate ordering for the blocks, based on the
approach taken by Tint (WebGPU compiler). Then, with those blocks
in order, identify the SPIR-V constructs start and end positions.
Finally, walk the blocks again to emit NIR for each of them, "opening"
and "closing" the necessary NIR constructs as we reach the start and
end positions of the SPIR-V constructs.
There are a couple of interesting choices when mapping the constructs
to NIR:
- NIR doesn't have something like a switch, so like the previous code,
we lower the switch construct to a series of conditionals for each
case.
- And, unlike the previous code, when there's a need to perform a
break from a construct that NIR doesn't directly support (e.g. inside
a case construct, conditionally breaking early from the switch), we
now use a combination of a NIR loop and an NIR if. Extra code is
added to ensure that loop_break and loop_continues are propagated
to the right loop.
This should fix various issues with valid SPIR-V that previously
resulted in "Invalid back or cross-edge in the CFG" errors.
Thanks to Alan Baker and David Neto for their explanations of
ordering the blocks, in the Tint code and in presentations to
the SPIR-V WG.
Thanks to Jack Clark for providing a lot of valuable tests used to
validate this MR.
Closes: #5973, #6369
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17922>
Qiang Yu [Wed, 19 Apr 2023 05:03:03 +0000 (13:03 +0800)]
aco: fix nir_f2u64 translation
mantissa needs to be at the lower part for shift left.
This fixes large integer value conversion.
Cc: mesa-stable
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22570>
Dmitry Baryshkov [Wed, 19 Apr 2023 23:49:16 +0000 (02:49 +0300)]
freedreno/registers: updte HDMI registers to include CEC details
Based on patchset by Arnaud Vrac update the hdmi.xml register
decscription.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22588>
Michel Zou [Thu, 13 Apr 2023 17:03:56 +0000 (19:03 +0200)]
vulkan/wsi: fix -Wnarrowing warning
else I get this output:
[11/600] Compiling C++ object src/vulkan/wsi/libvulkan_wsi.a.p/wsi_common_win32.cpp.obj
../src/vulkan/wsi/wsi_common_win32.cpp: In function 'VkResult wsi_win32_surface_create_swapchain_dxgi(wsi_win32_surface*, VkDevice, wsi_win32*, const VkSwapchainCreateInfoKHR*, wsi_win32_swapchain*)':
../src/vulkan/wsi/wsi_common_win32.cpp:757:65: warning: narrowing conversion of '((((int)chain->wsi_win32_swapchain::base.wsi_swapchain::present_mode) == ((int)VK_PRESENT_MODE_IMMEDIATE_KHR)) ? ((int)DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING) : 0)' from 'int' to 'UINT' {aka 'unsigned int'} [-Wnarrowing]
757 | chain->base.present_mode == VK_PRESENT_MODE_IMMEDIATE_KHR ?
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
758 | DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING : 0
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fixes:
d7730fcf22adae92b0e7a82e36cfe28200920b5f
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22475>
Mike Blumenkrantz [Wed, 19 Apr 2023 13:20:36 +0000 (09:20 -0400)]
util/debug: move null checks out of debug message macro
this otherwise causes tons of compiler warnings
cc: mesa-stable
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22196>
Mike Blumenkrantz [Wed, 19 Apr 2023 13:10:32 +0000 (09:10 -0400)]
zink: use a perf_debug() macro for debug message logging of copy box warning
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22196>
Mike Blumenkrantz [Wed, 19 Apr 2023 13:00:39 +0000 (09:00 -0400)]
zink: hook up debug callback
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22196>
Mike Blumenkrantz [Wed, 29 Mar 2023 14:08:14 +0000 (10:08 -0400)]
zink: only print copy box warning once per resource
this otherwise gets spammy
cc: mesa-stable
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22196>
Emma Anholt [Wed, 19 Apr 2023 17:22:07 +0000 (10:22 -0700)]
ci/freedreno: Demote a530 to manual again.
6 job-level flakes detected yesterday across a530_gl {2,3,5}/6. It's
still not ready to gate MRs.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22562>
Emma Anholt [Tue, 18 Apr 2023 22:29:57 +0000 (15:29 -0700)]
ci: Crank up the yamllint line length limit.
I hated that CI errors out because I pasted useful information in the
yaml. You shouldn't have to manually line-wrap pastes from dmesg.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22562>
Emma Anholt [Tue, 18 Apr 2023 17:43:29 +0000 (10:43 -0700)]
ci/radv: Add known flakes for #8817
Should greatly increase Marge reliability.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22562>
Emma Anholt [Tue, 18 Apr 2023 17:16:46 +0000 (10:16 -0700)]
ci/freedreno: Drop portal-2-v2 trace.
It's intermittently segfaulting. CI daily says 4 flakes this month.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22562>
Emma Anholt [Tue, 18 Apr 2023 17:02:19 +0000 (10:02 -0700)]
ci/zink+tu: Drop some intermittently failing a630 traces.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22562>
Emma Anholt [Tue, 18 Apr 2023 16:35:16 +0000 (09:35 -0700)]
ci/radv: Demote navi21 to manual until recent flakiness resolves.
22 detected job flakes yesterday.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22562>
Emma Anholt [Tue, 18 Apr 2023 16:24:42 +0000 (09:24 -0700)]
ci/lvp: Update sanctuary trace hash.
Changed a few days ago, still looks good.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22562>
Timur Kristóf [Tue, 18 Apr 2023 11:26:19 +0000 (13:26 +0200)]
radv: Fix dword alignment in SDMA buffer copy.
Also add a comment that explains the dword aligned mode.
Note that the SDMA shader uploads are always dword aligned
so this commit doesn't fix any issues but just prepares this
function for more general use.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Tatsuyuki Ishi <ishitatsuyuki@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22551>
Caio Oliveira [Wed, 29 Mar 2023 01:25:27 +0000 (18:25 -0700)]
spirv: Add --optimize flag to spirv2nir tool
Apply some basic NIR optimizations to clean up the result. Useful in some
situations when comparing the parsing code from different mesa branches.
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22180>
Caio Oliveira [Wed, 29 Mar 2023 01:28:06 +0000 (18:28 -0700)]
spirv: Output spirv2nir tool result to stdout
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22180>
Sil Vilerino [Mon, 17 Apr 2023 17:17:32 +0000 (13:17 -0400)]
d3d12: Clean unused code for parsing slices
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22541>
Sil Vilerino [Mon, 17 Apr 2023 16:56:33 +0000 (12:56 -0400)]
d3d12: Use frontend H264 decode slice offsets and sizes instead of parsing buffer
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22541>
Sil Vilerino [Mon, 17 Apr 2023 16:56:01 +0000 (12:56 -0400)]
frontend/va: Add H264 decode slice data
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22541>
Mike Blumenkrantz [Wed, 19 Apr 2023 17:32:32 +0000 (13:32 -0400)]
zink: emit demote cap when using demote
VUID-VkShaderModuleCreateInfo-pCode-01377(ERROR / SPEC): msgNum:
1478567243 - Validation Error: [ VUID-VkShaderModuleCreateInfo-pCode-01377 ] Object 0: handle = 0x55f304e851c0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x5821254b | SPIR-V module not valid: Opcode DemoteToHelperInvocation requires one of these capabilities: DemoteToHelperInvocation
cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22582>
Filip Gawin [Fri, 2 Dec 2022 02:48:16 +0000 (03:48 +0100)]
nine: add fallback for D3DFMT_D16 in d3d9_to_pipe_format_checked
Helps with avoing crash in winetests on crocus.
Cc: mesa-stable
Reviewed-by: Axel Davy <davyaxel0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20121>
Mike Blumenkrantz [Wed, 19 Apr 2023 17:04:51 +0000 (13:04 -0400)]
glthread: add newline to env override
Fixes:
8c42c353b6e ("driconf: rework glthread enablement")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22581>
Mike Blumenkrantz [Mon, 27 Mar 2023 19:49:51 +0000 (15:49 -0400)]
util/blitter: fix line wrapping on error to avoid giving wrong line number
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22581>
Marek Olšák [Thu, 6 Apr 2023 06:28:50 +0000 (02:28 -0400)]
nir: set uses_wide_subgroup_intrinsics for all shader stages
nir_opt_varyings will use it in VS, TES, GS.
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21861>
Marek Olšák [Sun, 12 Mar 2023 07:18:38 +0000 (03:18 -0400)]
nir: add next_stage parameter to nir_remove_varying
so that e.g. the POS output is removed if the next stage is not FS.
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21861>
Marek Olšák [Sun, 12 Mar 2023 07:16:18 +0000 (03:16 -0400)]
nir: add next_stage parameter to nir_slot_is_sysval_output to return better info
If we know the next stage, we can tell whether an output is a sysval,
such as POS.
For example, POS is not a sysval output if the next stage is not FS.
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21861>
Marek Olšák [Sun, 12 Mar 2023 07:31:16 +0000 (03:31 -0400)]
nir: remove an obsolete comment from nir_gather_xfb_info_from_intrinsics
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21861>
Marek Olšák [Sun, 12 Mar 2023 07:29:18 +0000 (03:29 -0400)]
nir: return a status from nir_remove_varying whether it removed the instruction
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21861>
Marek Olšák [Fri, 10 Mar 2023 02:30:41 +0000 (21:30 -0500)]
nir: rework nir_lower_color_inputs to work with lowered IO intrinsics
also only call it from radeonsi and remove the option
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21861>
Marek Olšák [Wed, 1 Mar 2023 04:12:58 +0000 (23:12 -0500)]
nir: don't remove dead IO variables in nir_lower_io_passes for st_link_nir
We need to keep variables in the IR because a few places use them,
like nir_build_program_resource_list. This will allow us to lower IO
in the linker.
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21861>
Marek Olšák [Sat, 11 Mar 2023 05:26:38 +0000 (00:26 -0500)]
nir: handle all varying slots in gl_varying_slot_name_for_stage
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21861>
Marek Olšák [Sun, 5 Mar 2023 05:21:16 +0000 (00:21 -0500)]
nir: handle more opcodes in nir_lower_io_to_scalar
It just works.
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21861>
Marek Olšák [Wed, 1 Mar 2023 04:41:59 +0000 (23:41 -0500)]
nir: extend nir_opt_fragdepth to handle lowered IO
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21861>
Mihai Preda [Wed, 29 Jun 2022 12:18:41 +0000 (15:18 +0300)]
nir: update nir->num_inputs, num_outputs in nir_recompute_io_bases()
Since nir_recompute_io_bases is going to be used instead of
nir_assign_io_var_locations, we need to update num_inputs, num_outputs.
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21861>
Marek Olšák [Tue, 28 Feb 2023 20:12:21 +0000 (15:12 -0500)]
nir: skip nir_lower_io_passes for compute shaders
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21861>
Marek Olšák [Tue, 28 Feb 2023 19:59:09 +0000 (14:59 -0500)]
nir: assign IO bases in nir_lower_io_passes
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21861>
Marek Olšák [Tue, 28 Feb 2023 22:24:08 +0000 (17:24 -0500)]
nir: lower load_barycentric_at_offset in lower_wpos_ytransform
so that we can run this pass on lowered IO.
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21861>
Marek Olšák [Sat, 11 Mar 2023 04:03:58 +0000 (23:03 -0500)]
nir: fix 2 bugs in nir_create_passthrough_tcs
- VAR31 was ignored.
- Only a half of the 16-bit slot was passed through, though I'm not sure
if nir_lower_io handles vec8. The slots are only for GLES and I don't
think a passthrough TCS is possible with GLES.
Fixes:
a8e84f50bc6c8 - nir: Add helper to create passthrough TCS shader
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21861>
Charmaine Lee [Wed, 12 Apr 2023 00:24:40 +0000 (03:24 +0300)]
translate: do not clamp element index in generic_run
The buffer max_index value in translate_generic struct is relevant for
indexed draw only. So do not clamp the element index in generic_run() as it
is called for non-indexed draw only.
This patch passes index_size to the common generic_run_one function
so index clamping is only performed when a non-zero index_size is specified.
This fixes a text selection bug with kitty terminal emulator running on ARM
when it falls back to the generic translate path for unsigned byte vertex
array.
cc: mesa-stable
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22568>
Guilherme Gallo [Tue, 18 Apr 2023 18:44:42 +0000 (15:44 -0300)]
ci/freedreno: Fix a618-traces-performance rules
Change the order of job `extends`, as .freedreno-rules-performance has
all the necessary rules for this performance job.
Closes: #8866
Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22565>
Rhys Perry [Tue, 18 Apr 2023 13:58:57 +0000 (14:58 +0100)]
aco: use apply_nuw_to_ssa() with load_smem_amd
fossil-db (navi21):
Totals from 107 (0.08% of 135636) affected shaders:
Instrs: 389667 -> 389425 (-0.06%); split: -0.06%, +0.00%
CodeSize: 2050380 -> 2049440 (-0.05%); split: -0.05%, +0.00%
Latency: 3738053 -> 3737313 (-0.02%); split: -0.02%, +0.00%
InvThroughput: 599889 -> 599790 (-0.02%); split: -0.02%, +0.00%
SClause: 16120 -> 15920 (-1.24%)
Copies: 29823 -> 29809 (-0.05%); split: -0.07%, +0.02%
PreSGPRs: 6856 -> 6849 (-0.10%)
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22553>
Rhys Perry [Tue, 18 Apr 2023 13:50:18 +0000 (14:50 +0100)]
aco: remove SMEM_instruction::prevent_overflow
This doesn't seem useful anymore, and it seems we forgot to set it in a
few places.
This commit changes the behaviour of the optimizer so that
prevent_overflow is always true.
fossil-db (navi21):
Totals from 7421 (5.47% of 135636) affected shaders:
Instrs: 5402823 -> 5440126 (+0.69%); split: -0.00%, +0.69%
CodeSize:
28731300 ->
28974152 (+0.85%); split: -0.00%, +0.85%
VGPRs: 317528 -> 317552 (+0.01%)
SpillSGPRs: 419 -> 415 (-0.95%)
Latency:
40712478 ->
40783115 (+0.17%); split: -0.01%, +0.19%
InvThroughput: 7612708 -> 7616751 (+0.05%); split: -0.00%, +0.06%
VClause: 123824 -> 123848 (+0.02%); split: -0.09%, +0.11%
SClause: 161915 -> 172741 (+6.69%); split: -0.03%, +6.71%
Copies: 393015 -> 394429 (+0.36%); split: -0.20%, +0.56%
PreSGPRs: 288658 -> 289603 (+0.33%); split: -0.04%, +0.36%
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8864
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22553>
Karmjit Mahil [Mon, 27 Feb 2023 17:46:08 +0000 (17:46 +0000)]
pvr: Handle special built-in variable loading in vertex shader
For now always allocate space for the special built-in variables
that need filling in for the vertex shader. Ideally we should get
the compiler to analyze the shader and tell the driver if they are
used so that we don't reserve and fill them needlessly.
Signed-off-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21590>
Guilherme Gallo [Wed, 19 Apr 2023 14:31:47 +0000 (11:31 -0300)]
ci/lava: Skip regression test if LAVA log file is not present
Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22500>
Guilherme Gallo [Wed, 19 Apr 2023 03:03:54 +0000 (00:03 -0300)]
ci/lava: Use f-strings in job definition
f-strings are little more concise than str.format() approach.
It makes the code a little more readable as well.
Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22500>
Guilherme Gallo [Tue, 18 Apr 2023 03:18:12 +0000 (00:18 -0300)]
ci/lava: Refactor LAVAJobSubmitter and add tests
Some refactoring was needed to make LAVAJobSubmitter class testable via
pytest.
Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22500>
Guilherme Gallo [Tue, 18 Apr 2023 03:53:13 +0000 (00:53 -0300)]
ci/lava: Force use of UTC timezones
LAVA farm is giving datetime in UTC timezone, let's standardize it
locally for the script run, so datetimes coming from LAVA proxy calls
will be at the same timezone as the ones we use in structural logging
and traces.
Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22500>
Guilherme Gallo [Sat, 15 Apr 2023 19:43:40 +0000 (16:43 -0300)]
ci/lava: Integrate StructuralLogger with AutoSaveDict
Let's use the AutoSaveDict as structural logger abstraction to enable
real-time monitoring of LAVA jobs. Mainly used for local runs and
debugging of Mesa CI LAVA jobs.
Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22500>
Guilherme Gallo [Fri, 14 Apr 2023 19:30:27 +0000 (16:30 -0300)]
bin/ci: Add StructuredLogger to improve log handling
This commit introduces the StructuredLogger module, which provides a
robust and flexible logging utility supporting multiple data formats
(CSV, JSON, and YAML). By incorporating this module into our CI system,
we enhance our log management capabilities, making it easier to:
1. Monitor and analyze logs: The StructuredLogger is a dict-like data
abstraction which autosaves into a structured data file, whenever it
is updated. With this file, one can easily know specifics of the job
execution without having to grep it in the traces logs or exploring
the job artifacts. The autosave feature makes it useful even when the
CI job fails unexpectedly, since the partial dict is always written
back to the disk.
2. Maintain data integrity: The module includes context managers for
file locking and editing log data, ensuring data integrity and
preventing race conditions.
3. Support multiple formats: With built-in support for CSV, JSON, and
YAML formats, this module caters to a wide range of use cases and
user preferences.
4. Increase maintainability: The modular design of the StructuredLogger
and its corresponding strategies simplifies maintenance and allows
for seamless integration of additional formats in the future.
Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22500>
Guilherme Gallo [Thu, 6 Apr 2023 04:31:04 +0000 (01:31 -0300)]
ci/lava: Add a simple Structural Logger into submitter
Refactor some pieces of the submitter to improve the clarity of the
functions and create a simple dictionary with aggregated data from the
submitter execution which will be dumped to a file when the script
exits.
Add support for the AutoSaveDict based structured logger as well, which
will come in a follow-up commit.
Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22500>
Guilherme Gallo [Thu, 6 Apr 2023 04:44:24 +0000 (01:44 -0300)]
ci/lava: Update LogFollower for better section handling and history
Update the LogFollower class to improve section handling and provide a
history of sections encountered during log processing:
1. Add section_history attribute to store the history of encountered
GitlabSections.
2. Make LAVA job submitter use the section history feature to improve
structural logging.
Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22500>
Guilherme Gallo [Tue, 4 Apr 2023 10:48:44 +0000 (07:48 -0300)]
ci/lava: Use python-fire in job submitter
Cleanup argparse to use dataclasses+python-fire to give easier
maintenance to job submitter.
Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22500>
Guilherme Gallo [Tue, 4 Apr 2023 10:47:09 +0000 (07:47 -0300)]
ci/lava: Extract LAVA proxy and LAVAJob abstractions
Let's make lava_job_submitter.py cleaner with only parsing and retry
mechanism capabilities.
Moved out from the submitter script:
1. proxy functions
- moved to lava.utils.lava_proxy.py
2. LAVAJob class definition
- moved to lava.utils.lava_job.py
- added structural logging capabilities into LAVAJob
- Implemented properties for job_id, is_finished, and status, with
corresponding setter methods that update the log dictionary.
- Added new methods show, get_lava_time, and refresh_log for improved
log handling and data retrieval.
Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22500>