diff mbox series

[3/3] drm/vmwgfx: Disable coherent dumb buffers without 3d

Message ID 20240816183332.31961-4-zack.rusin@broadcom.com (mailing list archive)
State New, archived
Headers show
Series Various prime/dumb buffer fixes | expand

Commit Message

Zack Rusin Aug. 16, 2024, 6:32 p.m. UTC
Coherent surfaces make only sense if the host renders to them using
accelerated apis. Without 3d the entire content of dumb buffers stays
in the guest making all of the extra work they're doing to synchronize
between guest and host useless.

Configurations without 3d also tend to run with very low graphics
memory limits. The pinned console fb, mob cursors and graphical login
manager tend to run out of 16MB graphics memory that those guests use.

Fix it by making sure the coherent dumb buffers are only used on
configs with 3d enabled.

Signed-off-by: Zack Rusin <zack.rusin@broadcom.com>
Fixes: d6667f0ddf46 ("drm/vmwgfx: Fix handling of dumb buffers")
Reported-by: Christian Heusel <christian@heusel.eu>
Closes: https://lore.kernel.org/all/0d0330f3-2ac0-4cd5-8075-7f1cbaf72a8e@heusel.eu
Cc: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
Cc: dri-devel@lists.freedesktop.org
Cc: <stable@vger.kernel.org> # v6.9+
Cc: Maaz Mombasawala <maaz.mombasawala@broadcom.com>
Cc: Martin Krastev <martin.krastev@broadcom.com>
---
 drivers/gpu/drm/vmwgfx/vmwgfx_surface.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Christian Heusel Aug. 19, 2024, 6:05 p.m. UTC | #1
On 24/08/16 02:32PM, Zack Rusin wrote:
> Coherent surfaces make only sense if the host renders to them using
> accelerated apis. Without 3d the entire content of dumb buffers stays
> in the guest making all of the extra work they're doing to synchronize
> between guest and host useless.
> 
> Configurations without 3d also tend to run with very low graphics
> memory limits. The pinned console fb, mob cursors and graphical login
> manager tend to run out of 16MB graphics memory that those guests use.
> 
> Fix it by making sure the coherent dumb buffers are only used on
> configs with 3d enabled.

Hello Zack,

just FYI: somebody on the Arch Linux Forums tested the suggested patch
and found it working:

https://bbs.archlinux.org/viewtopic.php?pid=2190679#p2190679

Cheers,
Chris
diff mbox series

Patch

diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c b/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
index 8ae6a761c900..1625b30d9970 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
@@ -2283,9 +2283,11 @@  int vmw_dumb_create(struct drm_file *file_priv,
 	/*
 	 * Without mob support we're just going to use raw memory buffer
 	 * because we wouldn't be able to support full surface coherency
-	 * without mobs
+	 * without mobs. There also no reason to support surface coherency
+	 * without 3d (i.e. gpu usage on the host) because then all the
+	 * contents is going to be rendered guest side.
 	 */
-	if (!dev_priv->has_mob) {
+	if (!dev_priv->has_mob || !vmw_supports_3d(dev_priv)) {
 		int cpp = DIV_ROUND_UP(args->bpp, 8);
 
 		switch (cpp) {