platform/upstream/mesa.git
21 months agoanv: Update PIPELINE_CONTROL flush when switching pipeline mode in TGL+
José Roberto de Souza [Tue, 3 Jan 2023 17:40:54 +0000 (09:40 -0800)]
anv: Update PIPELINE_CONTROL flush when switching pipeline mode in TGL+

This 2 PIPELINE_CONTROL flushes are not necessary for TGL and newer
and also it have different requirements of flush, so here doing
this two changes at the same time.

As no ANV_PIPE_INVALIDATE_BITS is set as parameter of
anv_add_pending_pipe_bits(),
genX(cmd_buffer_apply_pipe_flushes)(cmd_buffer) will only emit one
PIPELINE_CONTROL.

BSpec: 44505
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20501>

21 months agoiris: Update PIPELINE_CONTROL flush when switching pipeline mode in TGL+
José Roberto de Souza [Mon, 26 Dec 2022 19:44:36 +0000 (11:44 -0800)]
iris: Update PIPELINE_CONTROL flush when switching pipeline mode in TGL+

This 2 PIPELINE_CONTROL flushes are not necessary for TGL and newer
and also it have different requirements of flush, so here doing
this two changes at the same time.

BSpec: 44505
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20501>

21 months agohud: extract float printf modifer selection logic to helper
Pierre-Eric Pelloux-Prayer [Wed, 4 Jan 2023 09:08:38 +0000 (10:08 +0100)]
hud: extract float printf modifer selection logic to helper

And use it when printing to a file from hud_graph_add_value.

This turns:
  fps: 59.972473
Into:
  fps: 59.97

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

21 months agodri: get rid of LIBGL_SHOW_FPS
Pierre-Eric Pelloux-Prayer [Fri, 16 Dec 2022 13:08:35 +0000 (14:08 +0100)]
dri: get rid of LIBGL_SHOW_FPS

The same functionnality can be achieved using GALLIUM_HUD=stdout,fps (and for
now a fallback is doing this if LIBGL_SHOW_FPS=1 is used).

This removes one entry from the vtable and simplify dri3_handle_present_event.

Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20494>

21 months agohud,dri: emulate LIBGL_SHOW_FPS using hud
Pierre-Eric Pelloux-Prayer [Fri, 16 Dec 2022 13:43:10 +0000 (14:43 +0100)]
hud,dri: emulate LIBGL_SHOW_FPS using hud

LIBGL_SHOW_FPS=1 is now almost equivalent to using:

   GALLIUM_HUD=stdout,fps
   GALLIUM_HUD_VISIBLE=false
   GALLIUM_HUD_PERIOD=$LIBGL_SHOW_FPS

so we can drop LIBGL_SHOW_FPS handling in dri and move it to hud.

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

21 months agohud: add "stdout" option to print values to console
Pierre-Eric Pelloux-Prayer [Fri, 16 Dec 2022 13:42:16 +0000 (14:42 +0100)]
hud: add "stdout" option to print values to console

Values gathered by the hud context will be printed to stdout,
prefixed by their name.

Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20494>

21 months agohud: check GALLIUM_HUD_DUMP_DIR value only once
Pierre-Eric Pelloux-Prayer [Fri, 16 Dec 2022 13:40:53 +0000 (14:40 +0100)]
hud: check GALLIUM_HUD_DUMP_DIR value only once

Minor cleanup but will allow another change in the next commit.

Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20494>

21 months agoutil/disk_cache: Support combined foz ro and non-foz rw caches
Dmitry Osipenko [Sun, 11 Sep 2022 21:32:30 +0000 (00:32 +0300)]
util/disk_cache: Support combined foz ro and non-foz rw caches

Mesa utilizes only one type of cache at a time. This patch enables support
for combined reading from read-only Fossilize cache + non-foz read-write
caches.

From now on, a non-foz read-write caches will first try to retrieve data
from a read-only foz cache if new MESA_DISK_CACHE_COMBINE_RW_WITH_RO_FOZ
environment variable is set to true, otherwise the caching behaviour is
unchanged. The new flag has no effect when MESA_DISK_CACHE_SINGLE_FILE=1,
i.e. when the single-file foz cache is used.

This change allows us to ship a prebuilt RO caches for a certain
applications, while the rest of applications will benefit from the
regular RW caching that supports cache-size limitation. This feature
will be used by ChromeOS.

Usage example #1:

MESA_DISK_CACHE_DATABASE=0
MESA_DISK_CACHE_SINGLE_FILE=0
MESA_DISK_CACHE_COMBINE_RW_WITH_RO_FOZ=1
MESA_DISK_CACHE_READ_ONLY_FOZ_DBS=rocache1,rocache2

Usage example #2:

MESA_DISK_CACHE_DATABASE=1
MESA_DISK_CACHE_SINGLE_FILE=0
MESA_DISK_CACHE_COMBINE_RW_WITH_RO_FOZ=1
MESA_DISK_CACHE_READ_ONLY_FOZ_DBS=rocache1,rocache2

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

21 months agoutil/disk_cache: Store environment variable values in disk_cache struct
Dmitry Osipenko [Wed, 7 Sep 2022 20:17:56 +0000 (23:17 +0300)]
util/disk_cache: Store environment variable values in disk_cache struct

Store values of all environment variables related to disk caching within
struct disk_cache. This makes code cleaner and also will allow us to
combine read-only single-file cache with read-write caches.

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

21 months agoutil/fossilize_db: Fix resource leaks in foz_prepare() error paths
Dmitry Osipenko [Sat, 7 Jan 2023 18:55:12 +0000 (21:55 +0300)]
util/fossilize_db: Fix resource leaks in foz_prepare() error paths

The foz_prepare() doesn't perform cleanup on failure and then foz_destroy()
is never invoked for the foz_db, causing minor memory and FD leaks. Add the
cleanup to foz_prepare() error code paths. Make foz_destroy() to clear the
foz_db struct for consistency, right now the destroying is invoked only once,
but Mesa cache error code paths aren't trivial and may change in the future.

Suggested-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/18551>

21 months agozink: fix disappearing smooth lines after workaround
SoroushIMG [Wed, 4 Jan 2023 10:05:09 +0000 (10:05 +0000)]
zink: fix disappearing smooth lines after workaround

The passthrough geometery shader was using points for smooth lines.
This meant the shader would always statically get 1 vertex and never emit a line.

Fixes: 80285db9efe ("zink: lower smooth-lines if not supported")
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20582>

21 months agodriconf: add a workaround for plasmashell freezing
Xaver Hugl [Sun, 1 Jan 2023 16:01:24 +0000 (17:01 +0100)]
driconf: add a workaround for plasmashell freezing

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

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Tested-by: Dan Johansen <strit@manjaro.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20472>

21 months agointel/fs: only avoid SIMD32 if strictly inferior in throughput
Lionel Landwerlin [Thu, 27 Oct 2022 10:17:45 +0000 (13:17 +0300)]
intel/fs: only avoid SIMD32 if strictly inferior in throughput

This enabled SIMD32 in blorp shaders and seems to be give a small FPS
bump when using a DG2 GPU as secondary (requires copies to linear
buffers to exchange with main GPU).

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Acked-by: Matt Turner <mattst88@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19341>

21 months agoradv: remove unused radv_is_raster_enabled()
Samuel Pitoiset [Wed, 4 Jan 2023 14:22:59 +0000 (15:22 +0100)]
radv: remove unused radv_is_raster_enabled()

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

21 months agoradv: initialize blend state after compiling shaders
Samuel Pitoiset [Wed, 4 Jan 2023 13:57:34 +0000 (14:57 +0100)]
radv: initialize blend state after compiling shaders

This function used to compute part of the graphics key but everything
has been moved.

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

21 months agoradv: replace blend_enable_4bit by radv_pipeline_is_blend_enabled()
Samuel Pitoiset [Wed, 4 Jan 2023 13:42:25 +0000 (14:42 +0100)]
radv: replace blend_enable_4bit by radv_pipeline_is_blend_enabled()

Same logic, though this workaround shouldn't be determined from the
pipeline.

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

21 months agoradv: determine DISABLE_DUAL_QUAD directly from the command buffer
Samuel Pitoiset [Wed, 4 Jan 2023 13:38:18 +0000 (14:38 +0100)]
radv: determine DISABLE_DUAL_QUAD directly from the command buffer

With dynamic color blend equations, dual-src blending will be
determined from the dynamic state, better to move it there now.

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

21 months agoradv: simplify uses of color_write_mask/color_blend_enable
Samuel Pitoiset [Wed, 4 Jan 2023 13:07:06 +0000 (14:07 +0100)]
radv: simplify uses of color_write_mask/color_blend_enable

The common Vulkan code already sets them when they are dynamic, so this
was redundant.

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

21 months agoradv: adjust CB_SHADER_MASK right after SPI_SHADER_COL_FORMAT is compacted
Samuel Pitoiset [Wed, 4 Jan 2023 13:27:08 +0000 (14:27 +0100)]
radv: adjust CB_SHADER_MASK right after SPI_SHADER_COL_FORMAT is compacted

This is a cleanup.

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

21 months agoradv: remove unused parameter in radv_init_multisample_state()
Samuel Pitoiset [Wed, 4 Jan 2023 11:21:50 +0000 (12:21 +0100)]
radv: remove unused parameter in radv_init_multisample_state()

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

21 months agospirv2dxil: Fix memory leak on error path.
Vinson Lee [Sun, 8 Jan 2023 19:53:57 +0000 (11:53 -0800)]
spirv2dxil: Fix memory leak on error path.

Fix resource leak reported by Coverity Scan.

Resource leak (RESOURCE_LEAK)
leaked_storage: Variable file_contents going out of scope leaks the storage it points to.

Fixes: 531d17c3342 ("spirv2dxil: Support linking multiple shaders")
Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20576>

21 months agoci: Start weston with Xwayland
Erico Nunes [Tue, 20 Dec 2022 10:14:06 +0000 (11:14 +0100)]
ci: Start weston with Xwayland

This can be used instead of HWCI_START_XORG to provide X in CI.
It will only be actually used if HWCI_START_XORG is not set in the same
job.
It is particularly useful as weston has the explicit headless backend
which is more straightforward to use in the headless systems in CI.

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Reviewed-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20393>

21 months agovirgl: Use virgl host side shader stage IDs when reading caps
Gert Wollny [Fri, 6 Jan 2023 08:45:11 +0000 (09:45 +0100)]
virgl: Use virgl host side shader stage IDs when reading caps

The ordering of enum pipe_shader_type changed, but not all locations where
the host uses the original ordering were changed to translate to the new
ordering, namely reading the shader caps was not fixed up so do this now.

v2: - inline virgl_shader_stage_convert (Corentin)
    - encapuslate use of host shader stage when reading array elements
      of host caps

Fixes: a26543f6368fed1604cfde7fffce2024e9d8abab
   gallium: reorder the shader stage enum to match Mesa

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

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

21 months agoci/virgl: cover more glx@glx-copy-sub-buffer flakes
David Heidelberg [Sat, 7 Jan 2023 02:37:21 +0000 (03:37 +0100)]
ci/virgl: cover more glx@glx-copy-sub-buffer flakes

Generally, where this test doesn't fail, there it flakes.

Cover all variants.

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

Signed-off-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20556>

21 months agoRevert "ci/venus: disable for now"
Ryan Neph [Sat, 7 Jan 2023 00:18:42 +0000 (16:18 -0800)]
Revert "ci/venus: disable for now"

This reverts commit 22ab226396ab0b5db5a1f0f903e409ec89bb6a48.

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

21 months agoci: Bump crosvm and virglrenderer versions
Ryan Neph [Sat, 7 Jan 2023 00:17:08 +0000 (16:17 -0800)]
ci: Bump crosvm and virglrenderer versions

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

21 months agoisaspec: Fix bitmask conversions when isa.bitsize < 64
Mary [Fri, 11 Nov 2022 16:02:09 +0000 (17:02 +0100)]
isaspec: Fix bitmask conversions when isa.bitsize < 64

Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20541>

21 months agoetnaviv: add cleared surfaces to context flush set when necessary
Lucas Stach [Fri, 25 Nov 2022 19:26:10 +0000 (20:26 +0100)]
etnaviv: add cleared surfaces to context flush set when necessary

A RS/BLT clear might only clear the TS buffer, so the cleared resources
need to be added to the context flush set when they aren't explicitly
flushed in order to make the effect of the clear visible in the resource
on context flush.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20012>

21 months agoetnaviv: split adding resource to context flush set into own function
Lucas Stach [Fri, 25 Nov 2022 19:21:21 +0000 (20:21 +0100)]
etnaviv: split adding resource to context flush set into own function

It is needed in a few more places, so split it into a separate
function to make it reusable.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20012>

21 months agoci_run_n_monitor.py: automatically retry on transient errors
Eric Engestrom [Thu, 1 Dec 2022 10:49:56 +0000 (10:49 +0000)]
ci_run_n_monitor.py: automatically retry on transient errors

This morning a GitLab update was deployed, leading to a few moments
where the API returned an error.

python-gitlab is actually able to handle a number of those and retry
automatically, so let's enable that:
https://python-gitlab.readthedocs.io/en/stable/api-usage-advanced.html#transient-errors

Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20094>

21 months agozink: Add an assert for not seeing any more MSAA image-to-buffer copies.
Emma Anholt [Wed, 4 Jan 2023 17:13:39 +0000 (09:13 -0800)]
zink: Add an assert for not seeing any more MSAA image-to-buffer copies.

Now that transfer_map gets MSAA handled by the helper, we shouldn't have
to worry about this any more.

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

21 months agozink: Have u_transfer_helper resolve MSAA surfaces when mapping.
Emma Anholt [Wed, 4 Jan 2023 17:08:12 +0000 (09:08 -0800)]
zink: Have u_transfer_helper resolve MSAA surfaces when mapping.

This fixes all the dEQP winsys multisampling failures (like
dEQP-GLES3.functional.multisample.default_framebuffer.depth) I've found so
far.

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

21 months agou_transfer_helper: Merge in-place and split z/s interleaved map handling.
Emma Anholt [Wed, 4 Jan 2023 20:17:27 +0000 (12:17 -0800)]
u_transfer_helper: Merge in-place and split z/s interleaved map handling.

The paths were mostly the same, except that in-place was missing the
appropriate layering for MSAA helper re-mapping.  We can instead share
more code, making the differences between the interleave packing clear,
and have the MSAA resolve blit happen once before we do the split
mappings.

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

21 months agou_transfer_helper: Use common code for interleaved unmap.
Emma Anholt [Wed, 4 Jan 2023 19:52:19 +0000 (11:52 -0800)]
u_transfer_helper: Use common code for interleaved unmap.

The function was static and only used from this caller, and the only
difference was that the interleaved case didn't handle trans->ss (which
will always be unset for an interleaved mapping since interleaving splits
the underlying map of the MSAA resource into trans->trans and
trans->trans2).

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

21 months agou_transfer_helpre: Drop !interleave handling from the interleave code.
Emma Anholt [Wed, 4 Jan 2023 19:29:23 +0000 (11:29 -0800)]
u_transfer_helpre: Drop !interleave handling from the interleave code.

It's only called when need_interleave_path(), and they're static functions
in this file since !17959.

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

21 months agodocs/gallium: Explain that MSAA transfer_map must be supported.
Emma Anholt [Wed, 4 Jan 2023 17:11:19 +0000 (09:11 -0800)]
docs/gallium: Explain that MSAA transfer_map must be supported.

It's called this way in various drivers, and is an established part of the
transfer_map interface.

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

21 months agoci: Fix VK driver setup for HWCI_START_*.
Emma Anholt [Wed, 4 Jan 2023 22:53:48 +0000 (14:53 -0800)]
ci: Fix VK driver setup for HWCI_START_*.

Review feedback requested a change that was incorrect, causing Xorg to
start to fail, but I forgot to retest the manual -full jobs that relied on
it.

Fixes: 99a6f2a1864f ("ci: Set the path to the VK drivers during HWCI_START_XORG/WESTON.")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20523>

21 months agoanv,hasvk: move the null check into the function call and drop null check copies
Rohan Garg [Wed, 7 Dec 2022 16:23:03 +0000 (17:23 +0100)]
anv,hasvk: move the null check into the function call and drop null check copies

Signed-off-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20104>

21 months agoanv: Drop useless FIXME
Rohan Garg [Wed, 7 Dec 2022 12:25:03 +0000 (13:25 +0100)]
anv: Drop useless FIXME

Signed-off-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20104>

21 months agoanv,hasvk: drop unused function
Rohan Garg [Fri, 2 Dec 2022 10:03:45 +0000 (15:33 +0530)]
anv,hasvk: drop unused function

align_i32 is not used anywhere

Signed-off-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20104>

21 months agoanv,hasvk: migrate to ROUND_DOWN_TO from util
Rohan Garg [Fri, 2 Dec 2022 09:46:11 +0000 (15:16 +0530)]
anv,hasvk: migrate to ROUND_DOWN_TO from util

Signed-off-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20104>

21 months agoanv,hasvk: migrate to u_minify from util
Rohan Garg [Fri, 2 Dec 2022 09:35:54 +0000 (15:05 +0530)]
anv,hasvk: migrate to u_minify from util

Signed-off-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20104>

21 months agoanv: migrate anv_minify to use u_minify
Rohan Garg [Fri, 2 Dec 2022 09:26:59 +0000 (14:56 +0530)]
anv: migrate anv_minify to use u_minify

Signed-off-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20104>

21 months agoanv,hasvk: migrate to align64 from util
Rohan Garg [Fri, 2 Dec 2022 09:07:31 +0000 (14:37 +0530)]
anv,hasvk: migrate to align64 from util

Signed-off-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20104>

21 months agoanv,hasvk: migrate align32 to the right functions from util
Rohan Garg [Thu, 1 Dec 2022 19:14:57 +0000 (00:44 +0530)]
anv,hasvk: migrate align32 to the right functions from util

Signed-off-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20104>

21 months agoanv,hasvk: Use the inbuilt macro from src/util for clamping int64_t
Rohan Garg [Thu, 1 Dec 2022 14:26:37 +0000 (19:56 +0530)]
anv,hasvk: Use the inbuilt macro from src/util for clamping int64_t

Signed-off-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20104>

21 months agoanv: constify variables and use early returns
Rohan Garg [Wed, 14 Dec 2022 12:07:54 +0000 (13:07 +0100)]
anv: constify variables and use early returns

Signed-off-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20104>

21 months agoci/linker: update mold to 1.9
David Heidelberg [Fri, 30 Dec 2022 12:37:59 +0000 (13:37 +0100)]
ci/linker: update mold to 1.9

Bump needed for s390x fix with `-gsplit-dwarf` and `--gdb-index`.
See the https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20435
for more details.

I also switched from make to cmake (make is unsupported now).

Additionally disabled build testing and enabled LTO build for Mold.

Reviewed-by: Eric Engestrom <eric@igalia.com>
Signed-off-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20546>

21 months agoaco/gfx11: update s_code_end padding
Rhys Perry [Thu, 5 Jan 2023 15:44:09 +0000 (15:44 +0000)]
aco/gfx11: update s_code_end padding

Match ac_rtld_open().

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Cc: 22.3 <mesa-stable>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20536>

21 months agomeson: add missing dependency
Eric Engestrom [Thu, 5 Jan 2023 10:56:24 +0000 (10:56 +0000)]
meson: add missing dependency

Now that renderonly.h includes util/simple_mtx.h, which itself includes
valgrind.h, dep_valgrind is required by any module that includes
renderonly.h.

    In file included from ../src/gallium/auxiliary/renderonly/renderonly.h:33,
                     from ../src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c:39:
    ../src/util/simple_mtx.h:34:12: fatal error: valgrind.h: No such file or directory
       34 | #  include <valgrind.h>
          |            ^~~~~~~~~~~~
    compilation terminated.

dep_valgrind is part of idep_mesautil, which should be used instead of
copying the list of deps for each util header included (which would
have to be updated every time a util header changes its own includes),
so let's add idep_mesautil everywhere that includes renderonly.h.

Fixes: ad4d7ca8332488be8a75 ("kmsro: Fix renderonly_scanout BO aliasing")
Tested-by: Asahi Lina <lina@asahilina.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20530>

21 months agoci: enable wayland platform in more debian builds
Erico Nunes [Tue, 27 Dec 2022 16:50:01 +0000 (17:50 +0100)]
ci: enable wayland platform in more debian builds

CI has recently gained coverage of wayland platform in EGL tests, but
some CI mesa builds such as arm builds currently don't enable the
wayland platform.
Enable it so test applications can properly initialize EGL with a
wayland platform.

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Reviewed-by: David Heidelberg <david.heidelberg@collabora.com>
Acked-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20480>

21 months agoradv/ci: run Zink testing on VanGogh
Martin Roukala (né Peres) [Fri, 25 Nov 2022 13:37:23 +0000 (15:37 +0200)]
radv/ci: run Zink testing on VanGogh

Running zink testing on RDNA2 hardware has been on our TODO list for
a while. While we don't have enough NAVI21 to test everything, we could
make use of the VanGogh APUs to do our Zink testing.

We will enable that job for pre-merge after a week or so of testing.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Acked-by: David Heidelberg <david.heidelberg@collabora.com>
Signed-off-by: Martin Roukala (né Peres) <martin.roukala@mupuf.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20006>

21 months agozink/ci: rename zink-radv-* to zink-radv-navi10-*
Martin Roukala (né Peres) [Fri, 25 Nov 2022 13:25:23 +0000 (15:25 +0200)]
zink/ci: rename zink-radv-* to zink-radv-navi10-*

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Acked-by: David Heidelberg <david.heidelberg@collabora.com>
Signed-off-by: Martin Roukala (né Peres) <martin.roukala@mupuf.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20006>

21 months agoradv/ci: merge all the zink jobs into a single one
Martin Roukala (né Peres) [Fri, 25 Nov 2022 13:20:03 +0000 (15:20 +0200)]
radv/ci: merge all the zink jobs into a single one

Since GL CTS, GLES CTS, and Piglit executions are very fast compared
to the machine setup time, it makes sense to combine them into one
boot.

The execution will run until the first test suite fails, or we are
done with the execution.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Acked-by: David Heidelberg <david.heidelberg@collabora.com>
Signed-off-by: Martin Roukala (né Peres) <martin.roukala@mupuf.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20006>

21 months agoci/venus: disable for now
David Heidelberg [Fri, 6 Jan 2023 13:09:49 +0000 (14:09 +0100)]
ci/venus: disable for now

It flakes too much. Until it gets sorted out, we disable it.

Signed-off-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20547>

21 months agovenus: Avoid to copy the descriptor sets when it is not required
Corentin Noël [Thu, 1 Dec 2022 10:25:41 +0000 (11:25 +0100)]
venus: Avoid to copy the descriptor sets when it is not required

Allows to reduce the amount of allocations when the VkWriteDescriptorSet is
already sanitized.

Signed-off-by: Corentin Noël <corentin.noel@collabora.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20095>

21 months agoradv: fix returning VK_PIPELINE_COMPILE_REQUIRED from library
Samuel Pitoiset [Thu, 5 Jan 2023 11:42:50 +0000 (12:42 +0100)]
radv: fix returning VK_PIPELINE_COMPILE_REQUIRED from library

When VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED is set by
the application, the driver should return VK_COMPILE_REQUIRED but this
was broken for GPL (it returned VK_SUCCESS instead). Also, objects
shouldn't be destroyed when creating the library failed because it's
already handled in radv_graphics_lib_pipeline_create().

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

21 months agoradeonsi: Fix amdgpu-color-export with prologues
Michel Dänzer [Thu, 5 Jan 2023 10:13:28 +0000 (11:13 +0100)]
radeonsi: Fix amdgpu-color-export with prologues

Polygon stippling is handled in the prologue, amdgpu-color-export needs
to be set for that.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8010
Fixes: 1825ad134b17 ("radeonsi,radv/llvm: fix amdgpu-color/depth-export with epilogs")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20531>

21 months agoradv: stop dirtying INDEX_BUFFER for non-indexed draws
Samuel Pitoiset [Wed, 4 Jan 2023 15:10:14 +0000 (16:10 +0100)]
radv: stop dirtying INDEX_BUFFER for non-indexed draws

radv_emit_index_buffer() used to emit VGT_INDEX_TYPE but since I
implemented the DISABLE_INSTANCE_PACKING workaround, it's emitted
in radv_emit_draw_registers().

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

21 months agoradv: flush push descriptors at bind time
Samuel Pitoiset [Tue, 3 Jan 2023 16:36:50 +0000 (17:36 +0100)]
radv: flush push descriptors at bind time

This doesn't need to be flushed at draw time.

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

21 months agoradv: remove set but unused radv_cmd_state::index_{buffer,offset}
Samuel Pitoiset [Wed, 4 Jan 2023 14:58:54 +0000 (15:58 +0100)]
radv: remove set but unused radv_cmd_state::index_{buffer,offset}

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

21 months agoradv: remove unused pipeline parameter from radv_emit_binning_state()
Samuel Pitoiset [Tue, 3 Jan 2023 15:34:01 +0000 (16:34 +0100)]
radv: remove unused pipeline parameter from radv_emit_binning_state()

It's no longer needed because everything is dynamic.

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

21 months agoradv: remove enabling out-of-order rasterization internally
Samuel Pitoiset [Wed, 4 Jan 2023 11:21:50 +0000 (12:21 +0100)]
radv: remove enabling out-of-order rasterization internally

This was added ~4 years ago for very little performance improvements
(likely < 1%) and this is only supported on GFX8 and GFX9.

Since, the number of dynamic states increased and this is likely
disabled most of the time, and given the maintainability cost, it looks
like it's time to remove it completely.

Applications can still enable it with VK_AMD_rasterization_order.

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

21 months agoisaspec: Give decode.c/h more descriptive names
Jason Ekstrand [Wed, 4 Jan 2023 19:55:47 +0000 (13:55 -0600)]
isaspec: Give decode.c/h more descriptive names

Because these are being included across subdir boundaries, the name
"decode" is potentially pretty overloaded.  Instead, prefix them with
"isaspec_".  Also, since they're both weird includes now and not really
complete files in their own right, give them a descriptive suffix.

Acked-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20525>

21 months agoisaspec: Stop depending on glue headers and out-of-folder C files
Jason Ekstrand [Wed, 4 Jan 2023 19:47:54 +0000 (13:47 -0600)]
isaspec: Stop depending on glue headers and out-of-folder C files

The way the isaspec decoder used to work was that it would generate a
header and a C file, each with ISA-specific stuff in it. Then that would
get built together with a stand-alone decode.c file which lives in the
isaspec folder, not the driver's folder.  In order for decode.c to find
the ISA-specific headers, it would also generate a glue header which had
to be named isaspec-isa.h.  This effectively meant that you can't have
multiple isaspec definitions in the same folder.

To solve this, we make do it the other way around and make the generated
header and C files include the stand-alone files.  This is a bit awkward
because it means including a C file from another C file but it's better
for the build system.

Acked-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20525>

21 months agoisaspec: Use argparse
Jason Ekstrand [Wed, 4 Jan 2023 19:19:46 +0000 (13:19 -0600)]
isaspec: Use argparse

This also cleans up some of our python script execution conventions and
handles mako errors better. Copied a bit from vk_entrypoints_gen.py.

Acked-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20525>

21 months agoisaspec: Stop using s and xml from the global namespace
Jason Ekstrand [Wed, 4 Jan 2023 19:33:20 +0000 (13:33 -0600)]
isaspec: Stop using s and xml from the global namespace

We really shouldn't rely on these being global variables.  Pass them
along instead.

Acked-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20525>

21 months agoasahi: Advertise MRT and fbfetch
Alyssa Rosenzweig [Mon, 19 Dec 2022 19:26:35 +0000 (14:26 -0500)]
asahi: Advertise MRT and fbfetch

These should both work now.

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

21 months agoagx: Lower discard to zs_emit when zs_emit used
Alyssa Rosenzweig [Tue, 27 Dec 2022 20:09:24 +0000 (15:09 -0500)]
agx: Lower discard to zs_emit when zs_emit used

It is invalid to use both sample_mask and zs_emit in the same shader. We'll need
to do something similar for sample mask writes.

Fixes Dolphin ubershaders.

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

21 months agoagx: Fix discard with MRT
Alyssa Rosenzweig [Fri, 2 Dec 2022 18:46:34 +0000 (13:46 -0500)]
agx: Fix discard with MRT

The exact semantics of sample_mask aren't quite clear to me yet, but executing
multiple sample_mask instructions seems to raise a fault :|

Fixes SuperTuxKart's advanced renderer.

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

21 months agoagx: Introduce "no_varyings" instruction
Alyssa Rosenzweig [Thu, 22 Dec 2022 02:50:38 +0000 (21:50 -0500)]
agx: Introduce "no_varyings" instruction

Must be used at the end of a vertex shader that does NOT write any varyings, has
rasterizer discard enabled, and is run only for its side effects.

The encoding looks like st_var, but I don't know what this actually *does*. I
just know that the GPU faults if this is omitted.

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

21 months agoagx: Consider "stop" a control flow instruction
Alyssa Rosenzweig [Thu, 22 Dec 2022 02:50:04 +0000 (21:50 -0500)]
agx: Consider "stop" a control flow instruction

...and therefore it needs to be after a "logical end". This means that
"after_block_logical" will do the right thing for the last block.

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

21 months agoagx: Optimize waits locally
Alyssa Rosenzweig [Tue, 20 Dec 2022 16:12:24 +0000 (11:12 -0500)]
agx: Optimize waits locally

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

21 months agoagx: Remove logical_end later
Alyssa Rosenzweig [Tue, 20 Dec 2022 19:52:20 +0000 (14:52 -0500)]
agx: Remove logical_end later

So we can use after_block_logical in the wait insertion pass.

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

21 months agoagx: Validate widths of vectors
Alyssa Rosenzweig [Tue, 20 Dec 2022 16:16:55 +0000 (11:16 -0500)]
agx: Validate widths of vectors

Check the invariant that the widths of vectors in the IR are consistent, by
checking that write registers and read registers match up between the writers
and readers respectively.

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

21 months agoagx: Add agx_read_registers helper
Alyssa Rosenzweig [Tue, 20 Dec 2022 16:12:01 +0000 (11:12 -0500)]
agx: Add agx_read_registers helper

To be used for inserting waits post-RA.

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

21 months agoagx: Compact st_tile argument per mask
Alyssa Rosenzweig [Tue, 20 Dec 2022 19:04:31 +0000 (14:04 -0500)]
agx: Compact st_tile argument per mask

Otherwise the number of read registers won't match the vector we input, which
will trigger validation errors.

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

21 months agoagx: Insert waits post-RA
Alyssa Rosenzweig [Tue, 20 Dec 2022 03:40:26 +0000 (22:40 -0500)]
agx: Insert waits post-RA

This is the first step towards reducing stalling.

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

21 months agoagx: Pack texture scoreboard slots
Alyssa Rosenzweig [Tue, 20 Dec 2022 03:39:53 +0000 (22:39 -0500)]
agx: Pack texture scoreboard slots

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

21 months agoagx: Pack wait instructions
Alyssa Rosenzweig [Tue, 20 Dec 2022 03:39:37 +0000 (22:39 -0500)]
agx: Pack wait instructions

For different scoreboard slots.

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

21 months agoagx: Remove unused idiv const func
Alyssa Rosenzweig [Tue, 20 Dec 2022 19:42:38 +0000 (14:42 -0500)]
agx: Remove unused idiv const func

This was used for instancing, but has been unused since 8dcf7648f15 ("agx: Lower VBOs in NIR")

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

21 months agoagx: Use metadata for VS varying linking
Alyssa Rosenzweig [Sun, 18 Dec 2022 17:01:15 +0000 (12:01 -0500)]
agx: Use metadata for VS varying linking

Rather than variables. This gets rid of all backend nir_variable use.

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

21 months agoagx: Don't use nir_variable when gathering flat varyings
Alyssa Rosenzweig [Sun, 18 Dec 2022 16:59:19 +0000 (11:59 -0500)]
agx: Don't use nir_variable when gathering flat varyings

Walk the IR instead. This happens when preprocessing so it doesn't really
matter, but it complicates the nir_variable audit.

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

21 months agoagx: Hash agx_instr faster
Alyssa Rosenzweig [Sun, 18 Dec 2022 16:43:09 +0000 (11:43 -0500)]
agx: Hash agx_instr faster

Prior to this change, agx_opt_cse is our most expensive backend pass, due to the
time spent hashing instructions. hash_instr was calling into XXH32 a massive
number of times, often to hash only a single bit. It's much faster to hash
entire blocks of memory at a time. Optimize to do just that.

With this change, agx_opt_cse is now cheaper than instruction selection as
it should be.

No shader-db changes (except CPU time decrease).

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

21 months agoagx: Use texture write mask
Alyssa Rosenzweig [Tue, 20 Dec 2022 04:27:30 +0000 (23:27 -0500)]
agx: Use texture write mask

We do need to use undefs instead of zeroes in this internal collect. While this
vector gets copypropped out, it'd cause us to fail compilation if noopt is on.
Fix that.

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

21 months agoagx: Note that textures clobber even masked
Alyssa Rosenzweig [Tue, 20 Dec 2022 04:42:09 +0000 (23:42 -0500)]
agx: Note that textures clobber even masked

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

21 months agoagx: Plumb in store instruction
Alyssa Rosenzweig [Sat, 3 Dec 2022 02:41:22 +0000 (21:41 -0500)]
agx: Plumb in store instruction

This will be used for compute kernels (and transform feedback) in the (near)
future. For now, let's get the opcode plumbed in the backend to reduce some of
the rebase pain.

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

21 months agoasahi/lower_tilebuffer: Avoid loading sample mask
Alyssa Rosenzweig [Sun, 18 Dec 2022 04:53:36 +0000 (23:53 -0500)]
asahi/lower_tilebuffer: Avoid loading sample mask

If a render target isn't written to, we don't use the sample mask. Avoid
generating the intermediate instructions, common with gl_FragColor. It will get
DCE'd, but this means less work for DCE, which should help for shader jank since
this pass gets called per-variant.

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

21 months agoasahi: Remove outdated comment
Alyssa Rosenzweig [Wed, 21 Dec 2022 17:30:15 +0000 (12:30 -0500)]
asahi: Remove outdated comment

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

21 months agoasahi: Implement linear 2D array textures
Alyssa Rosenzweig [Wed, 21 Dec 2022 02:00:10 +0000 (21:00 -0500)]
asahi: Implement linear 2D array textures

These are useful for layered staging resources. Tested by forcing linear
textures and running dEQP-GLES3.functional.texture.format.sized.2d_array.*

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

21 months agoasahi: Correct acceleration_buffer for layered images
Alyssa Rosenzweig [Wed, 21 Dec 2022 17:13:10 +0000 (12:13 -0500)]
asahi: Correct acceleration_buffer for layered images

The old calculation was wrong if layer != 0.

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

21 months agoasahi: Add XML for linear 2D arrays
Alyssa Rosenzweig [Wed, 21 Dec 2022 01:59:26 +0000 (20:59 -0500)]
asahi: Add XML for linear 2D arrays

These look a bit like compressed images, and elucidate one of the common fields.

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

21 months agoasahi: Add XML required for vertex shader side effects
Alyssa Rosenzweig [Thu, 22 Dec 2022 03:00:56 +0000 (22:00 -0500)]
asahi: Add XML required for vertex shader side effects

Basically for rasterizer discard. We'll use these in a moment to implement
transform feedback.

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

21 months agoasahi: Dump uniforms when decoding
Alyssa Rosenzweig [Tue, 20 Dec 2022 19:22:00 +0000 (14:22 -0500)]
asahi: Dump uniforms when decoding

These often have addresses in them.

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

21 months agoasahi: Check box implement NV_conditional_render
Alyssa Rosenzweig [Mon, 19 Dec 2022 19:41:36 +0000 (14:41 -0500)]
asahi: Check box implement NV_conditional_render

Use the freedreno lowering. It'll be slow but I don't know of any apps that
actually use this and it's required for GL 3.0.

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

21 months agoail: Add compression_layer_stride_B field
Alyssa Rosenzweig [Wed, 21 Dec 2022 17:12:47 +0000 (12:12 -0500)]
ail: Add compression_layer_stride_B field

So we can index into the compression buffer of layered images.

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

21 months agoail: Support linear 2D arrays
Alyssa Rosenzweig [Wed, 21 Dec 2022 01:57:21 +0000 (20:57 -0500)]
ail: Support linear 2D arrays

These are straightforward.

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

21 months agodocs/features: Add more missed asahi
Alyssa Rosenzweig [Mon, 19 Dec 2022 19:30:36 +0000 (14:30 -0500)]
docs/features: Add more missed asahi

Should already be there.

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

21 months agofreedreno/decode: Deal with suballocated buffers
Rob Clark [Tue, 3 Jan 2023 15:49:58 +0000 (07:49 -0800)]
freedreno/decode: Deal with suballocated buffers

We can end up logging both the buffer that the toplevel cmdstream is
allocated, as well as the sub-allocated part of that buffer.  Possibly
the kernel could do better about this, but to avoid undecodeable
cmdstream dumps and devcores, detect this case and deal with it.

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

21 months agofreedreno: Limit max draws per batch
Rob Clark [Mon, 2 Jan 2023 17:19:49 +0000 (09:19 -0800)]
freedreno: Limit max draws per batch

Mostly so that piglit drawoverhead doesn't OoM itself with absurd # of
draws.

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