[cairo] Fwd: cairo_paint() with GPU Buffer
abimathi08 at gmail.com
Mon Feb 11 07:11:30 UTC 2019
---------- Forwarded message ---------
From: Abimathi Natarajan <abimathi08 at gmail.com>
Date: Thu, Feb 7, 2019, 6:27 PM
Subject: Re: [cairo] cairo_paint() with GPU Buffer
To: Uli Schlachter <psychon at znc.in>
My sample code contains two parts,
- Decoding an input file using ffmpeg and get raw buffers (GPU allocated
within FFMPEG ) in rgb32 format. My code does exactly what the below
ffmpeg command does.
ffmpeg -hwaccel vaapi -hwaccel_device
/dev/dri/renderD128 -hwaccel_output_format vaapi -i input.mp4
The above command will decode the input file (input.mp4) with
hardware accelerations(vaapi) and hwmap will directly map the hardware
frames to system memory.
- I will directly feed this memory to
cairo_image_surface_create_for_data ((unsigned char
*)buffer, CAIRO_FORMAT_ARGB32,width, height, stride) to create a
cairo_surface for the given frame.
- cairo_paint() in
will paint the cairo_surface over weston compositor.
- When we measured the time taken by this API to paint the GPU
buffer, we observed it took approximately 400 ms to paint a single 4k
- The github link is not my actual sample code, However my
application uses similar flow only. (I'm using cairo with weston
On Wed, Feb 6, 2019, 12:40 AM Uli Schlachter <psychon at znc.in> wrote:
> On 05.02.19 07:16, Abimathi Natarajan wrote:
> > I'm implementing a sample program with Weston to render video (decoded
> > using ffmpeg VAAPI) frames using Cairo graphics.
> > Each frame is of 4k size
> How complicated is your example program? Do you have a link to it or can
> you send it by mail?
> > I'm passing GPU buffer directly to cairo_image_surface_create_for_data()
> > create a cairo_surface for each frame.
> > When I render the buffer using cairo_paint() , the API is taking
> > approximately 400 ms for each buffer.
> Uhm, can you tell us more about the cairo_paint() call? I assume you are
> copying from the image surface that you created. Where are you copying
> to? Is it just the call to cairo_paint() that takes so long or did you
> measure more than just that?
> Also, what exactly does "I'm passing GPU buffer directly" mean? Is the
> GPU memory directly accessible to the CPU? If so, I would expect this to
> be uncached and slow, which is why I am asking.
> Homophobia - The fear that another man will treat you the way you treat
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the cairo