See https://gitlab.freedesktop.org/mesa/mesa/-/issues/5731#note_1220488
This commit is contained in:
		
							parent
							
								
									3e1316764e
								
							
						
					
					
						commit
						d4a9790c4e
					
				
							
								
								
									
										58
									
								
								0001-iris-implement-inter-context-busy-tracking.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								0001-iris-implement-inter-context-busy-tracking.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,58 @@ | |||||||
|  | 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 | ||||||
|  | 
 | ||||||
| @ -82,6 +82,12 @@ Patch0006: 0004-Revert-nouveau-no-modifier-the-invalid-modifier.patch | |||||||
| Patch0007: 0005-Revert-nouveau-Use-DRM_FORMAT_MOD_NVIDIA_BLOCK_LINEA.patch | Patch0007: 0005-Revert-nouveau-Use-DRM_FORMAT_MOD_NVIDIA_BLOCK_LINEA.patch | ||||||
| Patch0008: 0006-Revert-nouveau-Stash-supported-sector-layout-in-scre.patch | Patch0008: 0006-Revert-nouveau-Stash-supported-sector-layout-in-scre.patch | ||||||
| 
 | 
 | ||||||
|  | # 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 | ||||||
|  | Patch0009: 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++ | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user