[haiku-appserver] Re: investigating some bugs - Rudolf have a look at this please

  • From: "Rudolf" <drivers.be-hold@xxxxxxxxxxxx>
  • To: haiku-appserver@xxxxxxxxxxxxx
  • Date: Thu, 31 Mar 2005 12:11:44 +0200 CEST


> > HWInterface
> >     * provides two RenderingBuffers, BackBuffer and FrontBuffer
> > 
> > Now, HWInterface is supposed to be the abstraction of a graphics 
> > card. 
> > Therefor, it provides all stuff like SetMode(display_mode) and so 
> > on. 
> > The only important thing however is the BackBuffer, to which 
> > DisplayDriverPainter attaches its Painter instace. Then there is a 
> > HWInterface::Invalidate(BRect) method, which tells the HWInterface 
> > that 
> > a certain part of the BackBuffer contains new contents.
>       OK, let's see if I have this right.
>       FrontBuffer = frame buffer. BackBuffer = a buffer the same size as 
> frame buffer.
>       If that's the case, where do you put the back buffer when 
> app_server 
> runs on haiku with accelerated drivers?

Software GL creates a backbuffer in main mem (BBitmap). It's 
frontbuffer is the window( or whole screen) that's visible on the 
monitor (so in the framebuffer)
This is doublebuffering: singlebuffering would do without backbuffer. 
Not done ATM.

With HWGL the backbuffer is also on the gfxRAM. I have this up and 
running, and I use the engine to blit back to front. I have to do my 
own clipping (BWindow's BRegion or so), and sync with DirectConnected. 
Enable/disable 'notifications'.
I can only do blitting if the backbuffer is on the gfxRAM. Main RAM to 
gfx RAM is not supported at all.

> > transfer. For example, in a more advanced version of UpdateQueue, 
> > it 
> > could do the transfer within the time of a vertical blank, so that 
> > front buffer updates are synced with the monitor refresh.
>       Doesn't that require the back buffer being inside videoMem?
>       Rudolf?

Syncing itself does not: it's just waiting for that semaphore. Copying 
the data only 'requires' the backbuffer to be on the gfxRAM if you want 
to use the graphics GPU to blit it to the frontbuffer. Even then, it's 
not supported to do that currently. You will be doing software copying 

with 'requires' I mean backbuffer could be in main mem as well, but 
then we'd need AGP /PCI transfer support for the acc engine: nogo 
either currently.

The only way you can do a GPU blit would be to tell the gfx driver to 
create a virtualscreen, and use the offscreen part of that for the 
backbuffer. Other options do not exist with the current driver 

>       You have my word that I will try to make whatever comes best of me 
> at 
> that moment, and if I have problems this list will see my posts. :-)

I love seeing all this progress here BTW guys!



Other related posts: