[Nouveau] Removal of Non-KMS support
Xavier
shiningxc at gmail.com
Wed Jan 13 13:22:20 PST 2010
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
More information about the Nouveau
mailing list