Commit 913160d2 authored by Józef Kucia's avatar Józef Kucia Committed by Alexandre Julliard

winex11: Introduce GAMMA_RAMP_SIZE.

parent f181e714
...@@ -114,11 +114,13 @@ typedef struct ...@@ -114,11 +114,13 @@ typedef struct
int exposures; /* count of graphics exposures operations */ int exposures; /* count of graphics exposures operations */
} X11DRV_PDEVICE; } X11DRV_PDEVICE;
#define GAMMA_RAMP_SIZE 256
struct x11drv_gamma_ramp struct x11drv_gamma_ramp
{ {
WORD red[256]; WORD red[GAMMA_RAMP_SIZE];
WORD green[256]; WORD green[GAMMA_RAMP_SIZE];
WORD blue[256]; WORD blue[GAMMA_RAMP_SIZE];
}; };
static inline X11DRV_PDEVICE *get_x11drv_dev( PHYSDEV dev ) static inline X11DRV_PDEVICE *get_x11drv_dev( PHYSDEV dev )
......
...@@ -202,7 +202,7 @@ void X11DRV_XF86VM_Init(void) ...@@ -202,7 +202,7 @@ void X11DRV_XF86VM_Init(void)
pXF86VidModeGetGammaRampSize(gdi_display, DefaultScreen(gdi_display), pXF86VidModeGetGammaRampSize(gdi_display, DefaultScreen(gdi_display),
&xf86vm_gammaramp_size); &xf86vm_gammaramp_size);
if (X11DRV_check_error()) xf86vm_gammaramp_size = 0; if (X11DRV_check_error()) xf86vm_gammaramp_size = 0;
if (xf86vm_gammaramp_size == 256) if (xf86vm_gammaramp_size == GAMMA_RAMP_SIZE)
xf86vm_use_gammaramp = TRUE; xf86vm_use_gammaramp = TRUE;
} }
#endif /* X_XF86VidModeSetGammaRamp */ #endif /* X_XF86VidModeSetGammaRamp */
...@@ -250,16 +250,16 @@ sym_not_found: ...@@ -250,16 +250,16 @@ sym_not_found:
#ifdef X_XF86VidModeSetGamma #ifdef X_XF86VidModeSetGamma
static void GenerateRampFromGamma(WORD ramp[256], float gamma) static void GenerateRampFromGamma(WORD ramp[GAMMA_RAMP_SIZE], float gamma)
{ {
float r_gamma = 1/gamma; float r_gamma = 1/gamma;
unsigned i; unsigned i;
TRACE("gamma is %f\n", r_gamma); TRACE("gamma is %f\n", r_gamma);
for (i=0; i<256; i++) for (i=0; i<GAMMA_RAMP_SIZE; i++)
ramp[i] = pow(i/255.0, r_gamma) * 65535.0; ramp[i] = pow(i/255.0, r_gamma) * 65535.0;
} }
static BOOL ComputeGammaFromRamp(WORD ramp[256], float *gamma) static BOOL ComputeGammaFromRamp(WORD ramp[GAMMA_RAMP_SIZE], float *gamma)
{ {
float r_x, r_y, r_lx, r_ly, r_d, r_v, r_e, g_avg, g_min, g_max; float r_x, r_y, r_lx, r_ly, r_d, r_v, r_e, g_avg, g_min, g_max;
unsigned i, f, l, g_n, c; unsigned i, f, l, g_n, c;
...@@ -342,7 +342,7 @@ static BOOL X11DRV_XF86VM_GetGammaRamp(struct x11drv_gamma_ramp *ramp) ...@@ -342,7 +342,7 @@ static BOOL X11DRV_XF86VM_GetGammaRamp(struct x11drv_gamma_ramp *ramp)
if (xf86vm_major < 2) return FALSE; /* no gamma control */ if (xf86vm_major < 2) return FALSE; /* no gamma control */
#ifdef X_XF86VidModeSetGammaRamp #ifdef X_XF86VidModeSetGammaRamp
if (xf86vm_use_gammaramp) if (xf86vm_use_gammaramp)
return pXF86VidModeGetGammaRamp(gdi_display, DefaultScreen(gdi_display), 256, return pXF86VidModeGetGammaRamp(gdi_display, DefaultScreen(gdi_display), GAMMA_RAMP_SIZE,
ramp->red, ramp->green, ramp->blue); ramp->red, ramp->green, ramp->blue);
#endif #endif
if (pXF86VidModeGetGamma(gdi_display, DefaultScreen(gdi_display), &gamma)) if (pXF86VidModeGetGamma(gdi_display, DefaultScreen(gdi_display), &gamma))
...@@ -367,7 +367,7 @@ static BOOL X11DRV_XF86VM_SetGammaRamp(struct x11drv_gamma_ramp *ramp) ...@@ -367,7 +367,7 @@ static BOOL X11DRV_XF86VM_SetGammaRamp(struct x11drv_gamma_ramp *ramp)
!ComputeGammaFromRamp(ramp->blue, &gamma.blue)) return FALSE; !ComputeGammaFromRamp(ramp->blue, &gamma.blue)) return FALSE;
#ifdef X_XF86VidModeSetGammaRamp #ifdef X_XF86VidModeSetGammaRamp
if (xf86vm_use_gammaramp) if (xf86vm_use_gammaramp)
return pXF86VidModeSetGammaRamp(gdi_display, DefaultScreen(gdi_display), 256, return pXF86VidModeSetGammaRamp(gdi_display, DefaultScreen(gdi_display), GAMMA_RAMP_SIZE,
ramp->red, ramp->green, ramp->blue); ramp->red, ramp->green, ramp->blue);
#endif #endif
return pXF86VidModeSetGamma(gdi_display, DefaultScreen(gdi_display), &gamma); return pXF86VidModeSetGamma(gdi_display, DefaultScreen(gdi_display), &gamma);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment