Re: Threaded animation with cairo_gl backend over a GtkWidget

Carlos López González <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <CAF52pzKLUAkmV4Qi_pnSau65hhm3Q7T06iU-Rq32htPgOibugw@mail.gmail.com>
Hi!
I've modified the mentioned Cairo animation with miltithreading example [1]
to use a cairo_gl_surface, expecting to have some GPU acceleration. It
works fine (doesn't crash) but when I use a cairo_gl_surface it runs much
slow than when I use a image surface (!). See code here:
https://github.com/genete/my-test-area/blob/direct_draw/src/cairo_sample.c

commenting the line at 135 and 137 I can use cairo_image or cairo_gl.

Same code has been compiled and run in a iMac 2011 using XQuarz as Xserver
with the same result.

Am I missing something at the cairo_gl code or simply I would never could
make use of my GPU in my linux laptop or my iMac?

I appreciate any help.
Thanks!

[1] http://cairographics.org/threaded_animation_with_cairo/

2013/1/15 Carlos López González <[email protected]>

> I forgot to CC cairo list
>
> ---------- Forwarded message ----------
> From: Carlos López González <[email protected]>
> Date: 2013/1/15
> Subject: Re: [cairo] Threaded animation with cairo_gl backend over a
> GtkWidget
> To: Uli Schlachter <[email protected]>
>
>
> Hi!
> I've upgraded to Ubuntu 12.10 and as part of the upgrade Ubuntu disabled
> the proprietary nvidia driver.
> With the  the nouveau driver enabled and simply enable multithreading, it
> crash.
>
> carlos@laptop:~/my-test-area/build$ LANG=C ./cairo-sample
> [xcb] Unknown request in queue while dequeuing
> [xcb] Most likely this is a multi-threaded client and XInitThreads has not
> been called
> [xcb] Aborting, sorry about that.
> cairo-sample: ../../src/xcb_io.c:178: dequeue_pending_request: Assertion
> `!xcb_xlib_unknown_req_in_deq' failed.
> Abortado (`core' generado)
>
> But when add XIniThreads()  as shown in the previous post, it doesn't
> crash but it runs *extremely* slow (?). I'm using a GeForce 8400M GS
> graphic card (glxgears runs smoothly).
>
> If I enable the private nvidia-current driver it crashes in any case with
> the same message than I had before. The suggested breakpoint or the --sync
> option doesn't help much.
>
> So which are my alternatives?
>
> If I create the cairo_gl_surface but not using
> cairo_gl_surface_create_for_window but the cairo_gl_create_surface, would
> it have GPU acceleration as well?
>
> I just want to create a minimal example of multithreading drawing over a
> gtkwidget using cairo_gl to later translate to a bigger application, but it
> seems that it is impossible.
>
> Is there any *real* application that uses Cairo with GPU acceleration in
> production?
>
> Thanks!
>
>
> 2013/1/14 Uli Schlachter <[email protected]>
>
>> Hi,
>>
>> On 14.01.2013 21:24, Carlos López González wrote:
>> [...]
>> > The program 'cairo-sample' received an X Window System error.
>> > This probably reflects a bug in the program.
>> > The error was 'BadMatch (invalid parameter attributes)'.
>> >   (Details: serial 230 error_code 8 request_code 135 minor_code 5)
>>
>> minor_code 5 likely is DRI2's GetBuffer request, but could also be a
>> RANDRGetScreenInfo, RenderChangePicture, SHAPEQueryExtents,
>> SHMCreatePixmap or
>> SyncQueryCounter. Of course, this doesn't really help us (does it?).
>>
>> [...]
>> >   (Note to programmers: normally, X errors are reported asynchronously;
>> >    that is, you will receive the error a while after causing it.
>> >    To debug your program, run it with the --sync command line
>> >    option to change this behavior. You can then get a meaningful
>> >    backtrace from your debugger if you break on the gdk_x_error()
>> function.)
>>
>> do "break gdk_x_error" before you "run" the program.
>>
>> > [Thread 0xb4738b40 (LWP 3625) exited]
>> > [Thread 0xb54ffb40 (LWP 3624) exited]
>> > [Thread 0xb6224880 (LWP 3620) exited]
>> > [Inferior 1 (process 3620) exited with code 01]
>> > (gdb) where
>> > No stack.
>> > (gdb)
>> >
>> >
>> > How can I add the --sync option?
>>
>> If the program supports this option: "run --sync".
>>
>> Uli
>> --
>> "Why make things difficult, when it is possible to make them cryptic
>> and totally illogical, with just a little bit more effort?" -- A. P. J.
>> --
>> cairo mailing list
>> [email protected]
>> http://lists.cairographics.org/mailman/listinfo/cairo
>>
>
>
>
> --
> Carlos
> http://synfig.org
>
>
>
> --
> Carlos
> http://synfig.org
>



-- 
Carlos
http://synfig.org

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.