[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