Hi,

unichrome driver has a bug when source and destination surface are not
of the same size and when only a section of the source surface should be
blitted to the destination surface.

uc_accel.c:

static bool uc_blit_planar(void* drv, void* dev, DFBRectangle* rect, int dx, 
int dy)
{
    UC_ACCEL_BEGIN()

    int uv_dst_offset = ucdev->dst_offset + (ucdev->dst_pitch * rect->h);
    int uv_src_offset = ucdev->src_offset + (ucdev->src_pitch * rect->h);

If rect is the source rect which should be blitted then:
- destination offset  of y plane should be advanced by dst_pitch * dy.
- dest offset of 1st uv plane is dst_offset + dest_pitch * dst_high + 
(dst_pitch * dy) / 4.
- dest offset of 2nd uv plane is (dest_pitch * dst_high) / 4 past 1st plane 
offset.

dest_high is not part of ucdev struct I guess.

--
Stefan Lucke

_______________________________________________
directfb-dev mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to