git: ad2ced80deae - main - graphics/mesa-dri: Fix a crash for radeon r600 graphic cards.

From: Emmanuel Vadot <manu_at_FreeBSD.org>
Date: Tue, 20 Dec 2022 17:17:30 UTC
The branch main has been updated by manu:

URL: https://cgit.FreeBSD.org/ports/commit/?id=ad2ced80deaee8815b72d927a8e6d2b687b4864b

commit ad2ced80deaee8815b72d927a8e6d2b687b4864b
Author:     Florian Walpen <dev@submerge.ch>
AuthorDate: 2022-12-20 16:55:02 +0000
Commit:     Emmanuel Vadot <manu@FreeBSD.org>
CommitDate: 2022-12-20 17:16:51 +0000

    graphics/mesa-dri: Fix a crash for radeon r600 graphic cards.
    
    Add an upstream patch to fix an immediate crash of Xorg and wayland
    on systems with radeon r600 based graphic cards. See:
    
    https://gitlab.freedesktop.org/mesa/mesa/-/issues/7931
    
    PR: 268327
---
 graphics/mesa-dri/Makefile                               |  1 +
 ...patch-src_gallium_drivers_r600_sfn_sfn__optimizer.cpp | 16 ++++++++++++++++
 2 files changed, 17 insertions(+)

diff --git a/graphics/mesa-dri/Makefile b/graphics/mesa-dri/Makefile
index 94c8503053a7..9528ab8b625d 100644
--- a/graphics/mesa-dri/Makefile
+++ b/graphics/mesa-dri/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	mesa-dri
 PORTVERSION=	${MESAVERSION}
+PORTREVISION=	1
 CATEGORIES=	graphics
 
 COMMENT=	OpenGL hardware acceleration drivers for DRI2+
diff --git a/graphics/mesa-dri/files/patch-src_gallium_drivers_r600_sfn_sfn__optimizer.cpp b/graphics/mesa-dri/files/patch-src_gallium_drivers_r600_sfn_sfn__optimizer.cpp
new file mode 100644
index 000000000000..56fb029e3fcd
--- /dev/null
+++ b/graphics/mesa-dri/files/patch-src_gallium_drivers_r600_sfn_sfn__optimizer.cpp
@@ -0,0 +1,16 @@
+--- src/gallium/drivers/r600/sfn/sfn_optimizer.cpp.orig	2022-12-14 21:06:11 UTC
++++ src/gallium/drivers/r600/sfn/sfn_optimizer.cpp
+@@ -354,7 +354,12 @@ CopyPropFwdVisitor::visit(AluInstr *instr)
+    auto src = instr->psrc(0);
+    auto dest = instr->dest();
+ 
+-   for (auto& i : dest->uses()) {
++   auto ii = dest->uses().begin();
++   auto ie = dest->uses().end();
++
++   while(ii != ie) {
++      auto i = *ii;
++      ++ii;
+       /* SSA can always be propagated, registers only in the same block
+        * and only if they are assigned in the same block */
+       bool can_propagate = dest->is_ssa();