<p>I will post code when I get to the hotel tonight.<br>
Basically, I simply ifdef'd in redraw() in simple-egl and branched into my draw routine.<br>
I will post both wl_client and glut front ends.<br>
Thank you for your help.<br>
Is there a place that describes any threading model there may be in iterate or flush that could cause a block?</p>
<div class="gmail_quote">On Sep 10, 2012 6:49 AM, "Pekka Paalanen" <<a href="mailto:ppaalanen@gmail.com">ppaalanen@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Fri, 7 Sep 2012 20:48:17 -0400<br>
jegde jedge <<a href="mailto:bubbah.t@gmail.com">bubbah.t@gmail.com</a>> wrote:<br>
<br>
> Sorry for the delay, my mail tool didn't link up this thread fro me.<br>
><br>
> I am running w/ DRM not X11; running weston in an X client was not<br>
> adequate for my test app.<br>
> I start by obtaining a virtual terminal ;init 3 ; then weston-launch<br>
> This way I eliminate any X11 variables.<br>
> You can see egl loading the dri driver when it starts up.<br>
> If there is a better way please let me know.<br>
<br>
Should be fine, I think.<br>
<br>
> I run the the application with glut and weston using the same MESA<br>
> stack that I compiled for weston.<br>
> So, the only real difference is between glut/simple-egl and gnome(X11)/weston<br>
><br>
> My CPU usage is:<br>
> weston - ~20+ fps - 3%<br>
> glut(X11) - 60 fps - 17% - (60 is a hard limit for glut)<br>
> tells me there is more to be had.<br>
> This application renders  ~100 256x256 rgb textures on a moving map display.<br>
><br>
> I don't understand the wayland frame listener callback and how the<br>
> wl_iterate works to drive redraw in simple-egl.<br>
<br>
wl_display_iterate(), depending on the arguments, will receive and/or<br>
send Wayland protocol messages. When it is receiving, it will dispatch<br>
calls to your handlers, the frame listener callback for instance.<br>
<br>
Usually the frame listener callback sets a flag, that the app can<br>
repaint now. When wl_display_iterate() returns, you repaint, and the<br>
protocol messages (posting a buffer) are sent on the next call to<br>
wl_display_iterate().<br>
<br>
simple-egl takes a shortcut and does not use a flag. It plays with the<br>
frame callback object pointer to avoid posting buffers too often (to<br>
avoid stalling in libEGL). The redraw function actually is the frame<br>
callback to be called, so it is rendering and posting buffers as fast<br>
as reasonable. More complex applications could use a better structure<br>
than this.<br>
<br>
> So, I am hoping I am just using it wrong.<br>
<br>
I hope so too. Can you publish your code?<br>
<br>
> I was hoping to do something similar to glutPostRedisplay() in a mouse<br>
> drag event.<br>
> This way I can start panning my textured tiles for a good test.<br>
<br>
Yeah, you should add a flag for that, and check it when<br>
wl_display_iterate() returns. The toytoolkit has the deferred_list for<br>
it, called in display_run() where the main loop is, see window.c.<br>
<br>
You don't see wl_display_iterate() explicitly in the display_run()<br>
loop. wl_display_flush() calls wl_display_iterate() to send all pending<br>
messages. The epoll has the Wayland fd in its list, and will end up<br>
calling handle_display_data() when there are wayland messages to be<br>
received. That will then call wl_display_iterate() to receive and<br>
dispatch. The toytoolkit main loop is worth looking at.<br>
<br>
<br>
Thanks,<br>
pq<br>
</blockquote></div>