I have a Intel 945GM chipset. I started using DirectFB using the i830
driver. The primary screen layer works just fine and I can see my
graphics/video appear as you would expect. However, if I attempt to
use the overlay instead (layer 01), then the system will reboot during
initialization.

I traced this down to the following in the file
DirectFB-1.2.3/gfxdrivers/i830/i830_overlay.c function
ovl_calc_regs(). On the line that reads:

     /* Set buffer pointers */
     y_offset = dfb_gfxcard_memory_physical( NULL, lock->offset );

This y_offset is eventually placed into the OBUF_0Y hardware register.
It looks to me that this expects an *offset* from the beginning of the
overlay memory address and not the actual address. I believe the line
above is attempting to fill it with an actual address. The description
from the Intel docs:

----
Overlay Buffer 0 Y Linear Offset: This is the offset for the Y planar
or YUV packed color data. This
value is added to the surface address to get the graphics address of
the first pixel to be displayed. It
must be pixel aligned (e.g., low order bit is zero for 16-bpp packed
formats). This offset is the
difference between the address of the upper left pixel to be displayed
and the overlay surface address.
When mirroring horizontally (X backward) this field points to first
byte of the last pixel of the line.
----

If I change the line above to:
y_offset = 0;

While I don't observe correct behavior I no longer experience the
system reboots so I think this is on the right track.

Curious if anyone else has experienced this or has worked on the
overlay for the Intel driver.


Jon
_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to