Bug#889030: virtualbox: Windows10 guest flickers with nVidia drivers, there's a patch

2018-02-01 Thread Gianfranco Costamagna
control: close -1
On Thu, 01 Feb 2018 11:40:35 +0100 Marius Mikucionis  
wrote:
> Package: virtualbox
> Version: 5.2.6-dfsg-2
> Severity: normal
> Tags: patch
> 
> Dear Maintainer,
> 
> I am running Windows 10 guest and the screen flickers when something is 
> (re)drawn,
> basically it's unusable.
> 
> Relevant configuration to reproduce:
> 1) nVidia drivers on the host.
> 2) virtualbox guest additions with 3D acceleration enabled.
> 3) enabled 3D accelaration in the Windows 10 machine settings.
> 
> One workaround is to disable 3D acceleration, but here I found a better 
> solution:
> 
> https://techblog.devlat.eu/2017/04/07/screen-flickering-in-virtualbox-with-3d-enabled/
> in particular it says:
> 
> With nVidia drivers on the host, a race condition happens, causing buffers to 
> be swapped (i.e. picture to be shown) before rendering is completed by the 
> client, hence the flickering.
> The only workaround is to change (comment out actually) a single line in 
> VirtualBox source and recompile it. After recompilation is done, it is 
> actually possible to just replace a single freshly compiled file, 
> VBoxOGLrenderspu.so, which is located in /usr/lib/virtualbox/. No need to 
> uninstall the “original” VirtualBox and install the self-compiled one.
> 
> The patch is just one line:
> https://www.virtualbox.org/attachment/ticket/13653/vbox-NVIDIA-fix-v2.patch.txt
> --- 
> /home/alexey/vbox-orig/VirtualBox-5.0.0_BETA4/./src/VBox/HostServices/SharedOpenGL/render/renderspu_glx.c
>2015-05-18 18:02:05.0 +0300
> +++ ./src/VBox/HostServices/SharedOpenGL/render/renderspu_glx.c 2015-05-22 
> 23:33:33.0 +0300
> @@ -1922,11 +1922,10 @@
>  XSync(window->visual->dpy, 0);
>  }
>  }
>  }
>  
> -#define CR_RENDER_FORCE_PRESENT_MAIN_THREAD
>  
>  void renderspu_SystemVBoxPresentComposition( WindowInfo *window, const 
> struct VBOXVR_SCR_COMPOSITOR_ENTRY *pChangedEntry )
>  {
>  /* the CR_RENDER_FORCE_PRESENT_MAIN_THREAD is actually inherited from 
> cocoa backend impl,
>   * here it forces rendering in WinCmd thread rather than a Main thread.
> 
> 
> Perhaps this patch can be included in Debian.
> 

Hello, thanks for the patch!
There is a runtime variable that you can use to disable that thing, however I 
don't like to apply such patches, until upstream merges them.
https://www.virtualbox.org/ticket/13653/
I pinged upstream, I'll include in case they ack it

thanks

G.



signature.asc
Description: OpenPGP digital signature


Bug#889030: virtualbox: Windows10 guest flickers with nVidia drivers, there's a patch

2018-02-01 Thread Marius Mikucionis
Package: virtualbox
Version: 5.2.6-dfsg-2
Severity: normal
Tags: patch

Dear Maintainer,

I am running Windows 10 guest and the screen flickers when something is 
(re)drawn,
basically it's unusable.

Relevant configuration to reproduce:
1) nVidia drivers on the host.
2) virtualbox guest additions with 3D acceleration enabled.
3) enabled 3D accelaration in the Windows 10 machine settings.

One workaround is to disable 3D acceleration, but here I found a better 
solution:

https://techblog.devlat.eu/2017/04/07/screen-flickering-in-virtualbox-with-3d-enabled/
in particular it says:

With nVidia drivers on the host, a race condition happens, causing buffers to 
be swapped (i.e. picture to be shown) before rendering is completed by the 
client, hence the flickering.
The only workaround is to change (comment out actually) a single line in 
VirtualBox source and recompile it. After recompilation is done, it is actually 
possible to just replace a single freshly compiled file, VBoxOGLrenderspu.so, 
which is located in /usr/lib/virtualbox/. No need to uninstall the “original” 
VirtualBox and install the self-compiled one.

The patch is just one line:
https://www.virtualbox.org/attachment/ticket/13653/vbox-NVIDIA-fix-v2.patch.txt
--- 
/home/alexey/vbox-orig/VirtualBox-5.0.0_BETA4/./src/VBox/HostServices/SharedOpenGL/render/renderspu_glx.c
   2015-05-18 18:02:05.0 +0300
+++ ./src/VBox/HostServices/SharedOpenGL/render/renderspu_glx.c 2015-05-22 
23:33:33.0 +0300
@@ -1922,11 +1922,10 @@
 XSync(window->visual->dpy, 0);
 }
 }
 }
 
-#define CR_RENDER_FORCE_PRESENT_MAIN_THREAD
 
 void renderspu_SystemVBoxPresentComposition( WindowInfo *window, const struct 
VBOXVR_SCR_COMPOSITOR_ENTRY *pChangedEntry )
 {
 /* the CR_RENDER_FORCE_PRESENT_MAIN_THREAD is actually inherited from 
cocoa backend impl,
  * here it forces rendering in WinCmd thread rather than a Main thread.


Perhaps this patch can be included in Debian.

Thanks!

-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (900, 'testing'), (500, 'stable'), (50, 'unstable'), (1, 
'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.14.0-3-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_DK.utf8, LC_CTYPE=en_DK.utf8 (charmap=UTF-8), 
LANGUAGE=en_DK.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages virtualbox depends on:
ii  adduser   3.116
ii  iproute2  4.14.1-1
ii  libc6 2.26-4
ii  libcurl3-gnutls   7.57.0-1
ii  libdevmapper1.02.12:1.02.145-4.1
ii  libgcc1   1:7.2.0-19
ii  libgsoap-2.8.49   2.8.49-1
ii  libpng16-16   1.6.34-1
ii  libpython3.6  3.6.4-3
ii  libsdl1.2debian   1.2.15+dfsg2-0.1
ii  libssl1.1 1.1.0f-3
ii  libstdc++67.2.0-19
ii  libvncserver1 0.9.11+dfsg-1
ii  libx11-6  2:1.6.4-3
ii  libxcursor1   1:1.1.15-1
ii  libxext6  2:1.3.3-1+b2
ii  libxml2   2.9.4+dfsg1-6.1
ii  libxmu6   2:1.1.2-2
ii  libxt61:1.1.5-1
ii  procps2:3.3.12-3
ii  python3   3.6.4-1
ii  python3.6 3.6.4-3
ii  virtualbox-dkms [virtualbox-modules]  5.2.6-dfsg-2
ii  zlib1g1:1.2.8.dfsg-5

Versions of packages virtualbox recommends:
ii  libgl1  1.0.0-1.1
ii  libqt5core5a5.9.2+dfsg-7
ii  libqt5opengl5   5.9.2+dfsg-7
ii  libqt5widgets5  5.9.2+dfsg-7
ii  virtualbox-qt   5.2.6-dfsg-2

Versions of packages virtualbox suggests:
ii  vde22.3.2+r586-2.1
ii  virtualbox-guest-additions-iso  5.2.6-1

-- no debconf information