rebase to 22.1.1

Resolves: rhbz#2070179
This commit is contained in:
Dave Airlie 2022-06-13 14:48:04 +10:00
parent e72d60d8bf
commit 10c99736d0
3 changed files with 13 additions and 77 deletions

View File

@ -1,58 +0,0 @@
From 07dc3d4238e57901ccf98e0b506d9aad2c86b9d9 Mon Sep 17 00:00:00 2001
From: Paulo Zanoni <paulo.r.zanoni@intel.com>
Date: Mon, 10 Jan 2022 17:18:05 -0800
Subject: [PATCH] iris: implement inter-context busy-tracking
Previously, no buffers were ever marked as EXEC_OBJECT_ASYNC so the
Kernel would ensure dependency tracking for us. After we implemented
explicit busy tracking in commit 89a34cb8450a, only the external
objects kept relying on the Kernel's implicit tracking and Iris did
inter-batch busy tracking, meaning we lost inter-screen and
inter-context synchronization. This seemed fine to me since, as far as
I understood, it is the duty of the application to synchronize itself
against multiple screens and contexts.
The problem here is that applications were actually relying on the old
behavior where the Kernel guarantees synchronization, so 89a34cb8450a
can be seen as a regression. This commit addresses the inter-context
synchronization case.
Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5731
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5812
Fixes: 89a34cb8450a ("iris: switch to explicit busy tracking")
Tested-by: Konstantin Kharlamov <hi-angel@yandex.ru>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
---
src/gallium/drivers/iris/iris_batch.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/gallium/drivers/iris/iris_batch.c b/src/gallium/drivers/iris/iris_batch.c
index b7bde60aae7..1b0c5896d4f 100644
--- a/src/gallium/drivers/iris/iris_batch.c
+++ b/src/gallium/drivers/iris/iris_batch.c
@@ -835,6 +835,12 @@ update_bo_syncobjs(struct iris_batch *batch, struct iris_bo *bo, bool write)
move_syncobj_to_batch(batch, &deps->write_syncobjs[other_batch_idx],
I915_EXEC_FENCE_WAIT);
+ /* If it's being written by our screen, wait on it too. This is relevant
+ * when there are multiple contexts on the same screen. */
+ if (deps->write_syncobjs[batch_idx])
+ move_syncobj_to_batch(batch, &deps->write_syncobjs[batch_idx],
+ I915_EXEC_FENCE_WAIT);
+
struct iris_syncobj *batch_syncobj = iris_batch_get_signal_syncobj(batch);
if (write) {
@@ -847,6 +853,8 @@ update_bo_syncobjs(struct iris_batch *batch, struct iris_bo *bo, bool write)
move_syncobj_to_batch(batch, &deps->read_syncobjs[other_batch_idx],
I915_EXEC_FENCE_WAIT);
+ move_syncobj_to_batch(batch, &deps->read_syncobjs[batch_idx],
+ I915_EXEC_FENCE_WAIT);
} else {
/* If we're reading, replace the other read from our batch index. */
--
GitLab

View File

@ -8,15 +8,16 @@
%global with_omx 1 %global with_omx 1
%global with_opencl 1 %global with_opencl 1
%endif %endif
%global base_dri nouveau,r100,r200
%global base_vulkan ,amd %global base_vulkan ,amd
%endif %endif
%ifarch %{ix86} x86_64 %ifarch %{ix86} x86_64
%global with_iris 1 %global with_iris 1
%if !0%{?rhel}
%global with_crocus 1
%endif
%global with_vmware 1 %global with_vmware 1
%global with_xa 1 %global with_xa 1
%global platform_dri ,i915,i965
%global platform_vulkan ,intel %global platform_vulkan ,intel
%endif %endif
@ -49,16 +50,13 @@
%bcond_with valgrind %bcond_with valgrind
%endif %endif
%if !0%{?rhel}
%global dri_drivers %{?base_dri}%{?platform_dri}
%endif
%global vulkan_drivers swrast%{?base_vulkan}%{?platform_vulkan} %global vulkan_drivers swrast%{?base_vulkan}%{?platform_vulkan}
Name: mesa Name: mesa
Summary: Mesa graphics libraries Summary: Mesa graphics libraries
%global ver 21.3.4 %global ver 22.1.1
Version: %{lua:ver = string.gsub(rpm.expand("%{ver}"), "-", "~"); print(ver)} Version: %{lua:ver = string.gsub(rpm.expand("%{ver}"), "-", "~"); print(ver)}
Release: 2%{?dist} Release: 1%{?dist}
License: MIT License: MIT
URL: http://www.mesa3d.org URL: http://www.mesa3d.org
@ -68,12 +66,6 @@ Source0: https://mesa.freedesktop.org/archive/%{name}-%{ver}.tar.xz
# Fedora opts to ignore the optional part of clause 2 and treat that code as 2 clause BSD. # Fedora opts to ignore the optional part of clause 2 and treat that code as 2 clause BSD.
Source1: Mesa-MLAA-License-Clarification-Email.txt Source1: Mesa-MLAA-License-Clarification-Email.txt
# Patches to fix Intel blinking, see:
# https://gitlab.freedesktop.org/pzanoni/mesa/-/commit/07dc3d4238e57901ccf98e0b506d9aad2c86b9d9
# https://bugzilla.redhat.com/show_bug.cgi?id=2036600
# https://bugzilla.redhat.com/show_bug.cgi?id=2040771
Patch0001: 0001-iris-implement-inter-context-busy-tracking.patch
BuildRequires: meson >= 0.45 BuildRequires: meson >= 0.45
BuildRequires: gcc BuildRequires: gcc
BuildRequires: gcc-c++ BuildRequires: gcc-c++
@ -326,10 +318,9 @@ cp %{SOURCE1} docs/
%meson \ %meson \
-Dplatforms=x11,wayland \ -Dplatforms=x11,wayland \
-Ddri3=enabled \ -Ddri3=enabled \
-Ddri-drivers=%{?dri_drivers} \
-Dosmesa=true \ -Dosmesa=true \
%if 0%{?with_hardware} %if 0%{?with_hardware}
-Dgallium-drivers=swrast,virgl,nouveau%{?with_r300:,r300}%{?with_iris:,iris}%{?with_vmware:,svga}%{?with_radeonsi:,radeonsi}%{?with_r600:,r600}%{?with_freedreno:,freedreno}%{?with_etnaviv:,etnaviv}%{?with_tegra:,tegra}%{?with_vc4:,vc4}%{?with_v3d:,v3d}%{?with_kmsro:,kmsro}%{?with_lima:,lima}%{?with_panfrost:,panfrost}%{?with_vulkan_hw:,zink} \ -Dgallium-drivers=swrast,virgl,nouveau%{?with_r300:,r300}%{?with_crocus:,crocus}%{?with_iris:,iris}%{?with_vmware:,svga}%{?with_radeonsi:,radeonsi}%{?with_r600:,r600}%{?with_freedreno:,freedreno}%{?with_etnaviv:,etnaviv}%{?with_tegra:,tegra}%{?with_vc4:,vc4}%{?with_v3d:,v3d}%{?with_kmsro:,kmsro}%{?with_lima:,lima}%{?with_panfrost:,panfrost}%{?with_vulkan_hw:,zink} \
%else %else
-Dgallium-drivers=swrast,virgl \ -Dgallium-drivers=swrast,virgl \
%endif %endif
@ -491,9 +482,8 @@ popd
%{_libdir}/dri/radeonsi_dri.so %{_libdir}/dri/radeonsi_dri.so
%endif %endif
%ifarch %{ix86} x86_64 %ifarch %{ix86} x86_64
%if !0%{?rhel} %if 0%{?with_crocus}
%{_libdir}/dri/i915_dri.so %{_libdir}/dri/crocus_dri.so
%{_libdir}/dri/i965_dri.so
%endif %endif
%{_libdir}/dri/iris_dri.so %{_libdir}/dri/iris_dri.so
%endif %endif
@ -589,6 +579,7 @@ popd
%{_libdir}/libVkLayer_MESA_device_select.so %{_libdir}/libVkLayer_MESA_device_select.so
%{_datadir}/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json %{_datadir}/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json
%if 0%{?with_vulkan_hw} %if 0%{?with_vulkan_hw}
%{_datadir}/drirc.d/00-radv-defaults.conf
%{_libdir}/libvulkan_radeon.so %{_libdir}/libvulkan_radeon.so
%{_datadir}/vulkan/icd.d/radeon_icd.*.json %{_datadir}/vulkan/icd.d/radeon_icd.*.json
%ifarch %{ix86} x86_64 %ifarch %{ix86} x86_64
@ -604,6 +595,9 @@ popd
%endif %endif
%changelog %changelog
* Mon Jun 13 2022 Dave Airlie <airlied@redhat.com> - 22.1.1-1
- rebase to 22.1.1
* Tue Jan 25 2022 Dave Airlie <airlied@redhat.com> - 21.3.4-2 * Tue Jan 25 2022 Dave Airlie <airlied@redhat.com> - 21.3.4-2
- Add iris regression fix. - Add iris regression fix.

View File

@ -1 +1 @@
SHA512 (mesa-21.3.4.tar.xz) = 7aeea3dba0d39f4ac9f23c54aa0e6853d48000f50c4dd484618c28debe705cdd765ae8fafb5ddea0773976f7189849d9128be3f2282fea74394b59019cb786b9 SHA512 (mesa-22.1.1.tar.xz) = 4d4ad8b0e9bd0584635153af809bfbc5dc61e1f6994ae2719a3298b5a6e26dee96d28d151483e258a793313d19c54ca365a58a0849b5238964ae48941f423ae4