Change:
Mesa 21.3.2 present in is causing , and they point to , not yet fixed as of now. Reverting to nixos-unstable to Mesa 21.2.6 updates fixes the issue. Steps to reproduce the behavior: sure you're using Intel GPU nixos channel to No flickering should happen on the application screen. Mesa bug report has a video demonstrating the issue. If applicable, add screenshots to help explain your problem. cc: Please run and paste the result.
According to the bug report this seems to affect at least Blender as well. Anyway, we can leave this issue open for a while (in case it helps users to figure this out) but I don't think there's anything actionable for Nixpkgs (it's an upstream bug and we simply have to wait until a fix is released via a new version). It looks like the patch from should be submitted formally via a PR so that it might get included in Mesa 21.3.4.
This is also happening on qutebrowser for me, but only on the wayland backend. I have a temporary fix to just launch with , but this obviously disables the hardware. Works fine though so far for just browsing and work stuff, at least until a proper fix is merged.
It's unlikely that the patch will be applied for 21.3.4 (as no one filed a MR for it so far), should we apply it downstream?
I'm seeing this in qutebrowser as well (non-wayland)
I'd prefer to avoid applying a patch that hasn't been reviewed upstream.
+1 for what said. Luckily a developer from Intel started looking into this so let's see how things will develop: Ideally a patch will be ready for 21.3.4 but the release might happen in two days (unless it gets delayed) so it'll indeed be close (but we'll of course re-evaluate our options once the release is out).
Unfortunately it was indeed too close for the patch to land in Mesa 21.3.4. However, now there's at least an alternative patch from Paulo Zanoni (the Intel developer) and Giuseppe Ghibò (author of the other patch) and others confirmed that it's working: I've included that patch in Does someone have time to test it () and report if it indeed fixes the issues?
Thanks a lot for putting together a fix! I'm happy to test. Could you confirm I understood the instructions correctly? 1) integrate the code from the above PR into my nixpkgs tree. 2) put the following into my nixos config: 3) replace with the path to my nixpkgs tree. 4) run Did I get that right?
It's the easiest if you use a separate/dedicated Nixpkgs tree for Mesa ( in the example). That way you don't have to rebuild a lot of other packages (which would most likely still take way too long). You can also cherry-pick the commit to (I'd recommend doing that) which saves additional rebuilds (I only tested it that way so no idea how many many builds are currently cached for staging-next). The rest looks fine. And thanks in advance :)
It works like a charm. Thanks
Seems like this wasn't closed automatically once landed in master. Should be fixed now. And upstream merged the required patches in the meantime (s. note in ). And thanks for testing the fix and :)

Discussion:
let # Release calendar: https://www.mesa3d.org/release-calendar.html # Release frequency: https://www.mesa3d.org/releasing.html#schedule <del> version = "21.3.3"; </del> <ins> version = "21.3.4"; </ins> branch  = versions.major version; self = stdenv.mkDerivation {

"ftp://ftp.freedesktop.org/pub/mesa/${version}/mesa-${version}.tar.xz" "ftp://ftp.freedesktop.org/pub/mesa/older-versions/${branch}.x/${version}/mesa-${version}.tar.xz" ]; <del> sha256 = "08c118j440xpfbjjxmwzm6dfnv4y35q540mmzkchhpbwx89lczxd"; </del> <ins> sha256 = "0zd6skf9qcwlk1k1ljgwijwlyz5si3pgi0h97gd6kkivm7a4y43p"; </ins> }; # TODO: #  revive ./dricore-gallium.patch when it gets ported (from Ubuntu), as it saved #  ~35 MB in $drivers; watch https://launchpad.net/ubuntu/+source/mesa/+changelog patches = [ <del> # fixes pkgsMusl.mesa build </del> <ins> # To fix flickering on Intel GPUs (iris), see https://github.com/NixOS/nixpkgs/issues/153377: </ins> (fetchpatch { <del> url = "https://raw.githubusercontent.com/void-linux/void-packages/b9f58f303ae23754c95d5d1fe87a98b5a2d8f271/srcpkgs/mesa/patches/musl.patch"; sha256 = "sha256-Jyl7ILLhn8hBJG7afnEjE8H56Wz/1bxkvlqfrXK5U7I="; </del> <ins> url = "https://gitlab.freedesktop.org/mesa/mesa/-/commit/07dc3d4238e57901ccf98e0b506d9aad2c86b9d9.diff"; sha256 = "sha256-3fa1qHJes3x1/iXsxfjgy9HnEGlOyFtJatSkU1a3XDI="; </ins> }) <ins> # fixes pkgsMusl.mesa build ./musl.patch </ins> (fetchpatch { url = "https://raw.githubusercontent.com/void-linux/void-packages/b9f58f303ae23754c95d5d1fe87a98b5a2d8f271/srcpkgs/mesa/patches/musl-endian.patch"; sha256 = "sha256-eRc91qCaFlVzrxFrNUPpAHd1gsqKsLCCN0IW8pBQcqk=";

<ins> diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h index 06ca90564f0..bb244f8f358 100644 --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h @@ -30,6 +30,7 @@ #include <amdgpu.h> #include <pthread.h> +#include <sys/types.h> #include "util/list.h" #include "util/rwlock.h" #include "ac_gpu_info.h" diff --git a/src/gallium/drivers/freedreno/freedreno_util.h b/src/gallium/drivers/freedreno/freedreno_util.h index 22f99c41909..2f3195926be 100644 --- a/src/gallium/drivers/freedreno/freedreno_util.h +++ b/src/gallium/drivers/freedreno/freedreno_util.h @@ -108,6 +108,8 @@ extern bool fd_binning_enabled; #include <sys/types.h> #include <sys/syscall.h> +#define gettid() ((pid_t)syscall(SYS_gettid)) + #define DBG(fmt, ...)                                                           do {                                                                         if (FD_DBG(MSGS))                                                         diff --git a/src/gallium/frontends/nine/nine_debug.c b/src/gallium/frontends/nine/nine_debug.c index f3a6a945025..f4a6c41a612 100644 --- a/src/gallium/frontends/nine/nine_debug.c +++ b/src/gallium/frontends/nine/nine_debug.c @@ -65,7 +65,7 @@ _nine_debug_printf( unsigned long flag, { static boolean first = TRUE; static unsigned long dbg_flags = DBG_ERROR | DBG_WARN; -    unsigned long tid = 0; +    pthread_t tid = 0; if (first) { first = FALSE; @@ -74,7 +74,7 @@ _nine_debug_printf( unsigned long flag, #if defined(HAVE_PTHREAD) if (dbg_flags & DBG_TID) -        tid = (unsigned long)pthread_self(); +        tid = pthread_self(); #endif if (dbg_flags & flag) { diff --git a/src/util/rand_xor.c b/src/util/rand_xor.c index 81b64f1ea71..56ebd2eccdf 100644 --- a/src/util/rand_xor.c +++ b/src/util/rand_xor.c @@ -28,6 +28,7 @@ #if defined(HAVE_GETRANDOM) #include <sys/random.h> #endif +#include <sys/types.h>         /* size_t, ssize_t */ #include <unistd.h> #include <fcntl.h> #endif </ins>