pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

MesaLib-dfbsd-meson: Fix DragonFly radeonsi with option to revert SDMA uploader patch



Module Name:	pkgsrc-wip
Committed By:	David Shao <davshao%gmail.com@localhost>
Pushed By:	dshao
Date:		Sun Mar 3 13:51:27 2019 -0800
Changeset:	981a648002717d8f769021bd140d7469edc946ae

Modified Files:
	MesaLib-dfbsd-meson/Makefile
	MesaLib-dfbsd-meson/distinfo
	MesaLib-dfbsd-meson/options.mk
	MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__pipe.c
Added Files:
	MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__buffer.c
	MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__dma__cs.c
	MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__gfx__cs.c

Log Message:
MesaLib-dfbsd-meson: Fix DragonFly radeonsi with option to revert SDMA uploader patch

Update meson build through March 2, 2019.

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=981a648002717d8f769021bd140d7469edc946ae

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 MesaLib-dfbsd-meson/Makefile                       | 11 ++--
 MesaLib-dfbsd-meson/distinfo                       | 13 +++--
 MesaLib-dfbsd-meson/options.mk                     |  7 ++-
 ...patch-src_gallium_drivers_radeonsi_si__buffer.c | 65 ++++++++++++++++++++++
 ...atch-src_gallium_drivers_radeonsi_si__dma__cs.c | 22 ++++++++
 ...atch-src_gallium_drivers_radeonsi_si__gfx__cs.c | 38 +++++++++++++
 .../patch-src_gallium_drivers_radeonsi_si__pipe.c  | 32 +++++++++--
 7 files changed, 172 insertions(+), 16 deletions(-)

diffs:
diff --git a/MesaLib-dfbsd-meson/Makefile b/MesaLib-dfbsd-meson/Makefile
index 32c6348d3e..0cf2290dc8 100644
--- a/MesaLib-dfbsd-meson/Makefile
+++ b/MesaLib-dfbsd-meson/Makefile
@@ -1,10 +1,13 @@
 # $NetBSD: Makefile,v 1.18 2019/02/22 15:40:35 tnn Exp $
 
-# 2019-02-26	panfrost/midgard: Allow flt to run on most units
-COMMIT_ID=	b7a5b81d1488d4ec11ca49664b4f83ffd9dade2f
+# 2019-03-02	st/mesa: add support for lowering fp64/int64 for nir drivers
+COMMIT_ID=	cb4e3e3ef6e47811303ad3413a4ab2048696a6f6
+
+# 2019-02-28	scons: Workaround failures with MSVC when using SCons 3.0.[2-4].
+# COMMIT_ID=	838c0485e01f3d3403b430aa6df5b4a1f5262dc3
 
-# 2019-02-21	gallium/auxiliary/vl: Fix transparent issue on compute shader with rgba
-## COMMIT_ID=	eac822eac1d0d682aa199cb039e9df4c53ec5e1e
+# 2019-02-26	panfrost/midgard: Allow flt to run on most units
+# COMMIT_ID=	b7a5b81d1488d4ec11ca49664b4f83ffd9dade2f
 
 PORTNAME=	mesa		
 
diff --git a/MesaLib-dfbsd-meson/distinfo b/MesaLib-dfbsd-meson/distinfo
index 10468c4227..f8d1c7fde1 100644
--- a/MesaLib-dfbsd-meson/distinfo
+++ b/MesaLib-dfbsd-meson/distinfo
@@ -1,9 +1,9 @@
 $NetBSD: distinfo,v 1.16 2019/02/22 15:40:35 tnn Exp $
 
-SHA1 (mesa-b7a5b81d1488d4ec11ca49664b4f83ffd9dade2f.tar.xz) = 1f4abc5e81b0324a29e18e4a6462b7594426a0e5
-RMD160 (mesa-b7a5b81d1488d4ec11ca49664b4f83ffd9dade2f.tar.xz) = 9de8f29f7c4ed493fd2fcc13bf1acc219f757b49
-SHA512 (mesa-b7a5b81d1488d4ec11ca49664b4f83ffd9dade2f.tar.xz) = 77dff3852e6e9a396f1147a58e127188decf42496e89428ad3950d7bc00745fe538a7f9739740e64631bd0e3d3c65fb9411c7b6badfcea751da7cf735cca59de
-Size (mesa-b7a5b81d1488d4ec11ca49664b4f83ffd9dade2f.tar.xz) = 10566208 bytes
+SHA1 (mesa-cb4e3e3ef6e47811303ad3413a4ab2048696a6f6.tar.xz) = 3dd8d94a5b01dcfa9472f66a096341d5d588a3ca
+RMD160 (mesa-cb4e3e3ef6e47811303ad3413a4ab2048696a6f6.tar.xz) = 60b3f3e02165ce3a6ba72879a729fc45f2625bc7
+SHA512 (mesa-cb4e3e3ef6e47811303ad3413a4ab2048696a6f6.tar.xz) = 9d723565a7a7e70f4237ac390f29a5d64e014dd41b738184b5b77ac70cc6ea5339099a6f66d2acc9dd52213dcef83162f95847e949266ad28e35dc4980ea4410
+Size (mesa-cb4e3e3ef6e47811303ad3413a4ab2048696a6f6.tar.xz) = 10570888 bytes
 SHA1 (patch-configure.ac) = cddca44dbf1e2f447dd30a03440104920d6c24ab
 SHA1 (patch-include_GL_internal_dri__interface.h) = 76803a4ab6ff7e596900a0099dd9712093f8bc21
 SHA1 (patch-src_amd_common_ac__debug.c) = 8233367c3b5bc344442ea8d19488fdd1e3791ae9
@@ -21,8 +21,11 @@ SHA1 (patch-src_gallium_drivers_freedreno_freedreno__screen.c) = d76bf52c25609d6
 SHA1 (patch-src_gallium_drivers_iris_meson.build) = 9b94ae7047763cc4b1be5b39a3d9cac898e10f65
 SHA1 (patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c) = 04f95784c3270c9bb7e95377982e217962481525
 SHA1 (patch-src_gallium_drivers_nouveau_nv50_nv84__video.c) = 1b4239fe053523835ecac006894bdb0cde0ee626
+SHA1 (patch-src_gallium_drivers_radeonsi_si__buffer.c) = dc2dcb0f87a01ae0162a8c5746911c53e669cd2e
 SHA1 (patch-src_gallium_drivers_radeonsi_si__compute__blit.c) = 65235a932809c434546db0416e69241d62cdaf06
-SHA1 (patch-src_gallium_drivers_radeonsi_si__pipe.c) = c8b6d6418956469f283f3e6bab848c33f54b75e1
+SHA1 (patch-src_gallium_drivers_radeonsi_si__dma__cs.c) = 3c6a2a49e40dd8f99f5f393ad6e03345111cdeb1
+SHA1 (patch-src_gallium_drivers_radeonsi_si__gfx__cs.c) = 98ca07e2cc518125e5ec8924cbadc19f4c13de56
+SHA1 (patch-src_gallium_drivers_radeonsi_si__pipe.c) = 3c6c0e7f1ed9c2cc2b04770206880a0536a09fd2
 SHA1 (patch-src_gallium_drivers_radeonsi_si__state__shaders.c) = ed51a57765f2349bc91fd509dc03e709241bd899
 SHA1 (patch-src_gallium_drivers_vc4_vc4__bufmgr.c) = 1d591d346486fdf58893f69ab92a272e6a31a987
 SHA1 (patch-src_gallium_include_pipe_p__config.h) = f4e38eac66167b619c30076bb0144dd716310967
diff --git a/MesaLib-dfbsd-meson/options.mk b/MesaLib-dfbsd-meson/options.mk
index 3cbbf3a25a..03eec4d38a 100644
--- a/MesaLib-dfbsd-meson/options.mk
+++ b/MesaLib-dfbsd-meson/options.mk
@@ -18,6 +18,7 @@ PKG_SUPPORTED_OPTIONS+=		no_cs_queue
 PKG_SUPPORTED_OPTIONS+=		revert_threaded_context
 PKG_SUPPORTED_OPTIONS+=		revert_copy_clear
 PKG_SUPPORTED_OPTIONS+=		revert_i965_softpin
+PKG_SUPPORTED_OPTIONS+=		revert_sdma_uploader
 
 # PKG_SUGGESTED_OPTIONS+=		xvmc
 PKG_SUGGESTED_OPTIONS+=		vdpau vaapi
@@ -66,6 +67,7 @@ PKG_SUGGESTED_OPTIONS+=		revert_copy_clear
 
 .if ${OPSYS} == "DragonFly"
 PKG_SUGGESTED_OPTIONS+=		revert_i965_softpin
+PKG_SUGGESTED_OPTIONS+=		revert_sdma_uploader
 .endif
 
 .include "../../mk/bsd.options.mk"
@@ -189,7 +191,6 @@ DRI_DRIVERS+=		i965
 .if !empty(PKG_OPTIONS:Miris)
 GALLIUM_DRIVERS+=	iris
 PLIST.iris=		yes
-# MESON_ARGS+=		-Dtools=nir
 .endif
 
 # Vulkan support
@@ -398,3 +399,7 @@ CPPFLAGS+=	-DREVERT_COPY_CLEAR
 .if !empty(PKG_OPTIONS:Mrevert_i965_softpin)
 CPPFLAGS+=	-DREVERT_I965_SOFTPIN
 .endif
+
+.if !empty(PKG_OPTIONS:Mrevert_sdma_uploader)
+CPPFLAGS+=	-DREVERT_SDMA_UPLOADER
+.endif
diff --git a/MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__buffer.c b/MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__buffer.c
new file mode 100644
index 0000000000..fdbe253ae1
--- /dev/null
+++ b/MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__buffer.c
@@ -0,0 +1,65 @@
+$NetBSD$
+
+Option to revert:
+2019-02-20
+radeonsi: use SDMA for uploading data through const_uploader
+
+https://cgit.freedesktop.org/mesa/mesa/commit/?id=edbd2c1ff559cde1d9e22a9fb9059747782a72a7
+
+--- src/gallium/drivers/radeonsi/si_buffer.c.orig	2019-02-21 02:04:29.000000000 +0000
++++ src/gallium/drivers/radeonsi/si_buffer.c
+@@ -440,6 +440,9 @@ static void *si_buffer_transfer_map(stru
+ 		}
+ 	}
+ 
++#if defined(REVERT_SDMA_UPLOADER)
++	if ((usage & PIPE_TRANSFER_DISCARD_RANGE) &&
++#else
+ 	if (usage & PIPE_TRANSFER_FLUSH_EXPLICIT &&
+ 	    buf->b.b.flags & SI_RESOURCE_FLAG_UPLOAD_FLUSH_EXPLICIT_VIA_SDMA) {
+ 		usage &= ~(PIPE_TRANSFER_UNSYNCHRONIZED |
+@@ -449,6 +452,7 @@ static void *si_buffer_transfer_map(stru
+ 	}
+ 
+ 	if (usage & PIPE_TRANSFER_DISCARD_RANGE &&
++#endif
+ 	    ((!(usage & (PIPE_TRANSFER_UNSYNCHRONIZED |
+ 			 PIPE_TRANSFER_PERSISTENT))) ||
+ 	     (buf->flags & RADEON_FLAG_SPARSE))) {
+@@ -461,6 +465,12 @@ static void *si_buffer_transfer_map(stru
+ 		    si_rings_is_buffer_referenced(sctx, buf->buf, RADEON_USAGE_READWRITE) ||
+ 		    !sctx->ws->buffer_wait(buf->buf, 0, RADEON_USAGE_READWRITE)) {
+ 			/* Do a wait-free write-only transfer using a temporary buffer. */
++#if defined(REVERT_SDMA_UPLOADER)
++			unsigned offset;
++			struct si_resource *staging = NULL;
++
++			u_upload_alloc(ctx->stream_uploader, 0,
++#else
+ 			struct u_upload_mgr *uploader;
+ 			struct si_resource *staging = NULL;
+ 			unsigned offset;
+@@ -475,6 +485,7 @@ static void *si_buffer_transfer_map(stru
+ 				uploader = sctx->b.stream_uploader;
+ 
+ 			u_upload_alloc(uploader, 0,
++#endif
+                                        box->width + (box->x % SI_MAP_BUFFER_ALIGNMENT),
+ 				       sctx->screen->info.tcc_cache_line_size,
+ 				       &offset, (struct pipe_resource**)&staging,
+@@ -548,6 +559,7 @@ static void si_buffer_do_flush_region(st
+ 				      transfer->box.x % SI_MAP_BUFFER_ALIGNMENT +
+ 				      (box->x - transfer->box.x);
+ 
++#if !defined(REVERT_SDMA_UPLOADER)
+ 		if (buf->b.b.flags & SI_RESOURCE_FLAG_UPLOAD_FLUSH_EXPLICIT_VIA_SDMA) {
+ 			/* This should be true for all uploaders. */
+ 			assert(transfer->box.x == 0);
+@@ -587,6 +599,7 @@ static void si_buffer_do_flush_region(st
+ 			up->size = box->width;
+ 			return;
+ 		}
++#endif
+ 
+ 		/* Copy the staging buffer into the original one. */
+ 		si_copy_buffer(sctx, transfer->resource, &stransfer->staging->b.b,
diff --git a/MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__dma__cs.c b/MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__dma__cs.c
new file mode 100644
index 0000000000..d28481f13d
--- /dev/null
+++ b/MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__dma__cs.c
@@ -0,0 +1,22 @@
+$NetBSD$
+
+Option to revert:
+2019-02-20
+radeonsi: use SDMA for uploading data through const_uploader
+
+https://cgit.freedesktop.org/mesa/mesa/commit/?id=edbd2c1ff559cde1d9e22a9fb9059747782a72a7
+
+--- src/gallium/drivers/radeonsi/si_dma_cs.c.orig	2019-02-21 02:04:29.000000000 +0000
++++ src/gallium/drivers/radeonsi/si_dma_cs.c
+@@ -182,7 +182,11 @@ void si_need_dma_space(struct si_context
+ 					 RADEON_USAGE_WRITE)))
+ 		si_dma_emit_wait_idle(ctx);
+ 
++#if defined(REVERT_SDMA_UPLOADER)
++	unsigned sync = 0;
++#else
+ 	unsigned sync = ctx->sdma_uploads_in_progress ? 0 : RADEON_USAGE_SYNCHRONIZED;
++#endif
+ 	if (dst) {
+ 		ws->cs_add_buffer(ctx->dma_cs, dst->buf, RADEON_USAGE_WRITE | sync,
+ 				  dst->domains, 0);
diff --git a/MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__gfx__cs.c b/MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__gfx__cs.c
new file mode 100644
index 0000000000..0a475fe31b
--- /dev/null
+++ b/MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__gfx__cs.c
@@ -0,0 +1,38 @@
+$NetBSD$
+
+Option to revert:
+2019-02-20
+radeonsi: use SDMA for uploading data through const_uploader
+
+https://cgit.freedesktop.org/mesa/mesa/commit/?id=edbd2c1ff559cde1d9e22a9fb9059747782a72a7
+
+--- src/gallium/drivers/radeonsi/si_gfx_cs.c.orig	2019-02-28 21:26:15.000000000 +0000
++++ src/gallium/drivers/radeonsi/si_gfx_cs.c
+@@ -108,6 +108,19 @@ void si_flush_gfx_cs(struct si_context *
+ 	if (ctx->screen->debug_flags & DBG(CHECK_VM))
+ 		flags &= ~PIPE_FLUSH_ASYNC;
+ 
++#if defined(REVERT_SDMA_UPLOADER)
++	/* If the state tracker is flushing the GFX IB, si_flush_from_st is
++	 * responsible for flushing the DMA IB and merging the fences from both.
++	 * This code is only needed when the driver flushes the GFX IB
++	 * internally, and it never asks for a fence handle.
++	 */
++	if (radeon_emitted(ctx->dma_cs, 0)) {
++		assert(fence == NULL); /* internal flushes only */
++		si_flush_dma_cs(ctx, flags, NULL);
++	}
++
++	ctx->gfx_flush_in_progress = true;
++#else
+ 	ctx->gfx_flush_in_progress = true;
+ 
+ 	/* If the state tracker is flushing the GFX IB, si_flush_from_st is
+@@ -139,6 +152,7 @@ void si_flush_gfx_cs(struct si_context *
+ 	/* Flush SDMA (preamble IB). */
+ 	if (radeon_emitted(ctx->dma_cs, 0))
+ 		si_flush_dma_cs(ctx, flags, NULL);
++#endif
+ 
+ 	if (ctx->has_graphics) {
+ 		if (!LIST_IS_EMPTY(&ctx->active_queries))
diff --git a/MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__pipe.c b/MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__pipe.c
index 725c924fc0..5ce046baaa 100644
--- a/MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__pipe.c
+++ b/MesaLib-dfbsd-meson/patches/patch-src_gallium_drivers_radeonsi_si__pipe.c
@@ -12,7 +12,13 @@ Commit: 9b331e462e5021d994859756d46cd2519d9c9c6e
 
 https://cgit.freedesktop.org/mesa/mesa/commit/?id=9b331e462e5021d994859756d46cd2519d9c9c6e
 
---- src/gallium/drivers/radeonsi/si_pipe.c.orig	2019-02-27 03:56:56.000000000 +0000
+Option to revert:
+2019-02-20
+radeonsi: use SDMA for uploading data through const_uploader
+
+https://cgit.freedesktop.org/mesa/mesa/commit/?id=edbd2c1ff559cde1d9e22a9fb9059747782a72a7
+
+--- src/gallium/drivers/radeonsi/si_pipe.c.orig	2019-02-28 21:26:15.000000000 +0000
 +++ src/gallium/drivers/radeonsi/si_pipe.c
 @@ -197,10 +197,12 @@ static void si_destroy_context(struct pi
  		sctx->b.delete_vs_state(&sctx->b, sctx->vs_blit_color_layered);
@@ -27,7 +33,7 @@ https://cgit.freedesktop.org/mesa/mesa/commit/?id=9b331e462e5021d994859756d46cd2
  	if (sctx->cs_copy_image)
  		sctx->b.delete_compute_state(&sctx->b, sctx->cs_copy_image);
  	if (sctx->cs_copy_image_1d_array)
-@@ -378,7 +380,11 @@ static void si_set_context_param(struct 
+@@ -378,7 +380,11 @@ static void si_set_context_param(struct
  }
  
  static struct pipe_context *si_create_context(struct pipe_screen *screen,
@@ -51,7 +57,21 @@ https://cgit.freedesktop.org/mesa/mesa/commit/?id=9b331e462e5021d994859756d46cd2
  	sctx->b.destroy = si_destroy_context;
  	sctx->screen = sscreen; /* Easy accessing of screen/winsys. */
  	sctx->is_debug = (flags & PIPE_CONTEXT_DEBUG) != 0;
-@@ -647,6 +657,7 @@ fail:
+@@ -454,8 +464,13 @@ static struct pipe_context *si_create_co
+ 						   sctx, stop_exec_on_failure);
+ 	}
+ 
++#if defined(REVERT_SDMA_UPLOADER)
++	bool use_sdma_upload = false;
++	sctx->b.const_uploader = u_upload_create(&sctx->b, 128 * 1024,
++#else
+ 	bool use_sdma_upload = sscreen->info.has_dedicated_vram && sctx->dma_cs;
+ 	sctx->b.const_uploader = u_upload_create(&sctx->b, 256 * 1024,
++#endif
+ 						 0, PIPE_USAGE_DEFAULT,
+ 						 SI_RESOURCE_FLAG_32BIT |
+ 						 (use_sdma_upload ?
+@@ -647,6 +662,7 @@ fail:
  	return NULL;
  }
  
@@ -59,7 +79,7 @@ https://cgit.freedesktop.org/mesa/mesa/commit/?id=9b331e462e5021d994859756d46cd2
  static struct pipe_context *si_pipe_create_context(struct pipe_screen *screen,
  						   void *priv, unsigned flags)
  {
-@@ -677,6 +688,7 @@ static struct pipe_context *si_pipe_crea
+@@ -677,6 +693,7 @@ static struct pipe_context *si_pipe_crea
  				       sscreen->info.drm_major >= 3 ? si_create_fence : NULL,
  				       &((struct si_context*)ctx)->tc);
  }
@@ -67,7 +87,7 @@ https://cgit.freedesktop.org/mesa/mesa/commit/?id=9b331e462e5021d994859756d46cd2
  
  /*
   * pipe_screen
-@@ -874,7 +886,11 @@ struct pipe_screen *radeonsi_screen_crea
+@@ -874,7 +891,11 @@ struct pipe_screen *radeonsi_screen_crea
  						       debug_options, 0);
  
  	/* Set functions first. */
@@ -79,7 +99,7 @@ https://cgit.freedesktop.org/mesa/mesa/commit/?id=9b331e462e5021d994859756d46cd2
  	sscreen->b.destroy = si_destroy_screen;
  
  	si_init_screen_get_functions(sscreen);
-@@ -1144,7 +1160,11 @@ struct pipe_screen *radeonsi_screen_crea
+@@ -1144,7 +1165,11 @@ struct pipe_screen *radeonsi_screen_crea
  		si_init_compiler(sscreen, &sscreen->compiler_lowp[i]);
  
  	/* Create the auxiliary context. This must be done last. */


Home | Main Index | Thread Index | Old Index