summaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorMatthew Allum <mallum@polystyrene.(none)>2006-07-08 21:10:58 +0100
committerMatthew Allum <mallum@polystyrene.(none)>2006-07-08 21:10:58 +0100
commite8056218944e873135c93039d1e9646d51364467 (patch)
tree5b60e0e7bb9f9f6ab30ebb483a01b21c11e3655c /hw
parent5416f90e9c939027005fc01fa3ce3df56919ae0d (diff)
Add support to Xephyr for simulating 8bit grayscale.
Diffstat (limited to 'hw')
-rw-r--r--hw/kdrive/ephyr/ephyr.c22
-rw-r--r--hw/kdrive/ephyr/ephyrinit.c7
2 files changed, 22 insertions, 7 deletions
diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index a9ea0eb0c..fbb16a465 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -40,6 +40,8 @@ extern DeviceIntPtr pKdKeyboard;
static int mouseState = 0;
+Bool EphyrWantGrayScale = 0;
+
Bool
ephyrInitialize (KdCardInfo *card, EphyrPriv *priv)
{
@@ -80,7 +82,10 @@ ephyrScreenInitialize (KdScreenInfo *screen, EphyrScrPriv *scrpriv)
screen->width = width;
screen->height = height;
}
-
+
+ if (EphyrWantGrayScale)
+ screen->fb[0].depth = 8;
+
if (screen->fb[0].depth && screen->fb[0].depth != hostx_get_depth())
{
if (screen->fb[0].depth < hostx_get_depth()
@@ -98,12 +103,15 @@ ephyrScreenInitialize (KdScreenInfo *screen, EphyrScrPriv *scrpriv)
if (screen->fb[0].depth <= 8)
{
- screen->fb[0].visuals = ((1 << StaticGray) |
- (1 << GrayScale) |
- (1 << StaticColor) |
- (1 << PseudoColor) |
- (1 << TrueColor) |
- (1 << DirectColor));
+ if (EphyrWantGrayScale)
+ screen->fb[0].visuals = ((1 << StaticGray) | (1 << GrayScale));
+ else
+ screen->fb[0].visuals = ((1 << StaticGray) |
+ (1 << GrayScale) |
+ (1 << StaticColor) |
+ (1 << PseudoColor) |
+ (1 << TrueColor) |
+ (1 << DirectColor));
screen->fb[0].redMask = 0x00;
screen->fb[0].greenMask = 0x00;
diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c
index 58478e690..1aa608e93 100644
--- a/hw/kdrive/ephyr/ephyrinit.c
+++ b/hw/kdrive/ephyr/ephyrinit.c
@@ -29,6 +29,7 @@
#include "ephyr.h"
extern Window EphyrPreExistingHostWin;
+extern Bool EphyrWantGrayScale;
void
InitCard (char *name)
@@ -62,6 +63,7 @@ ddxUseMsg (void)
ErrorF("-parent XID Use existing window as Xephyr root win\n");
ErrorF("-host-cursor Re-use exisiting X host server cursor\n");
ErrorF("-fullscreen Attempt to run Xephyr fullscreen\n");
+ ErrorF("-grayscale Simulate 8bit grayscale\n");
ErrorF("-fakexa Simulate acceleration using software rendering\n");
ErrorF("\n");
@@ -94,6 +96,11 @@ ddxProcessArgument (int argc, char **argv, int i)
hostx_use_fullscreen();
return 1;
}
+ else if (!strcmp (argv[i], "-grayscale"))
+ {
+ EphyrWantGrayScale = 1;
+ return 1;
+ }
else if (!strcmp (argv[i], "-fakexa"))
{
ephyrFuncs.initAccel = ephyrDrawInit;