[prev in list] [next in list] [prev in thread] [next in thread]
List: mesa3d-dev
Subject: [Mesa3d-dev] i915tex private backbuffers
From: Roland Scheidegger <sroland () tungstengraphics ! com>
Date: 2007-07-19 16:47:33
Message-ID: 469F95A5.1070908 () tungstengraphics ! com
[Download RAW message or body]
In case you've been wondering what the i915tex_privbuffers is good for,
here's a short description.
As the name implies, it uses private buffers...
It gets rid of all rendering to shared buffers (you don't need a new
ddx, it just won't use the buffers allocated there).
The reason for this is that shared buffers are quite problematic, as you
have to handle cliprect changes at any time and everywhere throughout
your driver - and there's hardware which simply can't deal at all with
such changes in the middle of a frame.
So, all rendering is done to private buffers - even rendering to a front
buffer isn't any different. Resizing the buffers is only done when a
buffer is blitted to the real frontbuffer (and at makecurrent time,
there are still outstanding issues there which need to be investigated)
- if rendering to the backbuffer, this is at swapbuffer time, otherwise
it's each glFinish (yes this is not performance-optimal, could use at
least a timer-based solution to avoid excessive blitting, but who cares
about performance of front-buffer rendering). Also, the fake frontbuffer
will currently not copy in any content of the real frontbuffer, so you
can't mix rendering with other apps (this could be added, basically
would need to copy in/out on XWaitGL/XWaitGL probably to be conformant).
The DRIdrawables cliprects are only used for blitting to the real
frontbuffer.
While the driver seems to look quite a bit nicer (and it handles things
like xdemos/wincopy with ease now), just moving windows around looks
much nicer now, there are some issues worth pointing out:
First, no pageflip. This is not an easy to solve problem, non-fullscreen
pageflip is completely out of the question, and fullscreen pageflip
would require interaction with the X server.
Triple buffering OTOH wouldn't be too hard to add back.
Also, I've ripped out all the rotation code (instead of adapting it),
since newer ddx do that on their own (though fail spectacularly here but
that's a different matter...), so you won't have much luck with that. I
couldn't test if changes in the virtualsize of the screen are handled
correctly (because the current driver never seems to change it at all),
but in theory this should be trivial - the dri driver basically has
nothing to do at all if such a change happens.
This is only tested to work on i915/i945 btw, you may have luck with
i830/i855, at least I didn't intentionally break them...
Roland
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic