On Sat, 11 Jul 2015 21:10:03 +0100 Mick <michaelkintz...@gmail.com> said:
> On Saturday 11 Jul 2015 20:40:15 David Seikel wrote: > > On Sat, 11 Jul 2015 14:26:08 -0400 Toan Pham <tpham3...@gmail.com> > > > > wrote: > > > > the compositor is going to draw whenever ANY APP draws. > > > > > > Hmm, why is this, even when there's no pager? Is there a setting in > > > E for it not to draw for a certain window name or type? > > > > The compositor draws EVERYTHING on the screen. So any time any > > application changes anything on one of its windows, the compositor > > updates that part of the application window. That's what compositors > > do. > > Perhaps I am being dense, but your first sentence contradicts the second: > > Is it just the application window within which something changes that is > being redrawn by the compositor and that application window only, > > or > > is it the complete real estate of the whole screen that is being refreshed? > > As Carsten explained it I thought that it was the former. when you composite, the compositor takes over the entire screen. nothing is visible without the compositor actively doing something (drawing it) to the screen. the compositor SEES sources - such as windows and their pixmaps, gets events saying areas of the window were drawn to by the app. so david is right - compositor draws everything on your screen... at some point or another. whenever updates happen, the compositor has to redraw. the question is where/how does it redraw. with software it literally "screengrabs" each window that updates back into local memory and then uses evas's software engine to draw. evas decides what/how to draw based on what objects in the scene graph were updated. with gl you can either use the screengrabbing, or "texture from pixmap". texture from pixmap allows evas to point a pixmap to an image object in the canvas directly, and when the compositor draws, it will simply render a texture that *IS* the pixmap of the window. now next you need to know HOW rendering happens. with software we can in detail control everything that is drawn, thus evas tends to render only the regions that changed (with some fuzz around them). with gl "this depends". in order to do this you need to know about the backbuffer and how old it is. if you don't know, you HAVE TO REDRAW EVERYTHING. because the backbuffer content is "undefined". there is an extension in glx and egl (nvidia glx drivers support it, intel, radeo, etc. don't). it's called the buffer age extension. with that you can query the age of the backbuffer when drawing happens. with age, we can reduce what we render because we now know how old the buffer content is and we can redraw what just updated since that frame N frames ago. when we draw - we end up redrawing a bounding box (take everything that updated and draw a single box covering all the regions). this is generally the most sensible way to do things as doing multiple regions means re-running the render path per region. but you don't know as it depends on gpu, driver, cpu and all sorts of factors you simply can't know until you examine it at runtime in each situation. so without this extension, everything is drawn. when we say everything... we mean EVERYHTING. every title, every close button, every shelf gadget, every little miniature window in the pager. every character of text will be 2 triangles. irf you enable soft shadows .. that becomes 50 triangles. (it's drawn 25 times, 24 for the softish shadow and once for the real text). evas does a lot of work to pipeline and merge these triangles into non-overlapping batches etc. to minimize context switches. your shelf is not a suince rectangle to draw (2 triangles with a texture). it is 1000's of triangles generated every frame. if the bounding box update intersectsthis - evas will be generating those triangles. -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) ras...@rasterman.com ------------------------------------------------------------------------------ Don't Limit Your Business. Reach for the Cloud. GigeNET's Cloud Solutions provide you with the tools and support that you need to offload your IT needs and focus on growing your business. Configured For All Businesses. Start Your Cloud Today. https://www.gigenetcloud.com/ _______________________________________________ enlightenment-users mailing list enlightenment-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-users