tech-x11 archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

DirectColor colourmaps don't work?



I'm seeing something on 5.2 that looks like DirectColor colourmaps
simply not working - but on only some framebuffers.  I'm wondering if
anyone still sees it with more recent servers, and/or recalls any fixes
for such a thing.  I do have reason to think at least one acquaintance
of mine sees the same misbehaviour on a Linux machine, leading me to
suspect it may be relatively widespread and quite possibly still
extant.

On my problematic test machine, xdpyinfo reports a whole bunch of
DirectColor visuals which all look like

  visual:
    visual id:    0xda
    class:    DirectColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits

except the visual IDs run from 0xda through 0xf9 (I don't know whether
those specific numbers have any significance).  Installing a colourmap
belonging to one of these visuals appears to do nothing, despite the
presence of a window using that visual and that colourmap visible on
the display.

On my other test machine, with a bit-identical server (built from
identical source trees) and different hardware (DirectColor visual IDs
running from 0xfe through 0x11c), it works as I would expect.

I'm not sure what information would be most useful to report.  The
Xorg.0.log files from the two servers, and my test program, are on
ftp.rodents-montreal.org, in /mouse/misc/DirectColor-bug/, under the
names Xorg.0.log.broken, Xorg.0.log.works, and test.c.  The program
puts up a window 300x100+100+100; on a correctly working server, the
left third is red, the middle third green, and the right third blue;
depending on the server and settings, other windows, if any, may or may
not go technicolour.  On a broken server, in my experience, whatever
colourmap was previously installed gets used instead, which in my tests
makes the window entirely greyscale (probably because it's a TrueColor
colourmap and my pixel values have all three subfields equal).  test.c
must be compiled with VISUAL_ID defined to the visual ID you want to
test (as in -DVISUAL_ID=0xda for the above-quoted visual), and it
blindly assumes your visual's red, green, and blue masks are ff0000,
00ff00, and 0000ff (I think it doesn't care what order they're in; both
my test servers report the values in the 0xda example above).  It must
be run against a server without a window manager running, or with the
window manager told to let clients do colourmap installation - the test
program does its own colourmap installation.

I can of course provide more details if anyone can tell me what
information would be useful.

/~\ The ASCII				  Mouse
\ / Ribbon Campaign
 X  Against HTML		mouse%rodents-montreal.org@localhost
/ \ Email!	     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B


Home | Main Index | Thread Index | Old Index