CVSROOT: /cvs/directfb
Module name: DirectFB
Changes by: dok 20040726 14:52:47
Modified files:
. : README
gfxdrivers/nsc : nsc.c
Log message:
Thanks a lot to Ed Millard <[EMAIL PROTECTED]> for this patch:
DIRECTFB PATCH
The DirectFB patch implements hardware blitting on GX1 graphics though
it is constrained, by hardware, to only blit surfaces whose width
matches the stride of the frame buffer. In other cases it reverts to
the generic software blit. The current driver in CVS only implements
hardware blit on GX2 graphics which doesn't have this stride
limitation.
The hardware accelerated functions for line, rectangle and fill have
been modified to honor dst_offset for Y so they work properly with
double buffering. In the current CVS version these don't honor
dst_offset and are working on the wrong buffer in double buffered mode
half the time. X offset is not currently implemented in this patch
which is focused on making double buffering work.
GEODE COMPRESSION BUFFER
The patch is disabling the Geode's compression buffer when the DirectFB
nsc driver is initialized. This may be a potential drag on performance
since it increases memory traffic on the video memory during refresh.
The compression buffer is very problematic for DirectFB since it is
unaware of it location in video memory. For example at 1024x768 the
compression buffer is mapped right at the start of the second buffer.
You will see display artifacts if its not disabled and you will usually
crash the box as DirectFB overwrites the compression buffer with
randomness. In the future the compression buffer could be moved to the
end of video memory and video ram could be limited to prevent it from
overwriting it.
VIDEO HARDWARE INTERACTION
Moving the compression buffer to the end of video RAM can result in
conflicts if you are using video hardware since the geode_v driver in
geode_v4l2-2.3.2 also uses video memory. In fact geode_v is currently
putting its video buffers in video memory in an area that will also
overlap the second buffer in double buffered mode at 1024x768. This
problem can be remedied by changing geodedrv.c memory buffer offset to:
#define MULTIBUFF_OFFSET 0x0
This puts the video buffer at the very end of video memory. It is
currently offset from the end of video memory by approximately 512K
which causes it to interfere with DirectFB double buffering at
1024x768.
If you set MULTIBUFF_OFFSET to 0, shut off the compression buffer and
limit DirectFB video ram to 3 MB you can run DirectFB double buffered
at 1024x768 and play video at the same time.
-- Ed Millard