platform/upstream/mesa.git
15 months agozink: remove redundant compute program batch ref
Mike Blumenkrantz [Mon, 10 Apr 2023 22:18:16 +0000 (18:18 -0400)]
zink: remove redundant compute program batch ref

this is already handled in the function above

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

15 months agozink: run bo lowering passes for separate shader compile with uniform inlining
Mike Blumenkrantz [Fri, 7 Apr 2023 16:18:19 +0000 (12:18 -0400)]
zink: run bo lowering passes for separate shader compile with uniform inlining

this is otherwise unable to pass ntv

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

15 months agozink: add a 'separate' flag to shader module compile to indicate separate shaders
Mike Blumenkrantz [Fri, 31 Mar 2023 22:17:07 +0000 (18:17 -0400)]
zink: add a 'separate' flag to shader module compile to indicate separate shaders

not used yet

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

15 months agozink: move separate shader dsl creation to compiler function
Mike Blumenkrantz [Fri, 31 Mar 2023 20:04:31 +0000 (16:04 -0400)]
zink: move separate shader dsl creation to compiler function

no functional changes, just reordering

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

15 months agozink: minor whitespace cleanup
Mike Blumenkrantz [Fri, 31 Mar 2023 20:04:17 +0000 (16:04 -0400)]
zink: minor whitespace cleanup

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

15 months agozink: use zink_shader_object for precompiled separate shaders
Mike Blumenkrantz [Fri, 31 Mar 2023 19:52:46 +0000 (15:52 -0400)]
zink: use zink_shader_object for precompiled separate shaders

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

15 months agozink: more zink_shader_object conversion
Mike Blumenkrantz [Fri, 31 Mar 2023 19:48:40 +0000 (15:48 -0400)]
zink: more zink_shader_object conversion

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

15 months agozink: make zink_shader_spirv_compile static
Mike Blumenkrantz [Fri, 31 Mar 2023 19:39:45 +0000 (15:39 -0400)]
zink: make zink_shader_spirv_compile static

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

15 months agozink: wrap return of compile_module()
Mike Blumenkrantz [Fri, 31 Mar 2023 19:00:24 +0000 (15:00 -0400)]
zink: wrap return of compile_module()

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

15 months agozink: wrap zink_shader_compile_separate() return
Mike Blumenkrantz [Fri, 31 Mar 2023 18:56:11 +0000 (14:56 -0400)]
zink: wrap zink_shader_compile_separate() return

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

15 months agozink: hook up EXT_shader_object
Mike Blumenkrantz [Fri, 31 Mar 2023 18:53:39 +0000 (14:53 -0400)]
zink: hook up EXT_shader_object

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

15 months agozink: use tes to generate tcs
Mike Blumenkrantz [Mon, 10 Apr 2023 17:01:19 +0000 (13:01 -0400)]
zink: use tes to generate tcs

this makes more sense considering the tcs will be stored onto the tes

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

15 months agodraw: fix viewmask iterating
Mike Blumenkrantz [Fri, 21 Apr 2023 14:41:34 +0000 (10:41 -0400)]
draw: fix viewmask iterating

the frontend has to be flushed and setup again if only
the viewmask has changed since the last draw

Fixes: 03cbb7b104e ("draw: add view_mask rendering support")

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22628>

15 months agonir/nir_lower_vec3_to_vec4: Use the nir_shader_instructions_pass() helper
Thomas H.P. Andersen [Sun, 4 Jul 2021 09:41:52 +0000 (11:41 +0200)]
nir/nir_lower_vec3_to_vec4: Use the nir_shader_instructions_pass() helper

Extracts some per-impl code to nir_lower_vec3_to_vec4 and then
converts to use the nir_shader_instructions_pass helper.

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11683>

15 months agonir/nir_lower_to_source_mods: Use the nir_shader_instructions_pass() helper
Thomas H.P. Andersen [Thu, 19 Jan 2023 16:27:31 +0000 (17:27 +0100)]
nir/nir_lower_to_source_mods: Use the nir_shader_instructions_pass() helper

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11683>

15 months agonir/nir_lower_two_sided_color: Use the nir_shader_instructions_pass() helper
Thomas H.P. Andersen [Sun, 4 Jul 2021 09:25:50 +0000 (11:25 +0200)]
nir/nir_lower_two_sided_color: Use the nir_shader_instructions_pass() helper

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11683>

15 months agonir/nir_lower_uniforms_to_ubo: Use the nir_shader_instructions_pass() helper
Thomas H.P. Andersen [Sat, 3 Jul 2021 13:10:05 +0000 (15:10 +0200)]
nir/nir_lower_uniforms_to_ubo: Use the nir_shader_instructions_pass() helper

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11683>

15 months agonir/nir_lower_var_copies: Use the nir_shader_instructions_pass() helper
Thomas H.P. Andersen [Thu, 19 Jan 2023 16:28:13 +0000 (17:28 +0100)]
nir/nir_lower_var_copies: Use the nir_shader_instructions_pass() helper

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11683>

15 months agonir/nir_lower_viewport_transform: Use the nir_shader_instructions_pass() helper
Thomas H.P. Andersen [Thu, 1 Jul 2021 23:16:13 +0000 (01:16 +0200)]
nir/nir_lower_viewport_transform: Use the nir_shader_instructions_pass() helper

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11683>

15 months agonir/nir_lower_wpos_ytransform: Use the nir_shader_instructions_pass() helper
Thomas H.P. Andersen [Thu, 1 Jul 2021 23:15:23 +0000 (01:15 +0200)]
nir/nir_lower_wpos_ytransform: Use the nir_shader_instructions_pass() helper

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11683>

15 months agonir/nir_lower_wpos_center: Use the nir_shader_instructions_pass() helper
Thomas H.P. Andersen [Thu, 1 Jul 2021 16:02:37 +0000 (18:02 +0200)]
nir/nir_lower_wpos_center: Use the nir_shader_instructions_pass() helper

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11683>

15 months agofrontend/nine: fix wfog
Axel Davy [Sun, 2 Apr 2023 15:35:53 +0000 (17:35 +0200)]
frontend/nine: fix wfog

When wfog support is advertised, unless an orthogonal
projection matrix is detected, w is supposed to be used
instead of z for the fog equation when done in the pixel
shader.

Due to the spec being ambiguous, and tests being incomplete,
it seems we had got things wrong.
New tests confirm the behaviour.

For the explanation we will denote z_vs and w_vs the position
output's z and w channels in the vertex shader, and
z_ps, w_ps the position input z and w channels in the pixel shader.
w_ps = 1/w_vs
z_ps = z_vs/w_vs

In the programmable pixel shader, we used z_ps/w_ps, thus z_vs.
As basically z_vs and w_vs are usually in the same range, we didn't
notice an obvious difference with the correct behaviour.

In the ff pixel shader, we used z_ps for zfog and w_vs else.
z_ps was always used if a programmable vertex shader was detected.
This latter behaviour led to issue
https://gitlab.freedesktop.org/mesa/mesa/-/issues/8341

While using z_ps/w_ps like for programmable ps fixes the issue visually
for the same reason as it did for programmable ps, it breaks
wine tests using XYZRHW. These tests show that when passing
pre-transformed vertices and an orthogonal projection matrix,
z_vs is used, and due to the XYZRHW property, this is not
recovered by the z_ps/w_ps computation (instead z_ps=z_vs).
For the game affected by the issue, the projection matrix set
is not orthogonal.

The direct3D spec indicates that the projection matrix must be
set correctly for fog to work properly, even if we do not use the
transformation pipeline (could be related to xyzrhw, or programmable vs
or both). Previous tests had shown that the projection matrix
has the last two values of the last column tested against 0 and 1,
in order to activate zfog or wfog.
The R500 spec indicates that either z or 1/1/w can be used as source
for the fog computation, but it is not clear whether this is z_vs or
z_ps.

Tests confirmed the intuition that the correct behaviour
is to use z_ps (zfog) when an orthogonal projection matrix is set
(the spec spirit being that in that case z_ps=z_vs),
and 1/w_ps (wfog) else (even if programmable shaders are used).

This patch introduces this behaviour.
Fixes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8341

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22583>

15 months agofrontend/nine: fix fog key overflow
Axel Davy [Thu, 13 Apr 2023 17:44:04 +0000 (19:44 +0200)]
frontend/nine: fix fog key overflow

FOGTABLEMODE is 2 bits. It could thus
overwrite the part of the ps key reserved
for centroid interpolation.

Fix the size of FOGTABLEMODE and the key

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22583>

15 months agofrontend/nine: Apply writemask to pointsize
Axel Davy [Thu, 21 Jul 2022 16:44:56 +0000 (18:44 +0200)]
frontend/nine: Apply writemask to pointsize

Seen when working on the code.
It seems like a sane thing to do, but it
might be wrong.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22583>

15 months agofrontend/nine: Fix missing clamping of pointsize for ff
Axel Davy [Thu, 21 Jul 2022 16:42:02 +0000 (18:42 +0200)]
frontend/nine: Fix missing clamping of pointsize for ff

Seen while working on this code.
It seems to be a sane thing to do.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22583>

15 months agov3dv/ci: rename waiver test
Juan A. Suarez Romero [Sat, 22 Apr 2023 17:42:19 +0000 (19:42 +0200)]
v3dv/ci: rename waiver test

Apparently dEQP-VK.draw.inverted_depth_ranges.nodepthclamp_deltazero was
renamed to dEQP-VK.draw.renderpass.inverted_depth_ranges.nodepthclamp_deltazero.

Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22641>

15 months agor600/sfn: make sure f2u32 is lowered late and correctly for 64 bit floats
Gert Wollny [Tue, 11 Apr 2023 12:17:40 +0000 (14:17 +0200)]
r600/sfn: make sure f2u32 is lowered late and correctly for 64 bit floats

With the latest changes in opt_algebraic we got f2u32 in the final code
that should be lowered before conversion to assembly.

Fixes: b3685f3ba7fddbe73f363ff4d53ca734841e4b06
    nir/algebraic: insert patterns inside optimizations list

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22640>

15 months agoutil: Add mesa_blake3 wrappers.
Tatsuyuki Ishi [Mon, 17 Apr 2023 13:41:43 +0000 (22:41 +0900)]
util: Add mesa_blake3 wrappers.

The wrappers mirrors the mesa_sha1 API to ease migration.

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

15 months agoutil/blake3: Patch with hidden visibility for asm symbols.
Tatsuyuki Ishi [Mon, 10 Apr 2023 02:44:54 +0000 (11:44 +0900)]
util/blake3: Patch with hidden visibility for asm symbols.

For Unix platforms, the symbol visibility needs to be hidden to avoid
exposing them in driver shared objects.

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

15 months agoutil: Add a copy of BLAKE3 hash library.
Tatsuyuki Ishi [Thu, 30 Mar 2023 07:21:57 +0000 (16:21 +0900)]
util: Add a copy of BLAKE3 hash library.

The files are copied from upstream repo, with a few modifications to fix
build errors, as described in the README.

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

15 months agodocs: update calendar for 23.0.3
Dylan Baker [Fri, 21 Apr 2023 18:36:35 +0000 (11:36 -0700)]
docs: update calendar for 23.0.3

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

15 months agodocs: update calendar for 23.0.2
Dylan Baker [Fri, 21 Apr 2023 18:36:34 +0000 (11:36 -0700)]
docs: update calendar for 23.0.2

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

15 months agodocs: update calendar for 23.0.1
Dylan Baker [Fri, 21 Apr 2023 18:36:33 +0000 (11:36 -0700)]
docs: update calendar for 23.0.1

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

15 months agodocs: Add sha256 sum for 23.0.3
Dylan Baker [Thu, 20 Apr 2023 23:32:10 +0000 (16:32 -0700)]
docs: Add sha256 sum for 23.0.3

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

15 months agodocs: add release notes for 23.0.3
Dylan Baker [Thu, 20 Apr 2023 23:06:54 +0000 (16:06 -0700)]
docs: add release notes for 23.0.3

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

15 months agodocs: Add sha256 sum for 23.0.2
Dylan Baker [Fri, 7 Apr 2023 17:10:13 +0000 (10:10 -0700)]
docs: Add sha256 sum for 23.0.2

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

15 months agodocs: add release notes for 23.0.2
Dylan Baker [Fri, 7 Apr 2023 16:22:42 +0000 (09:22 -0700)]
docs: add release notes for 23.0.2

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

15 months agodocs: Add sha256 sum for 23.0.1
Dylan Baker [Sat, 25 Mar 2023 05:42:38 +0000 (22:42 -0700)]
docs: Add sha256 sum for 23.0.1

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

15 months agodocs: add release notes for 23.0.1
Dylan Baker [Sat, 25 Mar 2023 03:04:38 +0000 (20:04 -0700)]
docs: add release notes for 23.0.1

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

15 months agofreedreno: Inline single-caller helpers
Rob Clark [Wed, 19 Apr 2023 20:36:58 +0000 (13:36 -0700)]
freedreno: Inline single-caller helpers

Now that we don't have the batch_reset() path, we can inline
batch_init() and batch_fini().

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

15 months agofreedreno: Remove unused fd_batch_reset()
Rob Clark [Wed, 19 Apr 2023 20:22:42 +0000 (13:22 -0700)]
freedreno: Remove unused fd_batch_reset()

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

15 months agor600/sfn: Lower tess levels to vectors in TCS
Gert Wollny [Fri, 21 Apr 2023 08:17:44 +0000 (10:17 +0200)]
r600/sfn: Lower tess levels to vectors in TCS

Thanks @anholt for pointing me in the right direction

Fixes: 84006587 glsl: Delete the lower_tess_level
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8884

v2: replace direct call to lowering pass with nir compiler option

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22622>

15 months agowsi/x11: Fix present ID signal when IDLE comes before COMPLETE.
Hans-Kristian Arntzen [Fri, 21 Apr 2023 15:22:47 +0000 (17:22 +0200)]
wsi/x11: Fix present ID signal when IDLE comes before COMPLETE.

It appears to be possible that IDLE is observed before COMPLETE.
In this case, an application may access present_id in subsequent
QueuePresentKHR and race against the fence worker reading present_id.

Solve this by adding a separate signal_present_id that is used when
completing to avoid the race.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22633>

15 months agoRevert "ci/radv: Demote navi21 to manual until recent flakiness resolves."
Samuel Pitoiset [Fri, 21 Apr 2023 09:53:30 +0000 (11:53 +0200)]
Revert "ci/radv: Demote navi21 to manual until recent flakiness resolves."

This reverts commit 2a9b990fa3ed003354f4ee68105e4f0cbf8ce0b3.

This should be fixed now.

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

15 months agoradv/amdgpu: fix adding continue preambles and postambles BOs to the list
Samuel Pitoiset [Fri, 21 Apr 2023 08:11:36 +0000 (10:11 +0200)]
radv/amdgpu: fix adding continue preambles and postambles BOs to the list

Previously, continue preambles and postambles were added directly to
the CS array which means all BOs were correctly added to the BO list,
and this has been broken recently. IB BOs need to be added to the list.

When a BO isn't added to the list as part of a submission, it might
randomly VM faults.

This fixes VM faults and random GPU hangs on NAVI21 in Mesa CI.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8849
Fixes: 41a9bced313 ("radv: Fill continue preambles and postambles properly.")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22625>

15 months agobroadcom: fix typos
Harri Nieminen [Thu, 20 Apr 2023 10:15:05 +0000 (13:15 +0300)]
broadcom: fix typos

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22591>

15 months agozink/ci: remove xt_framebuffer_multisample-interpolation fail
antonino [Fri, 21 Apr 2023 13:09:32 +0000 (15:09 +0200)]
zink/ci: remove xt_framebuffer_multisample-interpolation fail

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22626>

15 months agozink: don't render with multisampling when it is disabled
antonino [Fri, 21 Apr 2023 11:25:33 +0000 (13:25 +0200)]
zink: don't render with multisampling when it is disabled

Previously zink ignored whether multisampling was enabled and rendered
with mulisampling whenever the target buffer had multiple samples.

This change now will only render with multisampling when it is enabled
and will use a lowering pass to make sure this case is handled correcly.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22626>

15 months agozink: add to multisample field to `zink_gfx_pipeline_state`
antonino [Fri, 21 Apr 2023 13:11:28 +0000 (15:11 +0200)]
zink: add to multisample field to `zink_gfx_pipeline_state`

This field will store whether multisample is enabled, this is needed to
manage the case where a multisampling buffer is used with multisampling
disabled.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22626>

15 months agozink: add `single_sample` to fs key
antonino [Thu, 20 Apr 2023 13:18:23 +0000 (15:18 +0200)]
zink: add `single_sample` to fs key

This key will be 1 when a multisampled buffer is used without
multisampling enabled. This requires a lowering pass.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22626>

15 months agomesa: fix ms fallback texture creation
Mike Blumenkrantz [Thu, 13 Apr 2023 20:28:16 +0000 (16:28 -0400)]
mesa: fix ms fallback texture creation

when a ms fallback texture is created, it has to actually be a ms texture
in order to be consistent with driver expectations for a given sampler in
a shader

this adds sample querying to both ends of the fallback creation to ensure
that a sample count is passed to the driver

affects:
KHR-GL46.sample_variables.position.fixed.samples_0

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22492>

15 months agomesa/st: try to block multisampled texsubimage from doing cpu writes
Mike Blumenkrantz [Mon, 17 Apr 2023 17:01:08 +0000 (13:01 -0400)]
mesa/st: try to block multisampled texsubimage from doing cpu writes

this is only hit when populating multisampled fallback textures, so
don't assert if it fails since some drivers are able to handle it

d3d12 can't, however, and this should be enough to work around that issue

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22492>

15 months agoanv: rework Wa_14017076903 to only apply with occlusion queries
Lionel Landwerlin [Wed, 19 Apr 2023 19:58:16 +0000 (22:58 +0300)]
anv: rework Wa_14017076903 to only apply with occlusion queries

Fixes KHR-GL46.transform_feedback.* tests with zink+anv on DG2

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: c34916f841d3 ("anv: implement occlusion query related Wa_14017076903")
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22586>

15 months agoradv/ci: remove one expected test failure on PITCAIRN
Samuel Pitoiset [Fri, 21 Apr 2023 11:03:40 +0000 (13:03 +0200)]
radv/ci: remove one expected test failure on PITCAIRN

After a bunch of runs, this one seems to always pass.

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

15 months agor600/sfn: fix memory leak related to sh_info->arrays
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>

15 months agozink/ci: document that some tests no longer fail
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>

15 months agoradv/ci: only reboot on hangs for vkcts-navi10-valve
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>

15 months agoci/b2c: allow not specifying a reboot condition
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>

15 months agoradv/ci: document all the flakes we hit while I was away
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>

15 months agoradv/ci: disable the vkcts-navi21-llvm-valve job
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>

15 months agov3d/ci: annotate failure
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>

15 months agov3d: use primitive type to get stream output offset
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>

15 months agoci: Move Vulkan CTS patches to their own directory
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>

15 months agozink: Add some printfs when initialization fails
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>

15 months agomesa/draw: fix -Wformat warning
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>

15 months agofreedreno/a6xx: Fix valid_format_cast logic for newer a6xx
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>

15 months agodzn: Support aniso-with-point-mip samplers
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>

15 months agodzn: Use narrow quadrilateral lines when supported
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>

15 months agodzn: Support dynamic depth bias via command list instead of PSO
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>

15 months agodzn: Add physical device arg to format lookup
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>

15 months agodzn: Remove driconf for quad ops in vertex stages
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>

15 months agospirv2dxil: Lower quad ops in non-fragment/compute stages
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>

15 months agoci: rework vulkan validation layer build script
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>

15 months agointel/compiler/gfx12.5+: Lower 64-bit cluster_broadcast with 32-bit ops
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>

15 months agoradv: update binning settings to work around GPU hangs
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>

15 months agoradv: debug: Update decode ring umr command
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>

15 months agovk/entry_points:: fix mingw build
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>

15 months agoradv: use gfx_level in radv_flush_occlusion_query_state()
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>

15 months agoradv: emit PIXEL_PIPE_STAT_CONTROL in the gfx preamble for GFX11
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>

15 months agoradv: track DB_COUNT_CONTROL changes to avoid context rolls
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>

15 months agoradv: delay enabling/disabling occlusion queries at draw time
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>

15 months agozink: check for extendedDynamicState3DepthClipNegativeOneToOne for ds3 support
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>

15 months agoradeonsi/vcn: AV1 skip the redundant bs resize
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>

15 months agoradv: wait for occlusion queries in the resolve query shader
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>

15 months agodrisw: don't leak the winsys
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>

15 months agopvr: fix typo in pvr_rt_get_region_headers_stride_size()
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>

15 months agozink: don't create separate shader dsls if there are no bindings
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>

15 months agozink: add a util function for printing shaders
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>

15 months agozink: call zink_shader_free for compute shaders
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>

15 months agozink: always wait on precompile fence at start of zink_gfx_shader_free()
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>

15 months agozink: split out generic shader destruction for reuse
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>

15 months agozink: zink_shader_free -> zink_gfx_shader_free
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>

15 months agozink: don't bitcast bool deref loads/stores
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>

15 months agozink: avoid recursion during msrtss blits from flushing clears
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>

15 months agozink: skip msrtss replicate if the attachment will be full-cleared
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>

15 months agozink: handle 'blitting' flag better in msrtss replication
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>

15 months agozink: manually re-set framebuffer after msrtss replicate blit
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>

15 months agoradv: fix usage flag for 3D compressed 128 bpp images on GFX9
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>

15 months agoradv: do not allow 1D block-compressed images with (extended) storage on GFX6
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>

15 months agospirv: Rework structured control flow handling
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>