2078
2078
# define R300_ALU_OUTC_D2A (3 << 23)
2079
2079
# define R300_ALU_OUTC_MIN (4 << 23)
2080
2080
# define R300_ALU_OUTC_MAX (5 << 23)
2081
# define R300_ALU_OUTC_CMPH (7 << 23)
2081
# define R300_ALU_OUTC_CND (7 << 23)
2082
2082
# define R300_ALU_OUTC_CMP (8 << 23)
2083
2083
# define R300_ALU_OUTC_FRC (9 << 23)
2084
2084
# define R300_ALU_OUTC_REPL_ALPHA (10 << 23)
2086
# define R300_ALU_OUTC_MOD_NOP (0 << 27)
2087
# define R300_ALU_OUTC_MOD_MUL2 (1 << 27)
2088
# define R300_ALU_OUTC_MOD_MUL4 (2 << 27)
2089
# define R300_ALU_OUTC_MOD_MUL8 (3 << 27)
2090
# define R300_ALU_OUTC_MOD_DIV2 (4 << 27)
2091
# define R300_ALU_OUTC_MOD_DIV4 (5 << 27)
2092
# define R300_ALU_OUTC_MOD_DIV8 (6 << 27)
2086
# define R300_ALU_OUTC_MOD_SHIFT 27
2087
# define R300_ALU_OUTC_MOD_NOP (0 << R300_ALU_OUTC_MOD_SHIFT)
2088
# define R300_ALU_OUTC_MOD_MUL2 (1 << R300_ALU_OUTC_MOD_SHIFT)
2089
# define R300_ALU_OUTC_MOD_MUL4 (2 << R300_ALU_OUTC_MOD_SHIFT)
2090
# define R300_ALU_OUTC_MOD_MUL8 (3 << R300_ALU_OUTC_MOD_SHIFT)
2091
# define R300_ALU_OUTC_MOD_DIV2 (4 << R300_ALU_OUTC_MOD_SHIFT)
2092
# define R300_ALU_OUTC_MOD_DIV4 (5 << R300_ALU_OUTC_MOD_SHIFT)
2093
# define R300_ALU_OUTC_MOD_DIV8 (6 << R300_ALU_OUTC_MOD_SHIFT)
2094
2095
# define R300_ALU_OUTC_CLAMP (1 << 30)
2095
2096
# define R300_ALU_INSERT_NOP (1 << 31)
2948
#define PVS_OP_DST_OPERAND(opcode, math_inst, macro_inst, reg_index, reg_writemask, reg_class) \
2949
(((opcode & PVS_DST_OPCODE_MASK) << PVS_DST_OPCODE_SHIFT) \
2950
| ((math_inst & PVS_DST_MATH_INST_MASK) << PVS_DST_MATH_INST_SHIFT) \
2951
| ((macro_inst & PVS_DST_MACRO_INST_MASK) << PVS_DST_MACRO_INST_SHIFT) \
2952
| ((reg_index & PVS_DST_OFFSET_MASK) << PVS_DST_OFFSET_SHIFT) \
2953
| ((reg_writemask & 0xf) << PVS_DST_WE_X_SHIFT) /* X Y Z W */ \
2954
| ((reg_class & PVS_DST_REG_TYPE_MASK) << PVS_DST_REG_TYPE_SHIFT))
2956
#define PVS_SRC_OPERAND(in_reg_index, comp_x, comp_y, comp_z, comp_w, reg_class, negate) \
2957
(((in_reg_index & PVS_SRC_OFFSET_MASK) << PVS_SRC_OFFSET_SHIFT) \
2958
| ((comp_x & PVS_SRC_SWIZZLE_X_MASK) << PVS_SRC_SWIZZLE_X_SHIFT) \
2959
| ((comp_y & PVS_SRC_SWIZZLE_Y_MASK) << PVS_SRC_SWIZZLE_Y_SHIFT) \
2960
| ((comp_z & PVS_SRC_SWIZZLE_Z_MASK) << PVS_SRC_SWIZZLE_Z_SHIFT) \
2961
| ((comp_w & PVS_SRC_SWIZZLE_W_MASK) << PVS_SRC_SWIZZLE_W_SHIFT) \
2962
| ((negate & 0xf) << PVS_SRC_MODIFIER_X_SHIFT) /* X Y Z W */ \
2963
| ((reg_class & PVS_SRC_REG_TYPE_MASK) << PVS_SRC_REG_TYPE_SHIFT))
2947
2965
/* BEGIN: Packet 3 commands */
2949
2967
/* A primitive emission dword. */
3037
3055
# define R500_ALPHA_MOD_B_NEG (1 << 24)
3038
3056
# define R500_ALPHA_MOD_B_ABS (2 << 24)
3039
3057
# define R500_ALPHA_MOD_B_NAB (3 << 24)
3040
# define R500_ALPHA_OMOD_IDENTITY (0 << 26)
3041
# define R500_ALPHA_OMOD_MUL_2 (1 << 26)
3042
# define R500_ALPHA_OMOD_MUL_4 (2 << 26)
3043
# define R500_ALPHA_OMOD_MUL_8 (3 << 26)
3044
# define R500_ALPHA_OMOD_DIV_2 (4 << 26)
3045
# define R500_ALPHA_OMOD_DIV_4 (5 << 26)
3046
# define R500_ALPHA_OMOD_DIV_8 (6 << 26)
3047
# define R500_ALPHA_OMOD_DISABLE (7 << 26)
3058
# define R500_ALPHA_OMOD_SHIFT 26
3059
# define R500_ALPHA_OMOD_IDENTITY (0 << R500_ALPHA_OMOD_SHIFT)
3060
# define R500_ALPHA_OMOD_MUL_2 (1 << R500_ALPHA_OMOD_SHIFT)
3061
# define R500_ALPHA_OMOD_MUL_4 (2 << R500_ALPHA_OMOD_SHIFT)
3062
# define R500_ALPHA_OMOD_MUL_8 (3 << R500_ALPHA_OMOD_SHIFT)
3063
# define R500_ALPHA_OMOD_DIV_2 (4 << R500_ALPHA_OMOD_SHIFT)
3064
# define R500_ALPHA_OMOD_DIV_4 (5 << R500_ALPHA_OMOD_SHIFT)
3065
# define R500_ALPHA_OMOD_DIV_8 (6 << R500_ALPHA_OMOD_SHIFT)
3066
# define R500_ALPHA_OMOD_DISABLE (7 << R500_ALPHA_OMOD_SHIFT)
3048
3067
# define R500_ALPHA_TARGET(x) ((x) << 29)
3049
3068
# define R500_ALPHA_W_OMASK (1 << 31)
3050
3069
#define R500_US_ALU_ALPHA_ADDR_0 0x9800
3194
3213
# define R500_ALU_RGB_MOD_B_NEG (1 << 24)
3195
3214
# define R500_ALU_RGB_MOD_B_ABS (2 << 24)
3196
3215
# define R500_ALU_RGB_MOD_B_NAB (3 << 24)
3197
# define R500_ALU_RGB_OMOD_IDENTITY (0 << 26)
3198
# define R500_ALU_RGB_OMOD_MUL_2 (1 << 26)
3199
# define R500_ALU_RGB_OMOD_MUL_4 (2 << 26)
3200
# define R500_ALU_RGB_OMOD_MUL_8 (3 << 26)
3201
# define R500_ALU_RGB_OMOD_DIV_2 (4 << 26)
3202
# define R500_ALU_RGB_OMOD_DIV_4 (5 << 26)
3203
# define R500_ALU_RGB_OMOD_DIV_8 (6 << 26)
3204
# define R500_ALU_RGB_OMOD_DISABLE (7 << 26)
3216
# define R500_ALU_RGB_OMOD_SHIFT 26
3217
# define R500_ALU_RGB_OMOD_IDENTITY (0 << R500_ALU_RGB_OMOD_SHIFT)
3218
# define R500_ALU_RGB_OMOD_MUL_2 (1 << R500_ALU_RGB_OMOD_SHIFT)
3219
# define R500_ALU_RGB_OMOD_MUL_4 (2 << R500_ALU_RGB_OMOD_SHIFT)
3220
# define R500_ALU_RGB_OMOD_MUL_8 (3 << R500_ALU_RGB_OMOD_SHIFT)
3221
# define R500_ALU_RGB_OMOD_DIV_2 (4 << R500_ALU_RGB_OMOD_SHIFT)
3222
# define R500_ALU_RGB_OMOD_DIV_4 (5 << R500_ALU_RGB_OMOD_SHIFT)
3223
# define R500_ALU_RGB_OMOD_DIV_8 (6 << R500_ALU_RGB_OMOD_SHIFT)
3224
# define R500_ALU_RGB_OMOD_DISABLE (7 << R500_ALU_RGB_OMOD_SHIFT)
3205
3225
# define R500_ALU_RGB_TARGET(x) ((x) << 29)
3206
3226
# define R500_ALU_RGB_WMASK (1 << 31)
3207
3227
#define R500_US_ALU_RGB_ADDR_0 0x9000
3224
3244
# define R500_INST_TYPE_OUT (1 << 0)
3225
3245
# define R500_INST_TYPE_FC (2 << 0)
3226
3246
# define R500_INST_TYPE_TEX (3 << 0)
3227
# define R500_INST_TEX_SEM_WAIT (1 << 2)
3247
# define R500_INST_TEX_SEM_WAIT_SHIFT 2
3248
# define R500_INST_TEX_SEM_WAIT (1 << R500_INST_TEX_SEM_WAIT_SHIFT)
3228
3249
# define R500_INST_RGB_PRED_SEL_NONE (0 << 3)
3229
3250
# define R500_INST_RGB_PRED_SEL_RGBA (1 << 3)
3230
3251
# define R500_INST_RGB_PRED_SEL_RRRR (2 << 3)
3249
3270
# define R500_INST_RGB_CLAMP (1 << 19)
3250
3271
# define R500_INST_ALPHA_CLAMP (1 << 20)
3251
3272
# define R500_INST_ALU_RESULT_SEL (1 << 21)
3273
# define R500_INST_ALU_RESULT_SEL_RED (0 << 21)
3274
# define R500_INST_ALU_RESULT_SEL_ALPHA (1 << 21)
3252
3275
# define R500_INST_ALPHA_PRED_INV (1 << 22)
3253
3276
# define R500_INST_ALU_RESULT_OP_EQ (0 << 23)
3254
3277
# define R500_INST_ALU_RESULT_OP_LT (1 << 23)
3404
3427
# define R500_TEX_INST_LODBIAS (4 << 22)
3405
3428
# define R500_TEX_INST_LOD (5 << 22)
3406
3429
# define R500_TEX_INST_DXDY (6 << 22)
3407
# define R500_TEX_SEM_ACQUIRE (1 << 25)
3430
# define R500_TEX_SEM_ACQUIRE_SHIFT 25
3431
# define R500_TEX_SEM_ACQUIRE (1 << R500_TEX_SEM_ACQUIRE_SHIFT)
3408
3432
# define R500_TEX_IGNORE_UNCOVERED (1 << 26)
3409
3433
# define R500_TEX_UNSCALED (1 << 27)
3410
3434
#define R300_US_W_FMT 0x46b4