[haiku-appserver] Re: user needs to know about the clipping region?

  • From: Adi Oanca <adioanca@xxxxxxxxx>
  • To: haiku-appserver@xxxxxxxxxxxxx
  • Date: Thu, 24 Nov 2005 20:16:12 +0200

Axel Dörfler wrote:

Adi Oanca <adioanca@xxxxxxxxxxxxxx> wrote:

Also, having double buffered windows would spare us converting _any_ drawing instruction coordinates and the local visible region into screen coords.
It's true, we would loose some 2D capabilities like rectangle fill, but once we make use of 3D HW and OpenGL, we can have them back. SSE/MMX could help us in the mean time.

But that would only be true if the window buffer wouldn't be in the RAM of the graphics card, right?
(I'm not talking about our current driver interface but about the capabilities of the graphics cards, btw)

Right, but I haven't said or thought of all. :-)
Drawing will be made in a surface in main memory which will be fetched by the graphics hardware in video memory. That surface will be exactly the area that needs to be updated. Why that? Because writing in graphics RAM point by point is more expensive than drawing in main mem and then tell the engine to use AGP 8x or PCI-e to fetch that surface. (This is especially true with antialiased text and gradients but also for a AA primitives)
Lots of windows will be kept in video RAM and what needs to be updated is first drawn in main memory and then replaces the corresponding part of the window in graphics RAM. There will be a preallocated space in main mem and when a window needs to update something, it locks a part for that surface. When it's done drawing that part will be fetched by the graphic card and the surface becomes available for other windows.

As you see, ATM I have said nothing about HW acc and I guess you realized 2D rectangle fill is totally out. Scrolling is still possible, so is blitting. That may change in future as I think every drawing instruction can be translated into vertices and drawn by the 3D engine, with gradient even! And AA! Even fonts can be accelerated if they are cached in video ram.

This is what I have thought of. It's an idea to start from. If you agree with the concept I could start writing a paper which we could discuss and improve.

bye, Adi.

Other related posts: