Hardware GpuMemoryBuffer in Windows

10,855 views
Skip to first unread message

alvaro.fue...@gmail.com

unread,
Apr 12, 2016, 5:16:21 PM4/12/16
to Graphics-dev
Hi everyone:

I got a pretty straightforward question: Is there a way to enable the hardware GpuMemoryBuffer in Windows?

My desktop computer has an AMD FirePro W7100 graphic card, with the DirectGMA technology. Is there a way to use that?

Any chance to use a workaround? What about the zero-copy? I run Chrome with the following flags:

--canvas-msaa-sample-count=0 --enable-gpu-memory-buffer-video-frames --enable-gpu-rasterization --enable-hardware-overlays --enable-native-gpu-memory --enable-zero-copy --force-gpu-rasterization --gpu-rasterization-msaa-sample-count=0 --ignore-gpu-blacklist --num-raster-threads=6

But all the GpuMemoryBuffer Status fields are "Software only". The --enable-gpu-memory-buffer-compositor-resources flag causes screen flicks.

I need the maximum video performance because i am developing a videowall controller. When I show 4 fullhd videos uncompressed simultaneously all runs smooth, but adding another one the performance is heavily reduced. By nine the FPS drops to 20.

All the videos are from capture cards, so non are compressed.

The CPU is an hexacore i7-5...@3.50Ghz with 8Gb DDR4 in dual channel.


Many thanks in advance.

David Reveman

unread,
Apr 12, 2016, 10:39:03 PM4/12/16
to alvaro.fue...@gmail.com, Graphics-dev, dcas...@chromium.org, John Bauman
+dcastagna, +jbauman

Windows unfortunately doesn't provide what we need to native GMBs that can be shared across process as needed by chrome. John can provide more details about this if necessary.

Without native GMB support, zero-copy is not really going to to be zero-copy and the default one-copy mechanism is likely better.

More cores should help as chrome can take advantage of them when you increase --num-raster-threads. 

Not sure what --enable-gpu-memory-buffer-compositor-resources does but if it results in drawing artifacts such as flickering then that sounds like a bug and it would be great if you filed on at crbug.com.

dcastagna@ is working on making video playback more efficient. If you share more details about the video format and decoder then he can probably tell you if there's something in store that will help improve performance for your use case.

David

Wang, Gary C

unread,
Apr 12, 2016, 10:55:37 PM4/12/16
to alvaro.fue...@gmail.com, Graphics-dev
https://software.intel.com/en-us/articles/native-one-copy-texture-uploads-for-chrome-os-on-intel-architecture-enabled-by-default

"... If you want to try the Zero-copy option, go to chrome://flags and enable Zero-copy rasterizer, as shown in the screenshot below:..."

Please refer it. I might be helpful for you.
--
You received this message because you are subscribed to the Google Groups "Graphics-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to graphics-dev...@chromium.org.

David Reveman

unread,
Apr 12, 2016, 10:59:40 PM4/12/16
to Wang, Gary C, alvaro.fue...@gmail.com, Graphics-dev
This is ChromeOS specific so I don't think it's helpful in this case.

Wang, Gary C

unread,
Apr 12, 2016, 11:09:19 PM4/12/16
to David Reveman, alvaro.fue...@gmail.com, Graphics-dev

Yes. David is right. I missed understanding on question being for Win platform.

 

Sorry. the zero-copy flag is for CrOS kernel (Ozone-Freon/vgem).

Alvaro Fuentes

unread,
Apr 12, 2016, 11:34:46 PM4/12/16
to David Reveman, Graphics-dev, dcas...@chromium.org, John Bauman
First of all, thanks for your answer.

Secondly: I read somewhere that under Mac OS the hardware GMB is supported. Its that true? If is, i'll try to setup a Hackintosh to test it.

What about Linux with XOrg, Wayland and Mir?

Many thanks.
--
Alvaro Patricio Fuentes Zurita.
Analista Programador Computacional.
DuocUC.

David Reveman

unread,
Apr 12, 2016, 11:43:58 PM4/12/16
to Alvaro Fuentes, Graphics-dev, dcas...@chromium.org, John Bauman
MacOS, yes we have native GMB support using IOSurfaces there.

Linux, if using ozone drm platform, yes. Maybe when using ozone wayland in the near future too. X11 and Mir, no. 

David Reveman

unread,
Apr 12, 2016, 11:45:17 PM4/12/16
to Alvaro Fuentes, Graphics-dev, dcas...@chromium.org, John Bauman
On Tue, Apr 12, 2016 at 11:43 PM, David Reveman <rev...@google.com> wrote:
MacOS, yes we have native GMB support using IOSurfaces there.

Linux, if using ozone drm platform, yes. Maybe when using ozone wayland in the near future too. X11 and Mir, no. 

Daniele Castagna

unread,
Apr 12, 2016, 11:46:17 PM4/12/16
to Alvaro Fuentes, David Reveman, Graphics-dev, John Bauman
Did you try the trace profiling tool
(https://www.chromium.org/developers/how-tos/trace-event-profiling-tool)
to see where the bottleneck is?

You can just go to chrome://tracing and record a trace (select
rendering). I'd add media category in there too.

On Tue, Apr 12, 2016 at 11:34 PM, Alvaro Fuentes
<alvaro.fue...@gmail.com> wrote:

John Bauman

unread,
Apr 13, 2016, 5:03:41 AM4/13/16
to alvaro.fue...@gmail.com, Graphics-dev
On Tue, Apr 12, 2016 at 2:16 PM, <alvaro.fue...@gmail.com> wrote:
Hi everyone:

I got a pretty straightforward question: Is there a way to enable the hardware GpuMemoryBuffer in Windows?

No, native GpuMemoryBuffers aren't supported on windows. Using D3D is impossible from within the renderer sandbox, and there's no way to create a texture that's shareable cross-process and mappable on the CPU (staging buffers seem to work, but are emulated). 

My desktop computer has an AMD FirePro W7100 graphic card, with the DirectGMA technology. Is there a way to use that?

Any chance to use a workaround? What about the zero-copy? I run Chrome with the following flags:

--canvas-msaa-sample-count=0 --enable-gpu-memory-buffer-video-frames --enable-gpu-rasterization --enable-hardware-overlays --enable-native-gpu-memory --enable-zero-copy --force-gpu-rasterization --gpu-rasterization-msaa-sample-count=0 --ignore-gpu-blacklist --num-raster-threads=6

enabling gpu rasterization means that zero copy won't be used anyway. --enable-hardware-overlays also doesn't work on windows.

Tiago Vignatti

unread,
Apr 13, 2016, 9:21:29 AM4/13/16
to graphi...@chromium.org
nit: not using VGEM anymore but instead the dma-buf new API.

Tiago

On 04/13/2016 12:08 AM, Wang, Gary C wrote:
> Yes. David is right. I missed understanding on question being for Win
> platform.
>
> Sorry. the zero-copy flag is for CrOS kernel (Ozone-Freon/vgem).
>
> *From:*rev...@google.com [mailto:rev...@google.com] *On Behalf Of
> *David Reveman
> *Sent:* Wednesday, April 13, 2016 11:00 AM
> *To:* Wang, Gary C <gary....@intel.com>
> *Cc:* alvaro.fue...@gmail.com; Graphics-dev
> <graphi...@chromium.org>
> *Subject:* Re: Hardware GpuMemoryBuffer in Windows
> The CPU is an hexacore i7-5...@3.50Ghz <mailto:i7-5...@3.50Ghz>
> with 8Gb DDR4 in dual channel.
>
>
> Many thanks in advance.
>
> --
> You received this message because you are subscribed to the Google
> Groups "Graphics-dev" group.
> To unsubscribe from this group and stop receiving emails from it,
> send an email to graphics-dev...@chromium.org
> <mailto:graphics-dev%2Bunsu...@chromium.org>.
>
> --
> You received this message because you are subscribed to the Google
> Groups "Graphics-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to graphics-dev...@chromium.org
> <mailto:graphics-dev...@chromium.org>.

Dongseong Hwang

unread,
May 4, 2016, 12:06:46 PM5/4/16
to Graphics-dev, tiago.v...@intel.com
Let me add some comments
 
--enable-native-gpu-memory : errata. you must want --enable-native-gpu-memory-buffers but it's not supported in Windows, as John mentioned.
--enable-gpu-rasterization : as you use gpu rasterization, you don't need gpu-memory-buffers for "Contents" rendering. Video has some different story.
--enable-hardware-overlays : currently MacOSX and ChromeOS (experimental) work with it.
--enable-gpu-memory-buffer-compositor-resources : it's hardware overlay related feature, which promotes normal layer to hardware overlay plane. Only MacOSX works.
i7-5...@3.50Ghz : As you use Haswell, H.264 (i.e. mp4) decoding is gpu accelerated. Check "Video Decode" in chrome://gpu. If the videowall controller handles only H.264 video, you don't need zero-copy playback video, which Windows doesn't support. However, if you need to decode VP9 (e.g. youtube), the story is different. Recommend to use Skylake, which decodes it by GPU :)

nit: not using VGEM anymore but instead the dma-buf new API.  

yeah :) 

fall...@gmail.com

unread,
Jul 23, 2016, 9:33:12 AM7/23/16
to Graphics-dev, tiago.v...@intel.com
guys, thanks for the info, interesting if confusing (to me anyway)

obviously the billion dollar question is: what is the fastest most efficient setting for Chrome under Windows?

i'm especially interested in the Intel graphics situation where with Iris graphics cache surely there could be some wonderful power/performance benefits to be had?

Reply all
Reply to author
Forward
0 new messages