From f36720377737210c985b196d9a988efdd767f1c7 Mon Sep 17 00:00:00 2001 From: Alex Deucher Date: Sun, 26 Aug 2007 14:13:06 -0400 Subject: RADEON: fix depth 16 palette for real this time --- src/radeon_crtc.c | 35 ++++++++++++----------------------- src/radeon_driver.c | 4 ++-- 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c index 6a4116df..026cd8a3 100644 --- a/src/radeon_crtc.c +++ b/src/radeon_crtc.c @@ -103,7 +103,7 @@ radeon_crtc_dpms(xf86CrtcPtr crtc, int mode) } if (mode != DPMSModeOff) - radeon_crtc_load_lut(crtc); + radeon_crtc_load_lut(crtc); } static Bool @@ -911,21 +911,8 @@ void radeon_crtc_load_lut(xf86CrtcPtr crtc) PAL_SELECT(radeon_crtc->crtc_id); - if (pScrn->depth == 15) { - for (i = 0; i < 32; i++) { - OUTPAL(i * 8, radeon_crtc->lut_r[i], radeon_crtc->lut_g[i], radeon_crtc->lut_b[i]); - } - } else if (pScrn->depth == 16) { - for (i = 0; i < 64; i++) { - OUTPAL(i * 4, radeon_crtc->lut_r[i], radeon_crtc->lut_g[i], radeon_crtc->lut_b[i]); - if (i <= 31) { - OUTPAL(i * 8, radeon_crtc->lut_r[i + 64], radeon_crtc->lut_g[i + 64], radeon_crtc->lut_b[i + 64]); - } - } - } else { - for (i = 0; i < 256; i++) { - OUTPAL(i, radeon_crtc->lut_r[i], radeon_crtc->lut_g[i], radeon_crtc->lut_b[i]); - } + for (i = 0; i < 256; i++) { + OUTPAL(i, radeon_crtc->lut_r[i], radeon_crtc->lut_g[i], radeon_crtc->lut_b[i]); } } @@ -937,17 +924,19 @@ radeon_crtc_gamma_set(xf86CrtcPtr crtc, CARD16 *red, CARD16 *green, { RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; ScrnInfoPtr pScrn = crtc->scrn; - int i; + int i, j; if (pScrn->depth == 16) { for (i = 0; i < 64; i++) { - radeon_crtc->lut_r[i] = red[i/2] >> 8; - radeon_crtc->lut_g[i] = green[i] >> 8; - radeon_crtc->lut_b[i] = blue[i/2] >> 8; if (i <= 31) { - radeon_crtc->lut_r[i + 64] = red[i] >> 8; - radeon_crtc->lut_g[i + 64] = green[(i * 2) + 1] >> 8; - radeon_crtc->lut_b[i + 64] = blue[i] >> 8; + for (j = 0; j < 8; j++) { + radeon_crtc->lut_r[i * 8 + j] = red[i] >> 8; + radeon_crtc->lut_b[i * 8 + j] = blue[i] >> 8; + } + } + + for (j = 0; j < 4; j++) { + radeon_crtc->lut_g[i * 4 + j] = green[i] >> 8; } } } else { diff --git a/src/radeon_driver.c b/src/radeon_driver.c index e445b9e4..158e1e46 100644 --- a/src/radeon_driver.c +++ b/src/radeon_driver.c @@ -2856,7 +2856,7 @@ static void RADEONLoadPalette(ScrnInfoPtr pScrn, int numColors, case 16: for (i = 0; i < numColors; i++) { index = indices[i]; - + if (i <= 31) { for (j = 0; j < 8; j++) { lut_r[index * 8 + j] = colors[index].red << 8; @@ -2874,7 +2874,7 @@ static void RADEONLoadPalette(ScrnInfoPtr pScrn, int numColors, lut_r[index] = colors[index].red << 8; lut_g[index] = colors[index].green << 8; lut_b[index] = colors[index].blue << 8; - } + } break; } -- cgit v1.2.3