head 1.2; access; symbols pkgsrc-2014Q4:1.1.1.1.0.40 pkgsrc-2014Q4-base:1.1.1.1 pkgsrc-2014Q3:1.1.1.1.0.38 pkgsrc-2014Q3-base:1.1.1.1 pkgsrc-2014Q2:1.1.1.1.0.36 pkgsrc-2014Q2-base:1.1.1.1 pkgsrc-2014Q1:1.1.1.1.0.34 pkgsrc-2014Q1-base:1.1.1.1 pkgsrc-2013Q4:1.1.1.1.0.32 pkgsrc-2013Q4-base:1.1.1.1 pkgsrc-2013Q3:1.1.1.1.0.30 pkgsrc-2013Q3-base:1.1.1.1 pkgsrc-2013Q2:1.1.1.1.0.28 pkgsrc-2013Q2-base:1.1.1.1 pkgsrc-2013Q1:1.1.1.1.0.26 pkgsrc-2013Q1-base:1.1.1.1 pkgsrc-2012Q4:1.1.1.1.0.24 pkgsrc-2012Q4-base:1.1.1.1 pkgsrc-2012Q3:1.1.1.1.0.22 pkgsrc-2012Q3-base:1.1.1.1 pkgsrc-2012Q2:1.1.1.1.0.20 pkgsrc-2012Q2-base:1.1.1.1 pkgsrc-2012Q1:1.1.1.1.0.18 pkgsrc-2012Q1-base:1.1.1.1 pkgsrc-2011Q4:1.1.1.1.0.16 pkgsrc-2011Q4-base:1.1.1.1 pkgsrc-2011Q3:1.1.1.1.0.14 pkgsrc-2011Q3-base:1.1.1.1 pkgsrc-2011Q2:1.1.1.1.0.12 pkgsrc-2011Q2-base:1.1.1.1 pkgsrc-2011Q1:1.1.1.1.0.10 pkgsrc-2011Q1-base:1.1.1.1 pkgsrc-2010Q4:1.1.1.1.0.8 pkgsrc-2010Q4-base:1.1.1.1 pkgsrc-2010Q3:1.1.1.1.0.6 pkgsrc-2010Q3-base:1.1.1.1 pkgsrc-2010Q2:1.1.1.1.0.4 pkgsrc-2010Q2-base:1.1.1.1 pkgsrc-2010Q1:1.1.1.1.0.2 pkgsrc-2010Q1-base:1.1.1.1 pkgsrc-base:1.1.1.1 TNF:1.1.1; locks; strict; comment @# @; 1.2 date 2015.02.10.22.10.33; author snj; state dead; branches; next 1.1; commitid BDwJZjvQiyZ0Kv9y; 1.1 date 2010.03.09.23.20.01; author snj; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2010.03.09.23.20.01; author snj; state Exp; branches; next ; desc @@ 1.2 log @Update tyrquake to the latest git snapshot, since a proper release does not appear to be forthcoming. Various code cleanup, minor bugfixes, etc. Audio now works on Banana Pi if started with -sndspeed 44100. @ text @$NetBSD: patch-ab,v 1.1 2010/03/09 23:20:01 snj Exp $ ed46d97c106471672c571eebd51dedc0508e1225 upstream. [PATCH] Query size of X11 gamma ramp It seems since Xorg 7.4, the size of the gamma ramp is no longer 256 in all cases. So we will need to query the gamma size and use the appropriate size when calling into the X11 API. Quake assumes a 256 valued gamma ramp througout the code, so we need to scale the ramp passed down via VID_SetGammaRamp accordingly. --- common/gl_vidlinuxglx.c.orig 2009-07-04 22:43:49.000000000 -0700 +++ common/gl_vidlinuxglx.c 2010-03-08 19:30:56.000000000 -0800 @@@@ -463,7 +463,8 @@@@ HandleEvents(void) } void (*VID_SetGammaRamp)(unsigned short ramp[3][256]); -static unsigned short saved_gamma_ramp[3][256]; +static unsigned short *x11_gamma_ramp; +static int x11_gamma_size; void signal_handler(int sig) @@@@ -471,7 +472,10 @@@@ signal_handler(int sig) printf("Received signal %d, exiting...\n", sig); XAutoRepeatOn(x_disp); if (VID_SetGammaRamp) - VID_SetGammaRamp(saved_gamma_ramp); + XF86VidModeSetGammaRamp(x_disp, scrnum, x11_gamma_size, + x11_gamma_ramp, + x11_gamma_ramp + x11_gamma_size, + x11_gamma_ramp + x11_gamma_size * 2); XCloseDisplay(x_disp); Sys_Quit(); } @@@@ -589,10 +593,25 @@@@ CheckMultiTextureExtensions(void) static void VID_SetXF86GammaRamp(unsigned short ramp[3][256]) { + int i; + unsigned short *r, *g, *b; + if (!x_disp) Sys_Error("%s: x_disp == NULL!", __func__); - XF86VidModeSetGammaRamp(x_disp, scrnum, 256, ramp[0], ramp[1], ramp[2]); + /* + * Need to scale the gamma ramp to the hardware size + */ + r = Hunk_TempAlloc(3 * x11_gamma_size * sizeof(unsigned short)); + g = r + x11_gamma_size; + b = r + x11_gamma_size * 2; + for (i = 0; i < x11_gamma_size; i++) { + r[i] = ramp[0][i * 256 / x11_gamma_size]; + g[i] = ramp[1][i * 256 / x11_gamma_size]; + b[i] = ramp[2][i * 256 / x11_gamma_size]; + } + + XF86VidModeSetGammaRamp(x_disp, scrnum, x11_gamma_size, r, g, b); } /* @@@@ -604,10 +623,23 @@@@ VID_SetXF86GammaRamp(unsigned short ramp static void Gamma_Init() { - if (XF86VidModeGetGammaRamp(x_disp, scrnum, 256, - saved_gamma_ramp[0], - saved_gamma_ramp[1], - saved_gamma_ramp[2])) + Bool ret; + int size; + + ret = XF86VidModeGetGammaRampSize(x_disp, scrnum, &x11_gamma_size); + if (!ret|| !x11_gamma_size) { + VID_SetGammaRamp = NULL; + return; + } + + size = 3 * x11_gamma_size * sizeof(unsigned short); + x11_gamma_ramp = Hunk_AllocName(size, "x11_gamma_ramp"); + + ret = XF86VidModeGetGammaRamp(x_disp, scrnum, x11_gamma_size, + x11_gamma_ramp, + x11_gamma_ramp + x11_gamma_size, + x11_gamma_ramp + x11_gamma_size * 2); + if (ret) VID_SetGammaRamp = VID_SetXF86GammaRamp; else VID_SetGammaRamp = NULL; @@@@ -993,9 +1025,12 @@@@ VID_Init(unsigned char *palette) void VID_Shutdown(void) { - if (VID_SetGammaRamp) - VID_SetGammaRamp(saved_gamma_ramp); - + if (VID_SetGammaRamp) { + XF86VidModeSetGammaRamp(x_disp, scrnum, x11_gamma_size, + x11_gamma_ramp, + x11_gamma_ramp + x11_gamma_size, + x11_gamma_ramp + x11_gamma_size * 2); + } if (x_disp != NULL) { if (ctx != NULL) glXDestroyContext(x_disp, ctx); @ 1.1 log @Initial revision @ text @d1 1 a1 1 $NetBSD$ @ 1.1.1.1 log @Add tyrquake: TyrQuake is meant to be a fairly conservative branch of the Quake source code. It's intended to support Quake and Quakeworld in both software and GL versions, as well as the Quakeworld Server. It only contains bug fixes, and does does not change the look or feel of the game by adding lots of rendering enhancements, etc. @ text @@