platform/upstream/mesa.git
14 months agofrontend/nine: initialize force_color_in_centroid
Axel Davy [Sun, 23 Apr 2023 11:25:43 +0000 (13:25 +0200)]
frontend/nine: initialize force_color_in_centroid

The first version of the shader didn't have proper
force_color_in_centroid field set.

That won't make much a difference (centroid is very
similar to no centroid) but it is still better.

Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22644>

14 months agofrontend/nine: Get rid of INTERPOLATE_COLOR
Axel Davy [Fri, 29 Jul 2022 16:02:26 +0000 (18:02 +0200)]
frontend/nine: Get rid of INTERPOLATE_COLOR

Some drivers don't handle it, and those who do replace it anyway
depending on the rasterizer setting. Keep the rasterizer setting
but replace the interpolation flag accordingly.

Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22644>

14 months agofrontend/nine: Enforce legacy pow behaviour
Axel Davy [Thu, 28 Jul 2022 21:35:07 +0000 (23:35 +0200)]
frontend/nine: Enforce legacy pow behaviour

Gallium drivers used to implement the legacy behaviour.
It's not the case of all recent drivers, so implement
the legacy behaviour in nine.

Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22644>

14 months agofrontend/nine: Print warning incomplete position_t support
Axel Davy [Thu, 28 Jul 2022 19:59:06 +0000 (21:59 +0200)]
frontend/nine: Print warning incomplete position_t support

What would be missing for position_t to work in
vs programmable shaders when VS_WINDOW_SPACE_POSITION
is unavailable is to apply the inverse viewport transformation
similarly to what is done for ff vs.

Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22644>

14 months agofrontend/nine: Improve VS_WINDOW_SPACE_POSITION fallback
Axel Davy [Thu, 28 Jul 2022 19:31:25 +0000 (21:31 +0200)]
frontend/nine: Improve VS_WINDOW_SPACE_POSITION fallback

Previously we would implement position_t by
applying the inverse of the viewport, and
advertising clipping was going to occur with
the cap CLIPTLVERTS.

However when the cap is advertised, clipping
is supposed to be disabled via sw emulation
when D3DRS_CLIPPING is set to FALSE.

Since we don't support that either, instead take the
approach of disabling at least depth clipping, and
not advertising the cap.

Ideally, clipping should be totally disabled.

Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22644>

14 months agofrontend/nine: Implement backup support for pointsize
Axel Davy [Thu, 21 Jul 2022 16:45:25 +0000 (18:45 +0200)]
frontend/nine: Implement backup support for pointsize

Improve support for drivers that don't support the
pointsize states.

Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22644>

14 months agofrontend/nine: Implement alpha test backup support
Axel Davy [Thu, 21 Jul 2022 15:14:45 +0000 (17:14 +0200)]
frontend/nine: Implement alpha test backup support

Implement alpha test emulation for drivers without support.

Driver support is still a preferred option, as driver
can reuse the compilation of the main core of the shader
to generate shader variants.

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

Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22644>

14 months agofrontend/nine: Drop max_ps_const_f
Axel Davy [Wed, 20 Jul 2022 21:56:14 +0000 (23:56 +0200)]
frontend/nine: Drop max_ps_const_f

Replace max_ps_const_f with a constant.
In practice it already was always the
same value no matter the hw.

Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22644>

14 months agozink: don't init mutable for swapchain src during blit
Mike Blumenkrantz [Mon, 8 May 2023 17:55:45 +0000 (13:55 -0400)]
zink: don't init mutable for swapchain src during blit

fixes #8993

cc: 23.1 <mesa-stable>

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

14 months agozink: don't init mutable resource bit for swapchain images
Mike Blumenkrantz [Fri, 5 May 2023 16:06:05 +0000 (12:06 -0400)]
zink: don't init mutable resource bit for swapchain images

these are either already mutable (for srgb) or invalid usage

fixes #8970

cc: mesa-stable

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

14 months agointel: enable protected context creation along with engines
Lionel Landwerlin [Mon, 8 May 2023 06:15:02 +0000 (09:15 +0300)]
intel: enable protected context creation along with engines

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

14 months agotu: Expose VK_EXT_fragment_density_map
Connor Abbott [Fri, 25 Nov 2022 13:12:58 +0000 (14:12 +0100)]
tu: Expose VK_EXT_fragment_density_map

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

14 months agotu: Don't allow importing/exporting subsampled images with modifiers
Connor Abbott [Tue, 13 Dec 2022 18:28:17 +0000 (19:28 +0100)]
tu: Don't allow importing/exporting subsampled images with modifiers

Right now subsampled images are the same as non-subsampled images, this
will change when we actually implement them which will be an ABI break.
Disallow importing/exporting them with modifiers until that's stabilized
to force users to match the driver UUID.

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

14 months agotu/autotune: Always prefer GMEM with fragment density maps
Connor Abbott [Fri, 25 Nov 2022 15:48:17 +0000 (16:48 +0100)]
tu/autotune: Always prefer GMEM with fragment density maps

If we encounter an app doing bad things where we want sysmem, we can fix
that later, but this seems like the right thing to do initially.

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

14 months agotu, ir3: Handle FDM shader builtins
Connor Abbott [Fri, 25 Nov 2022 13:11:12 +0000 (14:11 +0100)]
tu, ir3: Handle FDM shader builtins

Also, add the necessary transform to fixup gl_FragCoord.xy.

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

14 months agonir, ir3: Add option to use unscaled FragCoord for input attachments
Connor Abbott [Tue, 13 Dec 2022 17:09:28 +0000 (18:09 +0100)]
nir, ir3: Add option to use unscaled FragCoord for input attachments

When rendering a scaled tile, we need to use the original, hardware
FragCoord when accessing input attachments that are on-tile (i.e. were
rendered to in a previous subpass) because they are also scaled in the
same way that FragCoord is scaled. For input attachments that aren't
already on-tile, however, we need to use the fixed gl_FragCoord. Add a
new intrinsic and a bitfield of input attachments which should use it.

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

14 months agotu: Implement FDM scaled loads/stores
Connor Abbott [Mon, 21 Nov 2022 13:54:36 +0000 (14:54 +0100)]
tu: Implement FDM scaled loads/stores

In addition to scaling the rendering itself, we need to scale
loads/stores except when using subsampling, but subsampling isn't
implemented yet.

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

14 months agotu: Implement FDM viewport patching
Connor Abbott [Mon, 21 Nov 2022 13:52:44 +0000 (14:52 +0100)]
tu: Implement FDM viewport patching

We scale the actual rendering by patching the viewport state. This is
helped by a HW bit to make the viewport index equal to the view index,
so that we can have a different scaling per-view.

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

14 months agoir3: Record whether a shader writes gl_ViewportIndex
Connor Abbott [Mon, 21 Nov 2022 13:05:43 +0000 (14:05 +0100)]
ir3: Record whether a shader writes gl_ViewportIndex

This will be needed by turnip.

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

14 months agotu: Add core FDM patchpoint infrastructure
Connor Abbott [Mon, 21 Nov 2022 13:37:15 +0000 (14:37 +0100)]
tu: Add core FDM patchpoint infrastructure

FDM is implemented pretty much entirely inside the driver, by patching
various structures for each bin. This adds the core infrastructure to
sample the density map, compute the scaled bin sizes we will use, create
patchpoints, and apply them at the start of each bin before executing
the IB2.

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

14 months agotu/cs: Add support for CS patching
Connor Abbott [Fri, 25 Nov 2022 13:53:05 +0000 (14:53 +0100)]
tu/cs: Add support for CS patching

In order to patch the command stream on the gpu, we need two features:

1. The ability to use a read-write BO instead of a read-only one, when
   patching might be performed.
2. The ability to get the iova of the current position after reserving
   some number of dwords, even with externally-allocated command
   streams.

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

14 months agotu: Implement sampling the fragment density map
Connor Abbott [Mon, 21 Nov 2022 13:34:31 +0000 (14:34 +0100)]
tu: Implement sampling the fragment density map

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

14 months agotu: Parse fragment density map attachment info
Connor Abbott [Mon, 21 Nov 2022 13:09:17 +0000 (14:09 +0100)]
tu: Parse fragment density map attachment info

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

14 months agofreedreno/a6xx: Document per-view viewport in GRAS_SU_CNTL
Connor Abbott [Mon, 21 Nov 2022 11:21:10 +0000 (12:21 +0100)]
freedreno/a6xx: Document per-view viewport in GRAS_SU_CNTL

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

14 months agotu: Make dynamic viewport and scissor count more accurate
Connor Abbott [Fri, 18 Nov 2022 20:28:08 +0000 (21:28 +0100)]
tu: Make dynamic viewport and scissor count more accurate

Because we delay emitting them until we know the pipeline, we can track
the actual count instead of taking the max.

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

14 months agotu: Merge RB_DEPTH_CNTL and RB_STENCIL_CONTROL drawstates
Connor Abbott [Mon, 21 Nov 2022 17:36:19 +0000 (18:36 +0100)]
tu: Merge RB_DEPTH_CNTL and RB_STENCIL_CONTROL drawstates

We're again running out of draw states, and this matches what gallium
does.

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

14 months agotu: Precompute maximum views across all subpasses
Connor Abbott [Thu, 17 Nov 2022 12:24:30 +0000 (13:24 +0100)]
tu: Precompute maximum views across all subpasses

We'll need this to know how many viewports to create.

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

14 months agotu: Use dirty bit for scissor state
Connor Abbott [Thu, 17 Nov 2022 11:08:37 +0000 (12:08 +0100)]
tu: Use dirty bit for scissor state

This will make patching it on-demand easier.

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

14 months agotu: Add 3D GMEM load path
Connor Abbott [Mon, 14 Nov 2022 14:50:01 +0000 (15:50 +0100)]
tu: Add 3D GMEM load path

This is similar to old gens which couldn't support loading from GMEM
automatically. It will be needed for loads with a fragment density map,
because we need to scale the image when loading to GMEM.

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

14 months agofreedreno/fdl: Expose view offset
Connor Abbott [Wed, 16 Nov 2022 15:12:33 +0000 (16:12 +0100)]
freedreno/fdl: Expose view offset

Will be used by CPU sampling.

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

14 months agofreedreno/fdl: Don't pre-shift image view pitch
Connor Abbott [Wed, 16 Nov 2022 15:02:14 +0000 (16:02 +0100)]
freedreno/fdl: Don't pre-shift image view pitch

We'll need the unshifted pitch for doing CPU reads.

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

14 months agotu: Don't pre-shift depth and stencil pitch
Connor Abbott [Mon, 14 Nov 2022 14:45:54 +0000 (15:45 +0100)]
tu: Don't pre-shift depth and stencil pitch

Different uses in various registers and the texture descriptor have
different shifts, and we already had a few ugly workarounds to handle
this. Remove the foot-gun by specifying it in bytes and letting users
handle the shift themselves using the correct macro.

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

14 months agotu: Don't override depth for GMEM
Connor Abbott [Thu, 24 Nov 2022 16:19:09 +0000 (17:19 +0100)]
tu: Don't override depth for GMEM

Otherwise accesses to non-0 views of input attachments may be considered
out-of-bounds and return 0. This should've been removed when enabling
multiview for GMEM, not sure how it was missed.

Fixes: def56b531c8 ("tu: Support GMEM with layered rendering and multiview")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20304>

14 months agonouveau/nir: Set isSigned on all atomic_imax/imin
M Henning [Sat, 6 May 2023 18:30:20 +0000 (14:30 -0400)]
nouveau/nir: Set isSigned on all atomic_imax/imin

Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22889>

14 months agoaux/draw: add guardband clipping for lines
Mike Blumenkrantz [Tue, 28 Jun 2022 14:49:14 +0000 (10:49 -0400)]
aux/draw: add guardband clipping for lines

to comply with ES2+ line clipping rules, guardband clipping should be
used so that the rasterizer will clip lines without using clip planes

fixes (llvmpipe):
dEQP-GLES*.functional.clipping.line.wide_line_clip_viewport_center
dEQP-GLES*.functional.clipping.line.wide_line_clip_viewport_corner

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17284>

14 months agoaux/draw: check for lines when setting clipping-mode
Erik Faye-Lund [Wed, 3 May 2023 17:24:58 +0000 (19:24 +0200)]
aux/draw: check for lines when setting clipping-mode

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17284>

14 months agoaux/draw: guard_band_points_xy -> guard_band_points_lines_xy
Mike Blumenkrantz [Tue, 28 Jun 2022 14:47:01 +0000 (10:47 -0400)]
aux/draw: guard_band_points_xy -> guard_band_points_lines_xy

just a rename, no functional changes

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17284>

14 months agogallium: pipe_rasterizer_state::point_tri_clip -> point_line_tri_clip
Mike Blumenkrantz [Tue, 28 Jun 2022 14:45:52 +0000 (10:45 -0400)]
gallium: pipe_rasterizer_state::point_tri_clip -> point_line_tri_clip

this is just a rename, no functional changes

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17284>

14 months agoci: uprev virglrenderer to drop venus release patches
Yiwei Zhang [Mon, 8 May 2023 03:08:43 +0000 (20:08 -0700)]
ci: uprev virglrenderer to drop venus release patches

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

14 months agoradv: Fix vk_instance_init vk_error instance use-after-free
Vitaliy Triang3l Kuzmin [Sat, 6 May 2023 19:59:13 +0000 (22:59 +0300)]
radv: Fix vk_instance_init vk_error instance use-after-free

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Signed-off-by: Vitaliy Triang3l Kuzmin <triang3l@yandex.ru>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22887>

14 months agolavapipe: Fix vk_instance_init vk_error instance use-after-free
Vitaliy Triang3l Kuzmin [Sat, 6 May 2023 19:57:46 +0000 (22:57 +0300)]
lavapipe: Fix vk_instance_init vk_error instance use-after-free

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Signed-off-by: Vitaliy Triang3l Kuzmin <triang3l@yandex.ru>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22887>

14 months agor600/sfn: Fix iterator use
Gert Wollny [Mon, 8 May 2023 11:24:42 +0000 (13:24 +0200)]
r600/sfn: Fix iterator use

Reported by Coverity 1529462

Fixes:  e57643cf5488fc7ca2619f62997527b1f546cd38
    r600/sfn: Add handling for R600 indirect access alias

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

14 months agoradeonsi: do AMD_DEBUG=nodisplaydcc differently to also remove modifiers
Marek Olšák [Sat, 29 Apr 2023 08:52:31 +0000 (04:52 -0400)]
radeonsi: do AMD_DEBUG=nodisplaydcc differently to also remove modifiers

Only modifiers with DCC retiling are removed for now.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22771>

14 months agoradeon: add radeon_info parameter into radeon_winsys::surface_init
Marek Olšák [Sat, 29 Apr 2023 08:50:31 +0000 (04:50 -0400)]
radeon: add radeon_info parameter into radeon_winsys::surface_init

to allow radeonsi to change radeon_info. The next commit will rely on it.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22771>

14 months agoac/gpu_info: disable display DCC on Raphael and Mendocino to improve power usage
Marek Olšák [Sat, 29 Apr 2023 08:58:41 +0000 (04:58 -0400)]
ac/gpu_info: disable display DCC on Raphael and Mendocino to improve power usage

Below is the summary from the power validation.. "it looks like the only
workload where I see savings from DCC is PLT and it is only about 65mW
which is just run to run variation. For Idle I am seeing ~280mW increase
in power, ~200mW increase for power_VideoCall, and ~80mW increase for VP"

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22771>

14 months agoac/surface: don't expose modifiers with DCC retiling if radeon_info forbids it
Marek Olšák [Sat, 29 Apr 2023 08:43:49 +0000 (04:43 -0400)]
ac/surface: don't expose modifiers with DCC retiling if radeon_info forbids it

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22771>

14 months agoradv: remove ac_surf_info from radv_image
Samuel Pitoiset [Wed, 3 May 2023 07:18:54 +0000 (09:18 +0200)]
radv: remove ac_surf_info from radv_image

Introduce a helper to convert vk_image info to ac_surf_info instead.

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

14 months agoradv: use vk_image::extent instead of radv_image::info::{width,height,depth}
Samuel Pitoiset [Wed, 3 May 2023 06:36:54 +0000 (08:36 +0200)]
radv: use vk_image::extent instead of radv_image::info::{width,height,depth}

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

14 months agoradv: use vk_image::samples instead of radv_image::info::samples
Samuel Pitoiset [Wed, 3 May 2023 06:28:44 +0000 (08:28 +0200)]
radv: use vk_image::samples instead of radv_image::info::samples

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

14 months agoradv: use vk_image::samples instead of radv_image::info::storage_samples
Samuel Pitoiset [Wed, 3 May 2023 06:25:02 +0000 (08:25 +0200)]
radv: use vk_image::samples instead of radv_image::info::storage_samples

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

14 months agoradv: use vk_image::array_layers instead of radv_image::info::array_size
Samuel Pitoiset [Wed, 3 May 2023 06:21:04 +0000 (08:21 +0200)]
radv: use vk_image::array_layers instead of radv_image::info::array_size

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

14 months agoradv: use vk_image::mip_levels instead of radv_image::info::levels
Samuel Pitoiset [Wed, 3 May 2023 06:17:06 +0000 (08:17 +0200)]
radv: use vk_image::mip_levels instead of radv_image::info::levels

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

14 months agoradv: disable RB+ blend optimizations on GFX11 when a2c is enabled
Samuel Pitoiset [Thu, 4 May 2023 09:52:58 +0000 (11:52 +0200)]
radv: disable RB+ blend optimizations on GFX11 when a2c is enabled

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

14 months agoCorrects log print to produce hexadecimal base output
Christopher Snowhill [Sat, 6 May 2023 04:45:45 +0000 (21:45 -0700)]
Corrects log print to produce hexadecimal base output

Matching the original %016lx, and the "0x" prefix which is still
in the format string.

Fixes: 53b77a8102cd ("anv: remove 48bit address space checks")

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22882>

14 months agointel/fs: reduce register usage for relocated constants
Lionel Landwerlin [Fri, 5 May 2023 10:12:25 +0000 (13:12 +0300)]
intel/fs: reduce register usage for relocated constants

Commit bb8e31b7ed ("anv: avoid hardcoding instruction VA constant in
shaders") had a slight negative impact on shaders (Red Dead Redemption
2 in particular). Dropping a few shaders from SIMD32 to SIMD16.

With this change, it brings back all the dropped SIMD32 shaders.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Ivan Briano <ivan.briano@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22872>

14 months agoasahi: Fix batch writer_syncobj cleanup
Asahi Lina [Wed, 3 May 2023 06:41:37 +0000 (15:41 +0900)]
asahi: Fix batch writer_syncobj cleanup

When an ACTIVE batch takes over the active writer role from a SUBMITTED
batch, the written BO has the syncobj from the latter even though the
writer is the former. This is correct and an intended state, but it
means that then we can't gate the syncobj cleanup in agx_batch_cleanup
on being the active writer, since the SUBMITTED batch won't be.

Fixes: asahi/mesa#18

Signed-off-by: Asahi Lina <lina@asahilina.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22891>

14 months agoasahi: Assert that freed BOs have no pending writers
Asahi Lina [Wed, 3 May 2023 06:40:33 +0000 (15:40 +0900)]
asahi: Assert that freed BOs have no pending writers

This is just a sanity check, I haven't actually hit this case but if we
ever do something is very broken (e.g. BO refcounting bug).

Signed-off-by: Asahi Lina <lina@asahilina.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22891>

14 months agoasahi: Fix depth load/store flags
Alyssa Rosenzweig [Wed, 26 Apr 2023 19:26:37 +0000 (15:26 -0400)]
asahi: Fix depth load/store flags

If depth_writemask is set, we need to write depth regardless of whether we run
the depth test, to write out the fixed-function fragment depth. This will matter
when we start honouring these flags.

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

14 months agoasahi: Clear batch->resolve on agx_batch_init
Asahi Lina [Wed, 3 May 2023 12:48:21 +0000 (21:48 +0900)]
asahi: Clear batch->resolve on agx_batch_init

This has been broken forever, but it was only noticed with the ZS
load/store optimizations in the subsequent commits.

Signed-off-by: Asahi Lina <lina@asahilina.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22891>

14 months agoasahi: Implement transform feedback
Alyssa Rosenzweig [Mon, 20 Mar 2023 02:12:09 +0000 (22:12 -0400)]
asahi: Implement transform feedback

This code was originally based on the Panfrost implementation, but has been
improved in a number of ways.

1. Transform feedback programs are dispatched generically with Gallium calls,
   rather than emitting something hardware-specific. This is cleaner and
   portable to future GPUs.

2. Transform feedback with indexed draws is now fixed, by lowering to an index
   buffer pull.

3. Transform feedback with buffer overflows is now fixed, by correctly
   bounds checking in transform feedback programs.

4. Transform feedback with strips/fans/loops are fixed, by correctly
   tessellating to the underlying primitives as required by OpenGL.

5. Transform feedback with QUADS is fixed, by tessellating to triangles as
   required by OpenGL.

That said, the code is still not in its final form.

1. It still does not support indirect draws. This will require a substantial
   overhaul to do tracking on the GPU instead of the CPU. Currently we force
   unroll indirect draws (slow but kosher in GL, treif in Vulkan). This isn't
   hard to solve but I'm not going to duplicate the code until the algorithms
   are otherwise complete because it's a lot easier to hack on the CPU versions
   than the GPU versions.

2. It still does not support primitive restart. This has especially nasty
   interactions with transform feedback. Again we force unroll to non-primitive
   restart forms, again slow but kosher in GL but treif in Vulkan. This is a lot
   harder to deal with. I sketched out something really nasty in my notebook
   (hinging on efficient GPU prefix sums) but I'm not in a hurry to type this
   out.

3. There will be interactions with geometry and tessellation shaders and I don't
   think I can get the core code here future-proofed without actually bringing
   up the new shader stages.

As such, this is a hard fork of the panfrost code for now, I'm not trying to
share the code (although it *would* clear out almost all of panfrost's transform
feedback related piglit failures).

Passes dEQP-GLES3.functional.transform_feedback.* and most of the relevant
piglits.

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

14 months agoasahi: Bump MAX_PUSH_RANGES to the worst-case
Alyssa Rosenzweig [Thu, 27 Apr 2023 18:41:17 +0000 (14:41 -0400)]
asahi: Bump MAX_PUSH_RANGES to the worst-case

This shortcuts all headaches about how big this should be. It does increase
memory usage a bit if there are lots of shader variants compiled, but this
should be tolerable, and can be optimized later if so required. Thanks to the
previous commit, the disk cache size should be unaffected.

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

14 months agoasahi: Shrink disk cache size of push ranges
Alyssa Rosenzweig [Thu, 27 Apr 2023 19:24:32 +0000 (15:24 -0400)]
asahi: Shrink disk cache size of push ranges

Only store the push ranges we actually need, not all of them. This should save
some disk space, while insulating us to MAX_PUSH_RANGES changes.

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

14 months agoagx: Lower I/O to scalar later
Alyssa Rosenzweig [Thu, 22 Dec 2022 02:46:06 +0000 (21:46 -0500)]
agx: Lower I/O to scalar later

This lets us preserve vectorized stores for transform feedback shaders.

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

14 months agoagx: Validate that collect sources are the same size
Alyssa Rosenzweig [Sat, 15 Apr 2023 13:39:28 +0000 (09:39 -0400)]
agx: Validate that collect sources are the same size

RA asserts this, but by then if you've messed it up, the failure is inscrutable.
Let's check it in the validator for more pleasant debugging.

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

14 months agoagx: Rework z/s emit
Alyssa Rosenzweig [Sun, 23 Apr 2023 21:50:52 +0000 (17:50 -0400)]
agx: Rework z/s emit

We were being sloppy with the sizes before. It mostly worked out, but there were
some corner cases where we would end up with mixed sized collects and that won't
end well for us. Let's rework the logic to make all the sizes explicit in NIR --
32-bit for depth and 16-bit stencil -- and then do the needed promotions to make
it happen in the AGX IR side.

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

14 months agoagx: Ensure load_frag_coord has the right sizes
Alyssa Rosenzweig [Sun, 23 Apr 2023 21:38:40 +0000 (17:38 -0400)]
agx: Ensure load_frag_coord has the right sizes

In case .x isn't read, it'll be null which has the wrong size and will fail
the validation added later in this series. We fix this by padding with sized
undefs (something that exists of defined size but undefined value) rather than
nothingness (of undefined size).

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

14 months agoagx/lower_address: Match multiplies, not only shifts
Alyssa Rosenzweig [Thu, 27 Apr 2023 16:00:12 +0000 (12:00 -0400)]
agx/lower_address: Match multiplies, not only shifts

Sometimes a shader might index with a non-power-of-two stride. For example, if
it's indexing into an array of structures where the structure size is not a
power of two, we'll get a multiply with a constant as opposed to a shift. We
want to handle these cases, too. To do so, we generalize our pattern matching to
look for any kind of multiply (with our new helper), rather than hardcoding
logic for ishl. This eliminates right-shifts in a pile of compute shaders, which
makes me happy from a "I read lots of shader assembly when debugging"
perspective.

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

14 months agoagx/lower_address: Add helper to match multiplies
Alyssa Rosenzweig [Thu, 27 Apr 2023 15:59:17 +0000 (11:59 -0400)]
agx/lower_address: Add helper to match multiplies

Currently, we hardcode logic in the addressing chasing code to look for ishl
instructions that shift by constants. We can generalize this to looking for
integer multiplies by constants to optimize more addressing patterns. Add a
helper to do so.

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

14 months agoasahi: Bind staging resources as RENDER_TARGET
Alyssa Rosenzweig [Wed, 26 Apr 2023 14:20:45 +0000 (10:20 -0400)]
asahi: Bind staging resources as RENDER_TARGET

This doesn't matter in practice (at least with mesa/st), but it's more correct
technically.

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

14 months agoagx: Don't wait at the end of the shader
Alyssa Rosenzweig [Wed, 26 Apr 2023 03:20:25 +0000 (23:20 -0400)]
agx: Don't wait at the end of the shader

This is totally pointless. This saves some waits at the ends of compute kernels
(waiting for stores to complete before terminating the thread). I don't know
how much this would matter for performance, since the hardware may have to do
these waits internally, but it makes the generated code less silly which is
always nice.

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

14 months agoasahi: Copy resources if needed to shadow
Alyssa Rosenzweig [Sat, 11 Mar 2023 22:37:19 +0000 (17:37 -0500)]
asahi: Copy resources if needed to shadow

This lets us shadow textures updated in the middle of rendering in Quake3.
They're big memcpys, but as long as the texture memory is cached it's ok. We use
a heuristic to avoid too many memcpys from uncached memory, which would cause
slideshow performance in quake.

We need to be careful to avoid shadowing shared resources, though, that's
invalid and would break WSI pretty hard.

It would be better to blit on the GPU for large shadowing, but that's more
involved and left for future work.

Reduces stuttering in Quake3.

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

14 months agoasahi: Rename no colour output to tag write disable
Alyssa Rosenzweig [Fri, 14 Apr 2023 23:57:20 +0000 (19:57 -0400)]
asahi: Rename no colour output to tag write disable

Comparison with PowerVR's XML shows that this is the actual name... And it needs
to be set a bit more carefully than "no colour output" in order to get correct
behaviour for depth-only passes that use sample mask / discard. Fix the name
first, the extra conditions will come when they're needed for multisampling.

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

14 months agoagx: Fix packing for iadd with shift
Alyssa Rosenzweig [Tue, 25 Apr 2023 17:51:46 +0000 (13:51 -0400)]
agx: Fix packing for iadd with shift

Wrong bit pattern was packed, oops.

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

14 months agoasahi: Use device_load shift for VBO loads
Alyssa Rosenzweig [Mon, 24 Apr 2023 02:24:27 +0000 (22:24 -0400)]
asahi: Use device_load shift for VBO loads

When possible. Only occassionally possible because the loads are pretty limited
in the addressing arithmetic. This probably doesn't matter for performance but
it saves some noise in dEQP tests which makes for nicer debugging, plenty of
optimizations end up worth it for that alone.

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

14 months agoagx: Defeature fsub
Alyssa Rosenzweig [Mon, 24 Apr 2023 03:13:08 +0000 (23:13 -0400)]
agx: Defeature fsub

All has_fsub does is fuse fsubs (they're unfused otherwise), no point doing that
if we're going to just going to lower.

shader-db is mostly noise.

total instructions in shared programs: 1487217 -> 1487035 (-0.01%)
instructions in affected programs: 22658 -> 22476 (-0.80%)
helped: 85
HURT: 2
helped stats (abs) min: 1.0 max: 12.0 x̄: 2.19 x̃: 1
helped stats (rel) min: 0.38% max: 2.46% x̄: 0.87% x̃: 0.65%
HURT stats (abs)   min: 1.0 max: 3.0 x̄: 2.00 x̃: 2
HURT stats (rel)   min: 0.58% max: 1.08% x̄: 0.83% x̃: 0.83%
95% mean confidence interval for instructions value: -2.51 -1.67
95% mean confidence interval for instructions %-change: -0.97% -0.70%
Instructions are helped.

total bytes in shared programs: 10189996 -> 10189288 (<.01%)
bytes in affected programs: 158132 -> 157424 (-0.45%)
helped: 85
HURT: 2
helped stats (abs) min: 4.0 max: 48.0 x̄: 8.75 x̃: 4
helped stats (rel) min: 0.22% max: 1.44% x̄: 0.51% x̃: 0.38%
HURT stats (abs)   min: 6.0 max: 30.0 x̄: 18.00 x̃: 18
HURT stats (rel)   min: 0.90% max: 0.91% x̄: 0.91% x̃: 0.91%
95% mean confidence interval for bytes value: -9.98 -6.30
95% mean confidence interval for bytes %-change: -0.56% -0.39%
Bytes are helped.

total halfregs in shared programs: 462536 -> 462556 (<.01%)
halfregs in affected programs: 131 -> 151 (15.27%)
helped: 1
HURT: 4
helped stats (abs) min: 2.0 max: 2.0 x̄: 2.00 x̃: 2
helped stats (rel) min: 28.57% max: 28.57% x̄: 28.57% x̃: 28.57%
HURT stats (abs)   min: 4.0 max: 8.0 x̄: 5.50 x̃: 5
HURT stats (rel)   min: 12.77% max: 36.36% x̄: 25.01% x̃: 25.45%
95% mean confidence interval for halfregs value: -0.65 8.65
95% mean confidence interval for halfregs %-change: -18.64% 47.23%
Inconclusive result (value mean confidence interval includes 0).

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

14 months agoasahi: Use u_default_get_sample_position
Alyssa Rosenzweig [Wed, 26 Apr 2023 14:48:08 +0000 (14:48 +0000)]
asahi: Use u_default_get_sample_position

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

14 months agoagx: Remove bogus assert
Alyssa Rosenzweig [Sun, 9 Apr 2023 03:05:49 +0000 (23:05 -0400)]
agx: Remove bogus assert

I->mask isn't even valid for iter instructions.

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

14 months agoasahi: Compress more texture targets
Alyssa Rosenzweig [Sat, 18 Mar 2023 22:16:40 +0000 (18:16 -0400)]
asahi: Compress more texture targets

They should already work, we just need it enabled. The comment here claimed
(incorrectly) that there is no hardware support for linear 2D arrays. In fact,
there is support, it's just not advertised in the public Metal API. With some
awful tricks, I managed to reverse-engineer the hardware interface and hooked it
up, so we can take advantage of it now.

In fact, we can stop checking the target explicitly at all. The only case where
we can't compress is 1D/buffer textures, which are necessarily less than 16
height so will be dropped in the next check.

When I originally wrote this cuhange, dolphin's MeltyMoltenGalaxy trace with
specialized shaders at 4K was helped from 28fps to 43fps, which is massive :-)

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

14 months agoasahi: Use 2D array staging resources for cube/3D
Alyssa Rosenzweig [Sun, 9 Apr 2023 18:16:53 +0000 (14:16 -0400)]
asahi: Use 2D array staging resources for cube/3D

Staging resources need to be linear for efficient CPU side mapping. This is a
problem for access to 3D and cube textures, since we don't have linear 3D
textures or linear cube textures. But we do have linear 2D array textures, which
can be reshaped to the same effect. So use a 2D array staging resource even for
3D textures and cube maps.

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

14 months agoasahi: Explicitly ban MSAA, compression with linear
Alyssa Rosenzweig [Sun, 9 Apr 2023 17:07:51 +0000 (13:07 -0400)]
asahi: Explicitly ban MSAA, compression with linear

These get asserted later. It doesn't really matter but this makes our queries
more accurate. This came up when experimenting a debug option that forces linear
textures to be used as much as possible.

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

14 months agoagx: Handle linear 2D array textureSize()
Alyssa Rosenzweig [Sun, 9 Apr 2023 17:59:13 +0000 (13:59 -0400)]
agx: Handle linear 2D array textureSize()

We handle linear 2D arrays internally for blit shaders, so we need textureSize
to work for these. That requires some special casing, because there's a line
stride where the layer count would otherwise be. But it's not too bad.

Fixes
dEQP-GLES3.functional.shaders.texture_functions.texturesize.sampler2darray_*
when forcing linear textures.

Since we clamp array access to the maximum layer, we need textureSize() to work
for even the most basic array texturing. So this should fix blits from linear 2D
arrays as well, which finally unlocks support for compressed arrays/cubes/3D
textures.

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

14 months agoagx/lower_zs_emit: Fix progress returning
Alyssa Rosenzweig [Sat, 8 Apr 2023 21:25:12 +0000 (17:25 -0400)]
agx/lower_zs_emit: Fix progress returning

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

14 months agoagx: Fix abs/neg propagation into fcmpsel
Alyssa Rosenzweig [Sat, 8 Apr 2023 21:52:52 +0000 (17:52 -0400)]
agx: Fix abs/neg propagation into fcmpsel

The first two sources are floats, the latter two sources and destination (and
hence the opcode) are not. Reflect that when packing and optimizing. Noticed
while debugging a silly dEQP test.

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

14 months agoagx: Handle splits of uniforms
Alyssa Rosenzweig [Sun, 9 Apr 2023 13:42:33 +0000 (09:42 -0400)]
agx: Handle splits of uniforms

This is straightforward, and can happen with certain u2u16 patterns.

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

14 months agoasahi: Track write to separate stencil
Alyssa Rosenzweig [Sun, 9 Apr 2023 16:50:46 +0000 (12:50 -0400)]
asahi: Track write to separate stencil

From the commit message of 94f7c011d6e ("v3d: Track write reference to the
separate stencil buffer."), anholt says:

   Otherwise, a blit from separate stencil may fail to flush the job that
   initialized it, or new drawing could fail to flush a blit reading from
   stencil.

Fixes
dEQP-GLES3.functional.fbo.blit.depth_stencil.depth32f_stencil8_stencil_only

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

14 months agoasahi: Identify XML for barycentric coordinates
Alyssa Rosenzweig [Sat, 8 Apr 2023 17:21:51 +0000 (13:21 -0400)]
asahi: Identify XML for barycentric coordinates

Reading them from a fragment shader, not interpolating at custom ones.

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

14 months agoasahi: Don't use depth/stencil staging blits
Alyssa Rosenzweig [Fri, 7 Apr 2023 20:36:46 +0000 (16:36 -0400)]
asahi: Don't use depth/stencil staging blits

Our staging resources need to be LINEAR, however we don't support LINEAR with
DEPTH_STENCIL. The APIs don't actually require this, we just need to make sure
we don't generate internal staging blits to linear depth/stencil resources. For
uploading to compressed depth/stencil textures, we could use a depth/stencil
staging (since we can read from linear depth/stencil). However, for downloading
from compressed depth/stencil, we can't use a depth/stencil staging (since we
can't write linear depth/stencil). So, to handle both cases in a unified way,
just use colour blits for depth/stencil resources, using a compatible colour
format. This wouldn't be ok for an application to do itself, but within the
driver we know that it's safe, since there's no difference in memory between
depth/stencil and colour on AGX. In particular, Z16 is compressed exactly the
same as R16, Z8 as R8, and so on.

Fixes depth/stencil compression.

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

14 months agoasahi: Minify width/height in create_surface
Alyssa Rosenzweig [Fri, 7 Apr 2023 19:02:32 +0000 (15:02 -0400)]
asahi: Minify width/height in create_surface

Otherwise framebuffer->width ends up being wrong with u_blitter, this is what
other drivers do. If we needed to render to depth/stencil with u_blitter, this
would cause us trouble.

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

14 months agoasahi: Fix disk cache disable with AGX_MESA_DEBUG
Alyssa Rosenzweig [Mon, 24 Apr 2023 02:10:34 +0000 (22:10 -0400)]
asahi: Fix disk cache disable with AGX_MESA_DEBUG

We go to initialize the disk cache before we've compiled any shaders so
agx_compiler_debug is 0 at this point. Don't try to read it, instead go through
sa safe getter that will do the right thing.

Fixes: 5e9538c12e0 ("agx: isolate compiler debug flags")
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22891>

14 months agoasahi: Fix batch writer tracking for null batches
Asahi Lina [Wed, 5 Apr 2023 10:05:00 +0000 (19:05 +0900)]
asahi: Fix batch writer tracking for null batches

When an empty batch is submitted, nothing happens. However, this batch
may have taken over writer status for some BOs which still have a
pending submitted batch that hasn't finished yet. If we drop writer
status at this point, two bad things happen:

- We spuriously clear bo->writer_syncobj, which breaks syncing on
  post-facto BO exports
- We break agx_sync_writer(), since we no longer know about the old
  writer to properly block on it.

To fix this (hopefully rare) case, take advantage of bo->writer_syncobj
to find the currently submitted writer batch again, and revert the
writer to it. If this turns out to be common and a performance issue
iterating through submitted batches for each written BO, we could
implement it with two writer batch arrays instead, one for active
writers and one for submitted writers... but hopefully that isn't
necessary.

This splits the cleanup path in agx_batch_cleanup() depending on whether
the cleanup is for a reset or proper completion. Since this is only used
within agx_batch.c, drop the public prototype while we're at it.

Signed-off-by: Asahi Lina <lina@asahilina.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22891>

14 months agoasahi: Add batch state debugging
Asahi Lina [Wed, 5 Apr 2023 09:03:02 +0000 (18:03 +0900)]
asahi: Add batch state debugging

I've had to reimplement this more than once, let's just make a flag for
it.

Signed-off-by: Asahi Lina <lina@asahilina.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22891>

14 months agoasahi: Free low VA BOs correctly
Janne Grunau [Wed, 12 Apr 2023 09:01:07 +0000 (11:01 +0200)]
asahi: Free low VA BOs correctly

These need the shader_base added to them. Fixes GEM_BIND errors after
usc_head provides VA without the VM_SHADER_START offset from returned
low VA.

Signed-off-by: Janne Grunau <j@jannau.net>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22891>

14 months agoasahi: Fix typo in debug/error message helper macro
Janne Grunau [Fri, 7 Apr 2023 18:27:00 +0000 (20:27 +0200)]
asahi: Fix typo in debug/error message helper macro

The typo is in the !__GLIBC__ case and was observed while building on
Alpine.

Fixes: 0a132b06406d ("asahi: Add a helper macro for debug/error messages")
Reported-by: mps
Tested-by: mps
Signed-off-by: Janne Grunau <j@jannau.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22891>

14 months agoasahi: Enable 2xMSAA (for deqp)
Asahi Lina [Fri, 7 Apr 2023 14:17:13 +0000 (23:17 +0900)]
asahi: Enable 2xMSAA (for deqp)

This also just works, let's enable it (still gated on deqp).

Signed-off-by: Asahi Lina <lina@asahilina.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22891>

14 months agoasahi: Broadcast Z for all components on texture fetch
Asahi Lina [Fri, 7 Apr 2023 14:09:45 +0000 (23:09 +0900)]
asahi: Broadcast Z for all components on texture fetch

Gallium expects this.

Related commit: 6cac9c748e

Co-authored-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Signed-off-by: Asahi Lina <lina@asahilina.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22891>

14 months agoasahi: Identify ZS resolve bits (tentative)
Asahi Lina [Fri, 7 Apr 2023 14:08:50 +0000 (23:08 +0900)]
asahi: Identify ZS resolve bits (tentative)

Signed-off-by: Asahi Lina <lina@asahilina.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22891>

14 months agonir/lower_fp16_casts: Fix SSA dominance
Konstantin Seurer [Tue, 2 May 2023 17:56:44 +0000 (19:56 +0200)]
nir/lower_fp16_casts: Fix SSA dominance

Fixes: 01dfd65 ("nir: port fp16 casting code from dxil")
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22804>

14 months agoci: uprev kernel to 6.3.1 with fixed patch for Adreno SMMU
David Heidelberg [Fri, 5 May 2023 12:57:01 +0000 (14:57 +0200)]
ci: uprev kernel to 6.3.1 with fixed patch for Adreno SMMU

Going from release candidate to stable kernel hopefully also improve
overall stability.

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

14 months agofreedreno/a6xx+: Use template to handle a6xx vs a7xx differences
Rob Clark [Fri, 3 Mar 2023 21:45:34 +0000 (13:45 -0800)]
freedreno/a6xx+: Use template to handle a6xx vs a7xx differences

This doesn't enable support for a7xx yet, but uses the new register pack
builders for registers that differ between a7xx and a6xx.

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

14 months agofreedreno/a6xx: Rework set_bin_size()
Rob Clark [Sat, 4 Mar 2023 20:01:31 +0000 (12:01 -0800)]
freedreno/a6xx: Rework set_bin_size()

The open-coded flag param for "all the other bits" won't work once we
have register variants in play.

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