To repeatedly cycle test, I have written a shell-script to test the rotate. Now it can properly rotate in Xserver 1.8 (Need add my gamma correction patch).
Because I have some confuse on memorysize, so I need some time to research and consider whether this approach is correct. I can not explain too specific. But it can solve the urgent rotate issue in temporary.
Any other latest update, I will inform.
assert(size == 256);
-
+ /* We need the Gamma Correction for video - fading operation,
+ * the values address should plus for every cycle
+ */
for (i = 0; i < 256; i++) {
- unsigned int val = (*red << 8) | *green | (*blue >> 8);
-
+ (*red) &= 0xff00;
+ (*green) &= 0xff00;
+ (*blue) &= 0xff00;
+ unsigned int val = (*(red++) << 8) | *(green++) | (*(blue++) >> 8);
df_set_video_palette_entry(i, val);
}
The `-o' options is a RandR 1.0/1.1 command and may exercise a different driver code path from the RandR 1.2 `--rotate' option. RandR 1.2 introduced per-output rotation which wasn't available in earlier versions. Consequently, `xrandr -o' is equivalent to rotating the entire desktop (composed of all the outputs) rather than just a specific output. Depending on the Geode driver's support for multiple outputs and which outputs are connected, using `xrandr -o' could confuse the driver.
Hi, all
To repeatedly cycle test, I have written a shell-script to test the rotate. Now it can properly rotate in Xserver 1.8 (Need add my gamma correction patch).
Because I have some confuse on memorysize, so I need some time to research and consider whether this approach is correct. I can not explain too specific. But it can solve the urgent rotate issue in temporary.
Any other latest update, I will inform.
Please see below change:
--- /driver/ xf86-video- geode-2. 11.8.ogig/ src/lx_ display. c 2010-06-10 19:11:02.000000000 +0800 xf86-video- geode-2. 11.8/src/ lx_display. c 2010-06-18 14:58:39.000000000 +0800
+++ /driver/
@@ -338,10 +338,14 @@
int i;
assert(size == 256); video_palette_ entry(i, val);
-
+ /* We need the Gamma Correction for video - fading operation,
+ * the values address should plus for every cycle
+ */
for (i = 0; i < 256; i++) {
- unsigned int val = (*red << 8) | *green | (*blue >> 8);
-
+ (*red) &= 0xff00;
+ (*green) &= 0xff00;
+ (*blue) &= 0xff00;
+ unsigned int val = (*(red++) << 8) | *(green++) | (*(blue++) >> 8);
df_set_
}
@@ -378,6 +382,7 @@
return NULL;
}
+ pGeode- >pExa-> memorySize += 1; //Hunk add pGeode- >FBBase + lx_crtc- >rotate_ mem->offset, 0, size); >rotate_ mem->offset; }
memset(
return pGeode->FBBase + lx_crtc-
@@ -417,6 +422,7 @@ until_idle( ); creen(pGeode, lx_crtc- >rotate_ mem); >pExa-> memorySize -= 1; //Hunk add >rotate_ mem = NULL;
if (data) {
gp_wait_
GeodeFreeOffs
+ pGeode-
lx_crtc-
}
}
Welcome everyone test the code.
I suggest you use:
Rotate left: xrandr --output OUTPUT --rotate left
Rotate right: xrandr --output OUTPUT --rotate right
Rotate inverted: xrandr --output OUTPUT --rotate inverted
Rotate normal: xrandr --output OUTPUT --rotate normal
where OUTPUT would be replaced by one of the outputs shown when you run `xrandr' without any options. You can use "xrandr -q" to know your OUTPUT name. www.thinkwiki. org/wiki/ Xorg_RandR_ 1.2#Note_ for_Ubuntu_ Gutsy_users
BTW: The Xrandr Guide: http://
The `-o' options is a RandR 1.0/1.1 command and may exercise a different driver code path from the RandR 1.2 `--rotate' option. RandR 1.2 introduced per-output rotation which wasn't available in earlier versions. Consequently, `xrandr -o' is equivalent to rotating the entire desktop (composed of all the outputs) rather than just a specific output. Depending on the Geode driver's support for multiple outputs and which outputs are connected, using `xrandr -o' could confuse the driver.
Thanks,
Hunk Cui