diff options
author | Hunk Cui <Hunk.Cui@amd.com> | 2010-07-12 12:57:39 +0800 |
---|---|---|
committer | Martin-Éric Racine <q-funk@iki.fi> | 2010-08-06 17:35:34 +0300 |
commit | 2bcbc0b64091218d348ad9f699370e4bfde3948b (patch) | |
tree | e8edf2094dc686649eb7f2683eebca6e065890bd | |
parent | ecb741f27de4ca66555d312a4699efc22f873d0e (diff) |
Gamma Correction for fading operation
*Modify integrated palette RAM for gamma-correction of the data stream
*Let Graphic data passes through the Gamma Correction RAM
*Special for Screensaver Operation
*FreeDesktop Bugzilla #27853
Signed-off-by: Hunk Cui <Hunk.Cui@amd.com>
-rw-r--r-- | src/cim/cim_df.c | 9 | ||||
-rw-r--r-- | src/lx_display.c | 10 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/cim/cim_df.c b/src/cim/cim_df.c index 242603a..676ef3c 100644 --- a/src/cim/cim_df.c +++ b/src/cim/cim_df.c @@ -981,7 +981,14 @@ df_set_video_palette_entry(unsigned long index, unsigned long palette) dcfg = READ_VID32(DF_DISPLAY_CONFIG); misc = READ_VID32(DF_VID_MISC); - dcfg |= DF_DCFG_GV_PAL_BYP; + /* Ensure that the Graphic data passes through the Gamma + * Correction RAM + */ + dcfg &= ~DF_DCFG_GV_PAL_BYP; + + /* The graphics and video data are passed through gamma + * correction RAM + */ misc &= ~DF_GAMMA_BYPASS_BOTH; WRITE_VID32(DF_DISPLAY_CONFIG, dcfg); diff --git a/src/lx_display.c b/src/lx_display.c index b950203..856ad95 100644 --- a/src/lx_display.c +++ b/src/lx_display.c @@ -339,8 +339,16 @@ lx_crtc_gamma_set(xf86CrtcPtr crtc, CARD16 * red, CARD16 * green, assert(size == 256); + /* We need the Gamma Correction for video - fading operation, + * the values address should be plused for every cycle. + * Special for Screensaver Operation. + */ + 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); } |