nanogui: Screen driver development questions
Subject:
Re: [nanogui] Screen driver development questions
From:
"Greg Haerr" ####@####.####
Date:
28 May 2011 18:14:08 -0000
Message-Id: <071701cc1d63$0643b490$6964a8c0@winXP>
Georg -
Which version of Microwindows are you wanting to support? The blit
architecture is entirely rewritten after the 0.92 version; thus your driver
will be completely different depending on whether you're running the
snapshot or 0.92. In 0.92, you'll write a blit entry point that will move
bits from offscreen memory to the display, as well as handle many other
blit cases, such as copying memory to memory, and screen-to-screen
data. In the snapshot, you will only have to implement the Update
entry point, which copies memory from offscreen to display, as
all the memory blits are handled internally. I will answer your questions
below once I know the version you're running.
Regards,
Greg
I want to extend the scr_djgr screen driver with blit support. In general I
understand that there shall be an area of offscreen memory where Nano-X will
write the screen data to. When done it will either call xxxx_blit() in
version 0.92 to write to the screen or xxxx_update() with the
0.93pre-snapshot version.
Where do I define the offscreen memory now?
In the open function there is a psd->addr pointer. The scr_X11 driver makes
a malloc to assign memory to psd->addr in the open function. However, the
scr_svga driver sets this to null.
Both drivers also use gen_allocatememgc() to allocate a second PSD. The
scr_svga driver apparently does not need gen_mapmemgc() or gen_freememgc()
though to support blitting.
The function xxxx_blit() uses a source psd and a destination psd. The
xxxx_update() function apparently just gets the source psd and then writes
that data to the screen as the final destination.
I guess somehow I have to define the offscreen memory for the source psd so
I can blit the data to the screen i.e. the destination. Is that done with
gen_allocatememgc() and do I have to set psd->addr to null in the open
function then? Is gen_mapmemgc() required or can I drop that like the
scr_svga driver? Is all this done differently with version 0.92 versus the
snapshot version?
Georg