git: ad2ced80deae - main - graphics/mesa-dri: Fix a crash for radeon r600 graphic cards.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
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();