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

📄 i915_program.h

📁 显驱动 Intel英特尔G45G43G41G35G33G31G965Q963Q965GM965系列显卡最新X.Org驱动2.4.0版For Linux
💻 H
字号:
#ifndef _I915_PROGRAM_H#define _I915_PROGRAM_H#define REG_TYPE_R                 0    /* temporary regs, no need to                                         * dcl, must be written before                                         * read -- Preserved between                                         * phases.                                         */#define REG_TYPE_T                 1    /* Interpolated values, must be                                         * dcl'ed before use.                                         *                                         * 0..7: texture coord,                                         * 8: diffuse spec,                                         * 9: specular color,                                         * 10: fog parameter in w.                                         */#define REG_TYPE_CONST             2    /* Restriction: only one const                                         * can be referenced per                                         * instruction, though it may be                                         * selected for multiple inputs.                                         * Constants not initialized                                         * default to zero.                                         */#define REG_TYPE_S                 3    /* sampler */#define REG_TYPE_OC                4    /* output color (rgba) */#define REG_TYPE_OD                5    /* output depth (w), xyz are                                         * temporaries.  If not written,                                         * interpolated depth is used?                                         */#define REG_TYPE_U                 6    /* unpreserved temporaries */#define REG_TYPE_MASK              0x7#define REG_NR_MASK                0xf/* REG_TYPE_T: */#define T_TEX0     0#define T_TEX1     1#define T_TEX2     2#define T_TEX3     3#define T_TEX4     4#define T_TEX5     5#define T_TEX6     6#define T_TEX7     7#define T_DIFFUSE  8#define T_SPECULAR 9#define T_FOG_W    10           /* interpolated fog is in W coord *//* Arithmetic instructions *//* .replicate_swizzle == selection and replication of a particular * scalar channel, ie., .xxxx, .yyyy, .zzzz or .wwww */#define A0_NOP    (0x0<<24)     /* no operation */#define A0_ADD    (0x1<<24)     /* dst = src0 + src1 */#define A0_MOV    (0x2<<24)     /* dst = src0 */#define A0_MUL    (0x3<<24)     /* dst = src0 * src1 */#define A0_MAD    (0x4<<24)     /* dst = src0 * src1 + src2 */#define A0_DP2ADD (0x5<<24)     /* dst.xyzw = src0.xy dot src1.xy + src2.replicate_swizzle */#define A0_DP3    (0x6<<24)     /* dst.xyzw = src0.xyz dot src1.xyz */#define A0_DP4    (0x7<<24)     /* dst.xyzw = src0.xyzw dot src1.xyzw */#define A0_FRC    (0x8<<24)     /* dst = src0 - floor(src0) */#define A0_RCP    (0x9<<24)     /* dst.xyzw = 1/(src0.replicate_swizzle) */#define A0_RSQ    (0xa<<24)     /* dst.xyzw = 1/(sqrt(abs(src0.replicate_swizzle))) */#define A0_EXP    (0xb<<24)     /* dst.xyzw = exp2(src0.replicate_swizzle) */#define A0_LOG    (0xc<<24)     /* dst.xyzw = log2(abs(src0.replicate_swizzle)) */#define A0_CMP    (0xd<<24)     /* dst = (src0 >= 0.0) ? src1 : src2 */#define A0_MIN    (0xe<<24)     /* dst = (src0 < src1) ? src0 : src1 */#define A0_MAX    (0xf<<24)     /* dst = (src0 >= src1) ? src0 : src1 */#define A0_FLR    (0x10<<24)    /* dst = floor(src0) */#define A0_MOD    (0x11<<24)    /* dst = src0 fmod 1.0 */#define A0_TRC    (0x12<<24)    /* dst = int(src0) */#define A0_SGE    (0x13<<24)    /* dst = src0 >= src1 ? 1.0 : 0.0 */#define A0_SLT    (0x14<<24)    /* dst = src0 < src1 ? 1.0 : 0.0 */#define A0_DEST_SATURATE                 (1<<22)#define A0_DEST_TYPE_SHIFT                19/* Allow: R, OC, OD, U */#define A0_DEST_NR_SHIFT                 14/* Allow R: 0..15, OC,OD: 0..0, U: 0..2 */#define A0_DEST_CHANNEL_X                (1<<10)#define A0_DEST_CHANNEL_Y                (2<<10)#define A0_DEST_CHANNEL_Z                (4<<10)#define A0_DEST_CHANNEL_W                (8<<10)#define A0_DEST_CHANNEL_ALL              (0xf<<10)#define A0_DEST_CHANNEL_SHIFT            10#define A0_SRC0_TYPE_SHIFT               7#define A0_SRC0_NR_SHIFT                 2#define A0_DEST_CHANNEL_XY              (A0_DEST_CHANNEL_X|A0_DEST_CHANNEL_Y)#define A0_DEST_CHANNEL_XYZ             (A0_DEST_CHANNEL_XY|A0_DEST_CHANNEL_Z)#define SRC_X        0#define SRC_Y        1#define SRC_Z        2#define SRC_W        3#define SRC_ZERO     4#define SRC_ONE      5#define A1_SRC0_CHANNEL_X_NEGATE         (1<<31)#define A1_SRC0_CHANNEL_X_SHIFT          28#define A1_SRC0_CHANNEL_Y_NEGATE         (1<<27)#define A1_SRC0_CHANNEL_Y_SHIFT          24#define A1_SRC0_CHANNEL_Z_NEGATE         (1<<23)#define A1_SRC0_CHANNEL_Z_SHIFT          20#define A1_SRC0_CHANNEL_W_NEGATE         (1<<19)#define A1_SRC0_CHANNEL_W_SHIFT          16#define A1_SRC1_TYPE_SHIFT               13#define A1_SRC1_NR_SHIFT                 8#define A1_SRC1_CHANNEL_X_NEGATE         (1<<7)#define A1_SRC1_CHANNEL_X_SHIFT          4#define A1_SRC1_CHANNEL_Y_NEGATE         (1<<3)#define A1_SRC1_CHANNEL_Y_SHIFT          0#define A2_SRC1_CHANNEL_Z_NEGATE         (1<<31)#define A2_SRC1_CHANNEL_Z_SHIFT          28#define A2_SRC1_CHANNEL_W_NEGATE         (1<<27)#define A2_SRC1_CHANNEL_W_SHIFT          24#define A2_SRC2_TYPE_SHIFT               21#define A2_SRC2_NR_SHIFT                 16#define A2_SRC2_CHANNEL_X_NEGATE         (1<<15)#define A2_SRC2_CHANNEL_X_SHIFT          12#define A2_SRC2_CHANNEL_Y_NEGATE         (1<<11)#define A2_SRC2_CHANNEL_Y_SHIFT          8#define A2_SRC2_CHANNEL_Z_NEGATE         (1<<7)#define A2_SRC2_CHANNEL_Z_SHIFT          4#define A2_SRC2_CHANNEL_W_NEGATE         (1<<3)#define A2_SRC2_CHANNEL_W_SHIFT          0/* Declaration instructions */#define D0_DCL       (0x19<<24) /* Declare a t (interpolated attrib)                                 * register or an s (sampler)                                 * register. */#define D0_SAMPLE_TYPE_SHIFT              22#define D0_SAMPLE_TYPE_2D                 (0x0<<22)#define D0_SAMPLE_TYPE_CUBE               (0x1<<22)#define D0_SAMPLE_TYPE_VOLUME             (0x2<<22)#define D0_SAMPLE_TYPE_MASK               (0x3<<22)#define D0_TYPE_SHIFT                19/* Allow: T, S */#define D0_NR_SHIFT                  14/* Allow T: 0..10, S: 0..15 */#define D0_CHANNEL_X                (1<<10)#define D0_CHANNEL_Y                (2<<10)#define D0_CHANNEL_Z                (4<<10)#define D0_CHANNEL_W                (8<<10)#define D0_CHANNEL_ALL              (0xf<<10)#define D0_CHANNEL_NONE             (0<<10)#define D0_CHANNEL_XY               (D0_CHANNEL_X|D0_CHANNEL_Y)#define D0_CHANNEL_XYZ              (D0_CHANNEL_XY|D0_CHANNEL_Z)/* I915 Errata: Do not allow (xz), (xw), (xzw) combinations for diffuse * or specular declarations. * * For T dcls, only allow: (x), (xy), (xyz), (w), (xyzw) * * Must be zero for S (sampler) dcls */#define D1_MBZ                          0#define D2_MBZ                          0/* Texture instructions */#define T0_TEXLD     (0x15<<24) /* Sample texture using predeclared                                 * sampler and address, and output                                 * filtered texel data to destination                                 * register */#define T0_TEXLDP    (0x16<<24) /* Same as texld but performs a                                 * perspective divide of the texture                                 * coordinate .xyz values by .w before                                 * sampling. */#define T0_TEXLDB    (0x17<<24) /* Same as texld but biases the                                 * computed LOD by w.  Only S4.6 two's                                 * comp is used.  This implies that a                                 * float to fixed conversion is                                 * done. */#define T0_TEXKILL   (0x18<<24) /* Does not perform a sampling                                 * operation.  Simply kills the pixel                                 * if any channel of the address                                 * register is < 0.0. */#define T0_DEST_TYPE_SHIFT                19/* Allow: R, OC, OD, U *//* Note: U (unpreserved) regs do not retain their values between * phases (cannot be used for feedback) * * Note: oC and OD registers can only be used as the destination of a * texture instruction once per phase (this is an implementation * restriction). */#define T0_DEST_NR_SHIFT                 14/* Allow R: 0..15, OC,OD: 0..0, U: 0..2 */#define T0_SAMPLER_NR_SHIFT              0      /* This field ignored for TEXKILL */#define T0_SAMPLER_NR_MASK               (0xf<<0)#define T1_ADDRESS_REG_TYPE_SHIFT        24     /* Reg to use as texture coord *//* Allow R, T, OC, OD -- R, OC, OD are 'dependent' reads, new program phase */#define T1_ADDRESS_REG_NR_SHIFT          17#define T2_MBZ                           0/* Having zero and one in here makes the definition of swizzle a lot * easier. */#define UREG_TYPE_SHIFT               29#define UREG_NR_SHIFT                 24#define UREG_CHANNEL_X_NEGATE_SHIFT   23#define UREG_CHANNEL_X_SHIFT          20#define UREG_CHANNEL_Y_NEGATE_SHIFT   19#define UREG_CHANNEL_Y_SHIFT          16#define UREG_CHANNEL_Z_NEGATE_SHIFT   15#define UREG_CHANNEL_Z_SHIFT          12#define UREG_CHANNEL_W_NEGATE_SHIFT   11#define UREG_CHANNEL_W_SHIFT          8#define UREG_CHANNEL_ZERO_NEGATE_MBZ  5#define UREG_CHANNEL_ZERO_SHIFT       4#define UREG_CHANNEL_ONE_NEGATE_MBZ   1#define UREG_CHANNEL_ONE_SHIFT        0#define UREG_BAD          0xffffffff    /* not a valid ureg */#define X    SRC_X#define Y    SRC_Y#define Z    SRC_Z#define W    SRC_W#define ZERO SRC_ZERO#define ONE  SRC_ONE/* Construct a ureg: */#define UREG(type, nr) (((type) << UREG_TYPE_SHIFT) |           \                        ((nr)  << UREG_NR_SHIFT) |              \                        (X     << UREG_CHANNEL_X_SHIFT) |       \                        (Y     << UREG_CHANNEL_Y_SHIFT) |       \                        (Z     << UREG_CHANNEL_Z_SHIFT) |       \                        (W     << UREG_CHANNEL_W_SHIFT) |       \                        (ZERO  << UREG_CHANNEL_ZERO_SHIFT) |    \                        (ONE   << UREG_CHANNEL_ONE_SHIFT))#define GET_CHANNEL_SRC( reg, channel ) ((reg<<(channel*4)) & (0xf<<20))#define CHANNEL_SRC( src, channel ) (src>>(channel*4))#define GET_UREG_TYPE(reg) (((reg) >> UREG_TYPE_SHIFT) & REG_TYPE_MASK)#define GET_UREG_NR(reg)   (((reg) >> UREG_NR_SHIFT) & REG_NR_MASK)#define UREG_XYZW_CHANNEL_MASK 0x00ffff00#define A0_DEST(reg) (((reg) & UREG_TYPE_NR_MASK) >> UREG_A0_DEST_SHIFT_LEFT)#define D0_DEST(reg) (((reg) & UREG_TYPE_NR_MASK) >> UREG_A0_DEST_SHIFT_LEFT)#define T0_DEST(reg) (((reg) & UREG_TYPE_NR_MASK) >> UREG_A0_DEST_SHIFT_LEFT)#define A0_SRC0(reg) (((reg) & UREG_MASK) >> UREG_A0_SRC0_SHIFT_LEFT)#define A1_SRC0(reg) (((reg) & UREG_MASK) << UREG_A1_SRC0_SHIFT_RIGHT)#define A1_SRC1(reg) (((reg) & UREG_MASK) >> UREG_A1_SRC1_SHIFT_LEFT)#define A2_SRC1(reg) (((reg) & UREG_MASK) << UREG_A2_SRC1_SHIFT_RIGHT)#define A2_SRC2(reg) (((reg) & UREG_MASK) >> UREG_A2_SRC2_SHIFT_LEFT)/* These are special, and don't have swizzle/negate bits. */#define T0_SAMPLER( reg )     (GET_UREG_NR(reg) << T0_SAMPLER_NR_SHIFT)#define T1_ADDRESS_REG( reg ) ((GET_UREG_NR(reg) << T1_ADDRESS_REG_NR_SHIFT) | \                               (GET_UREG_TYPE(reg) << T1_ADDRESS_REG_TYPE_SHIFT))/* Macros for translating UREG's into the various register fields used * by the I915 programmable unit. */#define UREG_A0_DEST_SHIFT_LEFT  (UREG_TYPE_SHIFT - A0_DEST_TYPE_SHIFT)#define UREG_A0_SRC0_SHIFT_LEFT  (UREG_TYPE_SHIFT - A0_SRC0_TYPE_SHIFT)#define UREG_A1_SRC0_SHIFT_RIGHT (A1_SRC0_CHANNEL_W_SHIFT - UREG_CHANNEL_W_SHIFT)#define UREG_A1_SRC1_SHIFT_LEFT  (UREG_TYPE_SHIFT - A1_SRC1_TYPE_SHIFT)#define UREG_A2_SRC1_SHIFT_RIGHT (A2_SRC1_CHANNEL_W_SHIFT - UREG_CHANNEL_W_SHIFT)#define UREG_A2_SRC2_SHIFT_LEFT  (UREG_TYPE_SHIFT - A2_SRC2_TYPE_SHIFT)#define UREG_MASK         0xffffff00#define UREG_TYPE_NR_MASK ((REG_TYPE_MASK << UREG_TYPE_SHIFT) | \                           (REG_NR_MASK << UREG_NR_SHIFT))#endif

⌨️ 快捷键说明

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