⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 radeon_video.c

📁 x.org上有关ati系列显卡最新驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
    XVIMAGE_YV12,    XVIMAGE_I420};#endif/* Reference color space transform data */typedef struct tagREF_TRANSFORM{    float   RefLuma;    float   RefRCb;    float   RefRCr;    float   RefGCb;    float   RefGCr;    float   RefBCb;    float   RefBCr;} REF_TRANSFORM;/* Parameters for ITU-R BT.601 and ITU-R BT.709 colour spaces */static REF_TRANSFORM trans[2] ={    {1.1678, 0.0, 1.6007, -0.3929, -0.8154, 2.0232, 0.0}, /* BT.601 */    {1.1678, 0.0, 1.7980, -0.2139, -0.5345, 2.1186, 0.0}  /* BT.709 */};/* Gamma curve definition for preset gammas */typedef struct tagGAMMA_CURVE_R100{    CARD32 GAMMA_0_F_SLOPE;    CARD32 GAMMA_0_F_OFFSET;    CARD32 GAMMA_10_1F_SLOPE;    CARD32 GAMMA_10_1F_OFFSET;    CARD32 GAMMA_20_3F_SLOPE;    CARD32 GAMMA_20_3F_OFFSET;    CARD32 GAMMA_40_7F_SLOPE;    CARD32 GAMMA_40_7F_OFFSET;    CARD32 GAMMA_380_3BF_SLOPE;    CARD32 GAMMA_380_3BF_OFFSET;    CARD32 GAMMA_3C0_3FF_SLOPE;    CARD32 GAMMA_3C0_3FF_OFFSET;    float OvGammaCont;} GAMMA_CURVE_R100;typedef struct tagGAMMA_CURVE_R200{    CARD32 GAMMA_0_F_SLOPE;    CARD32 GAMMA_0_F_OFFSET;    CARD32 GAMMA_10_1F_SLOPE;    CARD32 GAMMA_10_1F_OFFSET;    CARD32 GAMMA_20_3F_SLOPE;    CARD32 GAMMA_20_3F_OFFSET;    CARD32 GAMMA_40_7F_SLOPE;    CARD32 GAMMA_40_7F_OFFSET;    CARD32 GAMMA_80_BF_SLOPE;    CARD32 GAMMA_80_BF_OFFSET;    CARD32 GAMMA_C0_FF_SLOPE;    CARD32 GAMMA_C0_FF_OFFSET;    CARD32 GAMMA_100_13F_SLOPE;    CARD32 GAMMA_100_13F_OFFSET;    CARD32 GAMMA_140_17F_SLOPE;    CARD32 GAMMA_140_17F_OFFSET;    CARD32 GAMMA_180_1BF_SLOPE;    CARD32 GAMMA_180_1BF_OFFSET;    CARD32 GAMMA_1C0_1FF_SLOPE;    CARD32 GAMMA_1C0_1FF_OFFSET;    CARD32 GAMMA_200_23F_SLOPE;    CARD32 GAMMA_200_23F_OFFSET;    CARD32 GAMMA_240_27F_SLOPE;    CARD32 GAMMA_240_27F_OFFSET;    CARD32 GAMMA_280_2BF_SLOPE;    CARD32 GAMMA_280_2BF_OFFSET;    CARD32 GAMMA_2C0_2FF_SLOPE;    CARD32 GAMMA_2C0_2FF_OFFSET;    CARD32 GAMMA_300_33F_SLOPE;    CARD32 GAMMA_300_33F_OFFSET;    CARD32 GAMMA_340_37F_SLOPE;    CARD32 GAMMA_340_37F_OFFSET;    CARD32 GAMMA_380_3BF_SLOPE;    CARD32 GAMMA_380_3BF_OFFSET;    CARD32 GAMMA_3C0_3FF_SLOPE;    CARD32 GAMMA_3C0_3FF_OFFSET;    float OvGammaCont;} GAMMA_CURVE_R200;/* Preset gammas */static GAMMA_CURVE_R100 gamma_curve_r100[8] = {	/* Gamma 1.0 */	{0x100, 0x0, 	 0x100, 0x20, 	 0x100, 0x40, 	 0x100, 0x80, 	 0x100, 0x100, 	 0x100, 0x100, 	 1.0},	/* Gamma 0.85 */	{0x75,  0x0, 	 0xA2,  0xF,  	 0xAC,  0x23, 	 0xC6,  0x4E, 	 0x129, 0xD6, 	 0x12B, 0xD5, 	 1.0},	/* Gamma 1.1 */	{0x180, 0x0, 	 0x13C, 0x30, 	 0x13C, 0x57, 	 0x123, 0xA5, 	 0xEA,  0x116, 	 0xEA, 0x116, 	 0.9913},	/* Gamma 1.2 */	{0x21B, 0x0, 	 0x16D, 0x43, 	 0x172, 0x71, 	 0x13D, 0xCD, 	 0xD9,  0x128, 	 0xD6, 0x12A, 	 0.9827},	/* Gamma 1.45 */	{0x404, 0x0, 	 0x1B9, 0x81, 	 0x1EE, 0xB8, 	 0x16A, 0x133, 	 0xB7, 0x14B, 	 0xB2, 0x14E, 	 0.9567},	/* Gamma 1.7 */	{0x658, 0x0, 	 0x1B5, 0xCB, 	 0x25F, 0x102, 	 0x181, 0x199, 	 0x9C,  0x165, 	 0x98, 0x167, 	 0.9394},	/* Gamma 2.2 */	{0x7FF, 0x0, 	 0x625, 0x100, 	 0x1E4, 0x1C4, 	 0x1BD, 0x23D, 	 0x79,  0x187, 	 0x76,  0x188, 	 0.9135},	/* Gamma 2.5 */	{0x7FF, 0x0, 	 0x7FF, 0x100, 	 0x2AD, 0x200, 	 0x1A2, 0x2AB, 	 0x6E,  0x194, 	 0x67,  0x197, 	 0.9135}};static GAMMA_CURVE_R200 gamma_curve_r200[8] = {	/* Gamma 1.0 */      {0x00000040, 0x00000000,       0x00000040, 0x00000020,       0x00000080, 0x00000040,       0x00000100, 0x00000080,       0x00000100, 0x00000100,       0x00000100, 0x00000100,       0x00000100, 0x00000200,       0x00000100, 0x00000200,       0x00000100, 0x00000300,       0x00000100, 0x00000300,       0x00000100, 0x00000400,       0x00000100, 0x00000400,       0x00000100, 0x00000500,       0x00000100, 0x00000500,       0x00000100, 0x00000600,       0x00000100, 0x00000600,       0x00000100, 0x00000700,       0x00000100, 0x00000700,       1.0},	/* Gamma 0.85 */      {0x0000001D, 0x00000000,       0x00000028, 0x0000000F,       0x00000056, 0x00000023,       0x000000C5, 0x0000004E,       0x000000DA, 0x000000B0,       0x000000E6, 0x000000AA,       0x000000F1, 0x00000190,       0x000000F9, 0x0000018C,       0x00000101, 0x00000286,       0x00000108, 0x00000282,       0x0000010D, 0x0000038A,       0x00000113, 0x00000387,       0x00000118, 0x0000049A,       0x0000011C, 0x00000498,       0x00000120, 0x000005B4,       0x00000124, 0x000005B2,       0x00000128, 0x000006D6,       0x0000012C, 0x000006D5,       1.0},	/* Gamma 1.1 */      {0x00000060, 0x00000000,       0x0000004F, 0x00000030,       0x0000009C, 0x00000057,       0x00000121, 0x000000A5,       0x00000113, 0x00000136,       0x0000010B, 0x0000013A,       0x00000105, 0x00000245,       0x00000100, 0x00000247,       0x000000FD, 0x00000348,       0x000000F9, 0x00000349,       0x000000F6, 0x00000443,       0x000000F4, 0x00000444,       0x000000F2, 0x00000538,       0x000000F0, 0x00000539,       0x000000EE, 0x00000629,       0x000000EC, 0x00000629,       0x000000EB, 0x00000716,       0x000000E9, 0x00000717,       0.9913},	/* Gamma 1.2 */      {0x00000087, 0x00000000,       0x0000005B, 0x00000043,       0x000000B7, 0x00000071,       0x0000013D, 0x000000CD,       0x00000121, 0x0000016B,       0x00000113, 0x00000172,       0x00000107, 0x00000286,       0x000000FF, 0x0000028A,       0x000000F8, 0x00000389,       0x000000F2, 0x0000038B,       0x000000ED, 0x0000047D,       0x000000E9, 0x00000480,       0x000000E5, 0x00000568,       0x000000E1, 0x0000056A,       0x000000DE, 0x0000064B,       0x000000DB, 0x0000064D,       0x000000D9, 0x00000728,       0x000000D6, 0x00000729,       0.9827},	/* Gamma 1.45 */      {0x00000101, 0x00000000,       0x0000006E, 0x00000081,       0x000000F7, 0x000000B8,       0x0000016E, 0x00000133,       0x00000139, 0x000001EA,       0x0000011B, 0x000001F9,       0x00000105, 0x00000314,       0x000000F6, 0x0000031C,       0x000000E9, 0x00000411,       0x000000DF, 0x00000417,       0x000000D7, 0x000004F6,       0x000000CF, 0x000004F9,       0x000000C9, 0x000005C9,       0x000000C4, 0x000005CC,       0x000000BF, 0x0000068F,       0x000000BA, 0x00000691,       0x000000B6, 0x0000074B,       0x000000B2, 0x0000074D,       0.9567},	/* Gamma 1.7 */      {0x00000196, 0x00000000,       0x0000006D, 0x000000CB,       0x0000012F, 0x00000102,       0x00000187, 0x00000199,       0x00000144, 0x0000025b,       0x00000118, 0x00000273,       0x000000FE, 0x0000038B,       0x000000E9, 0x00000395,       0x000000DA, 0x0000047E,       0x000000CE, 0x00000485,       0x000000C3, 0x00000552,       0x000000BB, 0x00000556,       0x000000B3, 0x00000611,       0x000000AC, 0x00000614,       0x000000A7, 0x000006C1,       0x000000A1, 0x000006C3,       0x0000009D, 0x00000765,       0x00000098, 0x00000767,       0.9394},	/* Gamma 2.2 */      {0x000001FF, 0x00000000,       0x0000018A, 0x00000100,       0x000000F1, 0x000001C5,       0x000001D6, 0x0000023D,       0x00000124, 0x00000328,       0x00000116, 0x0000032F,       0x000000E2, 0x00000446,       0x000000D3, 0x0000044D,       0x000000BC, 0x00000520,       0x000000B0, 0x00000526,       0x000000A4, 0x000005D6,       0x0000009B, 0x000005DB,       0x00000092, 0x00000676,       0x0000008B, 0x00000679,       0x00000085, 0x00000704,       0x00000080, 0x00000707,       0x0000007B, 0x00000787,       0x00000076, 0x00000789,       0.9135},	/* Gamma 2.5 */      {0x000001FF, 0x00000000,       0x000001FF, 0x00000100,       0x00000159, 0x000001FF,       0x000001AC, 0x000002AB,       0x0000012F, 0x00000381,       0x00000101, 0x00000399,       0x000000D9, 0x0000049A,       0x000000C3, 0x000004A5,       0x000000AF, 0x00000567,       0x000000A1, 0x0000056E,       0x00000095, 0x00000610,       0x0000008C, 0x00000614,       0x00000084, 0x000006A0,       0x0000007D, 0x000006A4,       0x00000077, 0x00000721,       0x00000071, 0x00000723,       0x0000006D, 0x00000795,       0x00000068, 0x00000797,       0.9135}};static voidRADEONSetOverlayGamma(ScrnInfoPtr pScrn, CARD32 gamma){    RADEONInfoPtr    info = RADEONPTR(pScrn);    unsigned char   *RADEONMMIO = info->MMIO;    CARD32	    ov0_scale_cntl;    /* Set gamma */    RADEONWaitForIdleMMIO(pScrn);    ov0_scale_cntl = INREG(RADEON_OV0_SCALE_CNTL) & ~RADEON_SCALER_GAMMA_SEL_MASK;    OUTREG(RADEON_OV0_SCALE_CNTL, ov0_scale_cntl | (gamma << 0x00000005));    /* Load gamma curve adjustments */    if (info->ChipFamily >= CHIP_FAMILY_R200) {    	OUTREG(RADEON_OV0_GAMMA_000_00F,	    (gamma_curve_r200[gamma].GAMMA_0_F_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_0_F_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_010_01F,	    (gamma_curve_r200[gamma].GAMMA_10_1F_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_10_1F_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_020_03F,	    (gamma_curve_r200[gamma].GAMMA_20_3F_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_20_3F_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_040_07F,	    (gamma_curve_r200[gamma].GAMMA_40_7F_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_40_7F_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_080_0BF,	    (gamma_curve_r200[gamma].GAMMA_80_BF_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_80_BF_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_0C0_0FF,	    (gamma_curve_r200[gamma].GAMMA_C0_FF_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_C0_FF_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_100_13F,	    (gamma_curve_r200[gamma].GAMMA_100_13F_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_100_13F_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_140_17F,	    (gamma_curve_r200[gamma].GAMMA_140_17F_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_140_17F_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_180_1BF,	    (gamma_curve_r200[gamma].GAMMA_180_1BF_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_180_1BF_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_1C0_1FF,	    (gamma_curve_r200[gamma].GAMMA_1C0_1FF_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_1C0_1FF_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_200_23F,	    (gamma_curve_r200[gamma].GAMMA_200_23F_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_200_23F_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_240_27F,	    (gamma_curve_r200[gamma].GAMMA_240_27F_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_240_27F_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_280_2BF,	    (gamma_curve_r200[gamma].GAMMA_280_2BF_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_280_2BF_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_2C0_2FF,	    (gamma_curve_r200[gamma].GAMMA_2C0_2FF_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_2C0_2FF_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_300_33F,	    (gamma_curve_r200[gamma].GAMMA_300_33F_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_300_33F_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_340_37F,	    (gamma_curve_r200[gamma].GAMMA_340_37F_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_340_37F_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_380_3BF,	    (gamma_curve_r200[gamma].GAMMA_380_3BF_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_380_3BF_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_3C0_3FF,	    (gamma_curve_r200[gamma].GAMMA_3C0_3FF_OFFSET << 0x00000000) |	    (gamma_curve_r200[gamma].GAMMA_3C0_3FF_SLOPE << 0x00000010));    } else {    	OUTREG(RADEON_OV0_GAMMA_000_00F,	    (gamma_curve_r100[gamma].GAMMA_0_F_OFFSET << 0x00000000) |	    (gamma_curve_r100[gamma].GAMMA_0_F_SLOPE << 0x00000010));    	OUTREG(RADEON_OV0_GAMMA_010_01F,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -