diff --git a/README.md b/README.md index 9c7fcca48..c02dbd7bd 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,7 @@ DroidDeck is [GPL-3.0](LICENSE). Steam and Proton belong to Valve Corporation. V - droiddeck-ntsync follows the [Linux](https://github.com/torvalds/linux) ntsync semantics in `Documentation/userspace-api/ntsync.rst` (GPL-2.0). - The proot fast path orders bindings like [PRoot](https://github.com/proot-me/proot)'s `path/binding.c` (GPL-2.0-or-later). - DiRT 3 and DiRT Showdown keep their telemetry socket the way RoccoC's DiRTTelemetryErrorFix (MIT) does, based on the fix by Carsten Gottschling. +- Zink on PowerVR keeps colour textures in colour with Icenowy Zheng's upstream [Mesa](https://gitlab.freedesktop.org/mesa/mesa) fix d55418dae7 (MIT), carried as a runtime patch. - Games use [Mesa](https://gitlab.freedesktop.org/mesa/mesa) Turnip's per render pass memory choice. The Steam client keeps `TU_DEBUG=sysmem`. - Black Ops III and Dark Souls Remastered start without [umu-protonfixes](https://github.com/Open-Wine-Components/umu-protonfixes) (BSD-2-Clause), whose `311210.py` and `570940.py` fail under ARM64 Proton. - [ReSkate](https://github.com/Dingo-Shenanigans/ReSkate) (GPL-3.0) by Dingo Shenanigans uses the launch option from its README and D3D12 feature level 12_1. diff --git a/tools/ubuntu/README.md b/tools/ubuntu/README.md index 85001fe67..eefff4c6c 100644 --- a/tools/ubuntu/README.md +++ b/tools/ubuntu/README.md @@ -9,7 +9,8 @@ Steam on the desktop). The app installs it into `files/linuxfs` and runs it unde `/dev/kgsl-3d0`, and KWin with `patches/kwin` (nested desktop scale, an explicit render node, scroll source/discrete forwarding). Both get a `+droiddeck` version. `patches/mesa` adds KGSL UBWC 5/6 (backported from upstream Mesa) and the KGSL device numbers for WSI (from - [Droid-Deck/Drivers](https://github.com/Droid-Deck/Drivers)). + [Droid-Deck/Drivers](https://github.com/Droid-Deck/Drivers)). It also carries Icenowy Zheng's upstream + Zink fix that keeps the Imagination depth/stencil swizzle off colour views (Mesa d55418dae7). - The runtime's built-in Vulkan driver is DroidDeck's DD-Turnip Linux build (`DD_TURNIP_URL` and `DD_TURNIP_SHA256` in `base.env`): Ubuntu's Turnip is diverted to `libvulkan_freedreno.so.distrib` because it lacks the Adreno 8xx fixes. Zink, EGL and llvmpipe stay Ubuntu's. diff --git a/tools/ubuntu/patches/mesa/0005-zink-check-zs-aspect-before-creating-zs-view.patch b/tools/ubuntu/patches/mesa/0005-zink-check-zs-aspect-before-creating-zs-view.patch new file mode 100644 index 000000000..3a2aa0bd9 --- /dev/null +++ b/tools/ubuntu/patches/mesa/0005-zink-check-zs-aspect-before-creating-zs-view.patch @@ -0,0 +1,41 @@ +From d55418dae753c8daacf66ab81a7481094808576a Mon Sep 17 00:00:00 2001 +From: Icenowy Zheng +Date: Sun, 31 May 2026 21:56:32 +0800 +Subject: [PATCH] zink: check Z/S aspect before creating Z/S image view + +When moving the code of creating image views to the init_sampler_view() +function, the check for Z/S aspect bits was forgotten to be added +(because it was a big if gating a lot of code originally). + +When the driver doesn't have needs_zs_shader_swizzle set, this is not +problematic, because the condition for creating Z/S view is to have only +Z aspect; however the needs_zs_shader_swizzle case now fails because Z/S +views are now created for color images. + +Fix the issue by re-adding the Z/S aspect check before checking +needs_zs_shader_swizzle flag. + +Fixes: cafa22142bf1 ("zink: create views for samplers lazily") +Signed-off-by: Icenowy Zheng +Part-of: +--- + src/gallium/drivers/zink/zink_context.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c +index e264e57b2703..41bc1b6932a7 100644 +--- a/src/gallium/drivers/zink/zink_context.c ++++ b/src/gallium/drivers/zink/zink_context.c +@@ -1173,7 +1173,8 @@ init_sampler_view(struct zink_context *ctx, struct zink_sampler_view *sv) + + bool red_depth_sampler_view = false; + if (sv->ivci.subresourceRange.aspectMask == VK_IMAGE_ASPECT_DEPTH_BIT || +- screen->driver_compiler_workarounds.needs_zs_shader_swizzle) { ++ ((sv->ivci.subresourceRange.aspectMask & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) && ++ screen->driver_compiler_workarounds.needs_zs_shader_swizzle)) { + VkComponentSwizzle *swizzle = (VkComponentSwizzle*)&sv->ivci.components; + for (unsigned i = 0; i < 4; i++) { + if (swizzle[i] == VK_COMPONENT_SWIZZLE_ONE || +-- +GitLab +