[Nouveau] Removal of Non-KMS support

Ben Skeggs skeggsb at gmail.com
Wed Jan 13 14:24:43 PST 2010


On Wed, 2010-01-13 at 22:22 +0100, Xavier wrote:
> On Wed, Jan 6, 2010 at 9:59 PM, Francisco Jerez <currojerez at riseup.net> wrote:
> >> [...]
> >> diff --git a/src/drmmode_display.c b/src/drmmode_display.c
> >> index e37e7c1..3d2df8d 100644
> >> --- a/src/drmmode_display.c
> >> +++ b/src/drmmode_display.c
> >> [...]
> >> +#define SOURCE_MASK_INTERLEAVE 32
> >> +#define TRANSPARENT_PIXEL   0
> >> +
> >> +/*
> >> + * Convert a source/mask bitmap cursor to an ARGB cursor, clipping or
> >> + * padding as necessary. source/mask are assumed to be alternated each
> >> + * SOURCE_MASK_INTERLEAVE bits.
> >> + */
> >> +static void
> >> +nv_cursor_convert_cursor(uint32_t *src, void *dst, int src_stride,
> >> +                      int dst_stride, int bpp, uint32_t fg, uint32_t bg)
> >> +{
> >> +     int width = min(src_stride, dst_stride);
> >> +     uint32_t b, m, pxval;
> >> +     int i, j, k;
> >> +
> >> +     for (i = 0; i < width; i++) {
> >> +             for (j = 0; j < width / SOURCE_MASK_INTERLEAVE; j++) {
> >> +                     int src_off = i*src_stride/SOURCE_MASK_INTERLEAVE + j;
> >> +                     int dst_off = i*dst_stride + j*SOURCE_MASK_INTERLEAVE;
> >> +
> >> +                     b = src[2*src_off];
> >> +                     m = src[2*src_off + 1];
> >> +
> >> +                     for (k = 0; k < SOURCE_MASK_INTERLEAVE; k++) {
> >> +                             pxval = TRANSPARENT_PIXEL;
> >> +#if X_BYTE_ORDER == X_BIG_ENDIAN
> >> +                             if (m & 0x80000000)
> >> +                                     pxval = (b & 0x80000000) ? fg : bg;
> >> +                             b <<= 1;
> >> +                             m <<= 1;
> >> +#else
> >> +                             if (m & 1)
> >> +                                     pxval = (b & 1) ? fg : bg;
> >> +                             b >>= 1;
> >> +                             m >>= 1;
> >> +#endif
> >> +                             if (bpp == 32)
> >> +                                     ((uint32_t *)dst)[dst_off + k] = pxval;
> >> +                             else
> >> +                                     ((uint16_t *)dst)[dst_off + k] = pxval;
> >> +                     }
> >> +             }
> >> +     }
> >> +}
> >> +
> >
> > I'm quite sure that, without UMS, this function doesn't make sense
> > anymore, you could leave this fun for the X server (we can use the
> > load_cursor_argb hook even on the cards we don't advertise ARGB
> > support). As a bonus that would probably solve Craig's rotated cursor
> > issue.
> >
> 
> This patch has been pushed 2 days ago but that function is apparently
> still there.
> If it could solve the rotated cursor issue, could you provide a patch
> to kill that function ?
> A second user reported it :
> http://bbs.archlinux.org/viewtopic.php?pid=687656#p687656
It's on the list.  I didn't do it yet as I hadn't gotten around to
testing on hw where it could possible break things :)

Ben.




More information about the Nouveau mailing list