URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=537994bb3289deb29cb6a5ccad0e0eeba4ec5f33
Author: Alyssa Rosenzweig <[email protected]>
Date: Fri May 19 13:00:57 2023 -0400
asahi: Remove stale comments
Trivial.
It is now later and I have confirmed with Piglit.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d6ff4733a63c4ca3e968db4896a8724c95ef1c1c
Author: Asahi Lina <[email protected]>
Date: Fri Jun 2 17:25:49 2023 +0900
asahi: Do not leak meta shader NIR
Signed-off-by: Asahi Lina <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c6016486f4a89bb86639338831563e2250f5c0b0
Author: Asahi Lina <[email protected]>
Date: Fri Jun 2 17:20:44 2023 +0900
asahi: Fix memory leak in agx_nir_lower_sysvals()
We need to free the dynarray.
Signed-off-by: Asahi Lina <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bb27e3f69c37cacfe49fad363a05a3b2854c15e4
Author: Asahi Lina <[email protected]>
Date: Fri Jun 2 16:51:07 2023 +0900
asahi: Use os_dupfd_cloexec() instead of dup()
This fixes file descriptor leaks in konsole/etc.
Signed-off-by: Asahi Lina <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=35d849025ba99227e2528e56b74538fc22f83ac9
Author: Alyssa Rosenzweig <[email protected]>
Date: Mon May 29 19:51:21 2023 -0400
asahi: Decompress with format reinterpretation
The internal layout used with compression partially depends on the pixel
format.
Some limited reinterpretation is definitely allowed (linear vs sRGB views
of the
same physical format are documented by Apple as allowed). Some
reinterpretations
are definitely forbidden (R8G8B8A8 vs R32, I think). At some point we'll
need to
work out the exact rule. I suspect the answer is that "you can reinterpret
iff
the Channels field matches". Meaning that R8G8B8A8_UNORM and B8G8R8A8_SINT
would
be compatible, but not R16G16_UNORM. But I haven't tested that.
Fixes all fails in:
dEQP-GLES31.functional.image_load_store.*.format_reinterpret.*
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d499bf10a342f9d89a0f7b0809a21a5375e6510c
Author: Alyssa Rosenzweig <[email protected]>
Date: Fri May 19 16:00:34 2023 -0400
asahi: Decompress writable images
We can't write to compressed images. Decompress on the fly if needed.
mesa/st
doesn't bother to do this for us.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=531247cf31a440643df066769d184e5f8274f043
Author: Alyssa Rosenzweig <[email protected]>
Date: Fri May 19 15:59:54 2023 -0400
asahi: Extract transition_resource helper
We'll reuse this logic for images. Extract it out and generalize it.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=389c0fdc7c71c634ca35cef6cb4d0c018358f974
Author: Alyssa Rosenzweig <[email protected]>
Date: Fri May 12 08:13:22 2023 -0400
asahi: Add ASAHI_MESA_DEBUG=nowc flag
Add a debug flag to disable write-combining as a performance hack. This may
help
diagnose slowness with glReadPixels() heavy workloads like screen capture.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3a0d1f83d57db303b85ab281b161a34229484d5a
Author: Alyssa Rosenzweig <[email protected]>
Date: Mon May 15 16:48:14 2023 -0400
agx: Stop bit-inexact conversion propagation
Despite being mathematically equivalent, the following code sequences are
not
bit-identical under IEEE 754 rules due to differing internal precision:
fadd16 r0l, r2, 0.0 z = f2f16 x
fadd16 r1h, r0l, r0h w = fadd z, y
versus
fadd32 r1h, r2, r0h f2f16(w) = fadd x, f2f32(y)
This is probably fine under GL's relaxed floating point precision rules, but
it's definitely not ok with the more strict OpenCL or Vulkan. It also is a
potential problem with GL invariance rules, if we get different results for
the
same shader depending whether we did a monolithic compile or a fast link.
The
place for doing inexact transformations is NIR, when we have the information
available to do so correctly. By the time we get to the backend, everything
we
do needs to be bit-exact to preserve sanity.
Fixes dEQP-GLES2.functional.shaders.algorithm.rgb_to_hsl_vertex. We believe
that
this is a CTS bug, but it's a useful one since it uncovered a serious
driver bug
that would bite us in the much less friendly Vulkan (or god forbid OpenCL)
CTS
later. It also seems like a magnet for GL app bugs, the fp16 support we do
now
is uncovering bad enough bugs as it is.
shader-db results are pretty abysmal, though :|
total instructions in shared programs: 1537964 -> 1571328 (2.17%)
instructions in affected programs: 670231 -> 703595 (4.98%)
total bytes in shared programs: 10533984 -> 10732316 (1.88%)
bytes in affected programs: 4662414 -> 4860746 (4.25%)
total halfregs in shared programs: 483448 -> 474541 (-1.84%)
halfregs in affected programs: 58867 -> 49960 (-15.13%)
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=be5004691cd2ac273fc50ac6d1356e780cd8c878
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:53 2023 -0400
asahi: Advertise GL 3.1
We now have support for baseline MSAA, except for support for eMRT. But hey,
this gets us 99% of the way there, so it's worth flipping on at least in
agx/next.
We can also advertise dual-source blending again. It was reverted since
Chromium
freaks out with dual-source blending on a GL 2.1 driver, but since we're
advertising GL 3.1 now, it's ok.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8d019125a0165d007333a2180dfb68a03d442495
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:53 2023 -0400
agx: Emit shader info late
So we can take into account program transformations for the final info. This
reports more accurate metadata.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7b1d6204c81cd7b374696f88420336ba8d9f9bc9
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:52 2023 -0400
asahi: Use nonempty tib for MSAA
Affects
dEQP-GLES31.functional.texture.multisample.samples_4.use_texture_depth_2d.
This
needs tests, but whatever, 70% of the YouTube chat said to land the hack.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
HackHackHacked-by: Faith Ekstrand <[email protected]>
Acked-by: YouTube Viewers
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f3919bead6ea555eed687da979bdd43f703606c2
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:52 2023 -0400
asahi: Lower MSAA
Use the shiny new passes to lower fragment shaders. Monolithic only right
now.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1dd513727db238066f65240cc65f83ed0aaa6f4e
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:51 2023 -0400
agx: Handle centroid and sample interpolation
Works great now that all the infrastructure is wired up.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b7f130fbbc1e3417aabd3993703a90bde6152230
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:51 2023 -0400
agx: Model interpolation for iter instructions
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2548293e8b557b30dc69875d62e880124126fbf3
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:50 2023 -0400
agx: Split iter and iterproj instructions
These are different (though related) instructions. I've split them in
applegpu,
let's mirror that here. This simplifies the IR a bit.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b9b71bcae685dba5da066a769e5ea0ab53110f3c
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:50 2023 -0400
asahi,agx: Call lower_discard_zs_emit in the driver
The driver needs to lower MSAA (because only it knows the sample count).
MSAA
lowering depends on discards getting lowered (in order to get sample masks
on the
discards for sample shading to work properly). Discard lowering depends on
all
discards emitted. But the driver needs to lower clip planes which generates
discards. To break the circular dependency, we have the driver call the
discard lowering pass itself (in between lowering clip planes and lowering
MSAA). Technically, this is probably a layering violation but it's the least
gross solution I see.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=398851ca53dcd0ce4f7ed4d379034d1a63da1b79
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:49 2023 -0400
agx: Lower discard in NIR
We already lower discard in NIR when depth/stencil writes are used in the
shader. In this patch, we extend that lowering for when depth/stencil
writes are
not used, in which case the discard is lowered to a sample_mask instruction.
This is a step towards multisampling, since the old lowering assumed
single-sample and there's no way to express a sample mask with a standard
NIR
discard instructions so we need to lower in NIR anyway for sample shading
(i.e.
if a discard_if diverges between samples in a pixel).
This changes the lowering for discard_if to be free of control flow (instead
executing a sample mask instruction unconditionally). This seems to be
slightly
faster in SuperTuxKart and slightly slower in Dolphin, but I'm not too
worried
right now.
To make this work, we do need some extra lowering to ensure we always
execute a
sample_mask instruction, in case a discard_if is buried in other control
flow
(as occurs with Dolphin's ubershaders). So that's added too. We need that
for
MSAA anyway, so pardon the line count.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=989d6fd37887c963f730b7a9a28ec34f434dbf2c
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:49 2023 -0400
agx: Enable tag writes when sample mask written
Including indirectly via discard/demote.
Fixes graphical artefacts in Chromium when API sample masks are hooked up,
which
will result in fragment programs that do not write colour/depth but do a
lone
sample mask write. These need tag writes enabled (according to a trace from
Metal for a case constructed to test this scenario).
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f514d49ae2007360b14570cf76869da8a8c53dbb
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:49 2023 -0400
agx: Handle sample_mask_agx
1:1 translation.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=73bbf43bc0bf441cf8d711c48a23df3b384519c3
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:48 2023 -0400
agx: Plumb in nir_intrinsic_load_sample_mask_in
We have a special register for this, although this will need some lowering
for
glSampleMask.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6fd16dd7c9e99bb2a13301555e402b033c9931af
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:47 2023 -0400
agx: Model both sources of sample_mask
We need to control both sources to implement multisampling properly. The
semantic is something like:
foreach sample in the first mask {
if correspond bit in second bit set {
make sample live
} else {
make sample dead
}
}
But I'm reticent to document more formally until the details are really
understood and properly tested.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=954e2eee29c5903fc9a7ebee205414b95da0133e
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:47 2023 -0400
asahi: Plumb ppp_multisamplectl into shaders
This lets us implement gl_SamplePositions in a cheap way with some ALU in
the
shader preamble.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=17a05884b425a1794809aa92afb62b01c9055908
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:46 2023 -0400
asahi: Plumb API sample mask into shaders
So we can lower glSampleMask() appropriately.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bffbe099df176ebf010b6e3396534340a2d239e6
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:46 2023 -0400
asahi: Set uses_sample_shading for background program
If we read gl_SampleID we need the lowering, even though we don't call into
gather_info to set the bit for us. So set the bit manually.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0b95d81150a1efc3db3237fb08ff78c12c708b64
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:46 2023 -0400
agx: Assert that sample shading is lowered
Lest someone mess this up later and then try to "implement" these
intrinsics in
the backend.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=46a5a99d24d569a7ec5d2bec0f3255f7576fedfa
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:45 2023 -0400
asahi: Add alpha-to-coverage (and alpha-to-one) lowering
This should probably be shared code but meh.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=51e868f3a2880453ce760c3b08a4023c601fa90e
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:45 2023 -0400
asahi: Add passes to lower sample intrinsics
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f28962e29a53101e484ddfd433d1afe559d923db
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:44 2023 -0400
asahi: Add passes to lower MSAA
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=70b8babe3cd14a8ce21704005a5efbbdc3e53841
Author: Alyssa Rosenzweig <[email protected]>
Date: Thu May 25 13:22:42 2023 -0400
agx: Use textures_used, not num_textures
The latter doesn't account for holes. Fixes regression in Neverball on
Asahi.
Fixes: e607a89f ("mesa/main: ff-fragshader to nir")
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f1c2ea99e2a100f14d4fcf6f59b108ec4520b312
Author: Alyssa Rosenzweig <[email protected]>
Date: Sat May 20 23:21:57 2023 -0400
agx: Constant fold when optimizing int64
Otherwise we can get bcsel(false, ...) in the final optimized code, which
isn't
great.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9641fba9bab64d512a29acd97fcd8c4060427455
Author: Alyssa Rosenzweig <[email protected]>
Date: Fri May 12 13:33:57 2023 -0400
agx: Set support_16bit_alu
Allows some more optimizations.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>