Skip to content
Snippets Groups Projects
Commit 4a04f002 authored by Vladimir Dergachev's avatar Vladimir Dergachev
Browse files

Add missing files.

parent 8f1ba083
No related branches found
No related merge requests found
#ifndef __PIXEL_SHADER_H__
#define __PIXEL_SHADER_H__
#include "r300_reg.h"
/* INSTR 0 */
#define PFS_OP_MAD 0
#define PFS_OP_DP3 1
#define PFS_OP_DP4 2
#define PFS_OP_MIN 4
#define PFS_OP_MAX 5
#define PFS_OP_CMP 8
#define PFS_OP_FRC 9
#define PFS_OP_OUTC_REPL_ALPHA 10
/* "or" these with arg0 value to negate or take absolute value of an argument */
#define PFS_ARG_NEG (1<<5)
#define PFS_ARG_ABS (1<<6)
#define MAKE_PFS_INSTR0(op, arg0, arg1, arg2, flags) \
( ((op)<<23) \
| ((arg0)<<R300_FPI0_ARG0C_SHIFT) \
| ((arg1)<<R300_FPI0_ARG1C_SHIFT) \
| ((arg2)<<R300_FPI0_ARG2C_SHIFT) \
| (flags) \
)
#define PFS_FLAG_X 1
#define PFS_FLAG_Y 2
#define PFS_FLAG_XY 3
#define PFS_FLAG_Z 4
#define PFS_FLAG_XZ 5
#define PFS_FLAG_YZ 6
#define PFS_FLAG_ALL 7
#define PFS_FLAG_NONE 0
#define EASY_PFS_INSTR0(op, arg0, arg1, arg2) \
MAKE_PFS_INSTR0(PFS_OP_##op, \
R300_FPI0_ARGC_##arg0, \
R300_FPI0_ARGC_##arg1, \
R300_FPI0_ARGC_##arg2, \
0)
/* INSTR 1 */
#define PFS_FLAG_CONST (1<<5)
#define MAKE_PFS_INSTR1(dstc, src0, src1, src2, reg, output) \
((src0) | ((src1) << R300_FPI1_SRC1C_SHIFT) \
| ((src2)<<R300_FPI1_SRC2C_SHIFT) \
| ((dstc) << R300_FPI1_DSTC_SHIFT) \
| ((reg) << 23) | ((output)<<26))
#define EASY_PFS_INSTR1(dstc, src0, src1, src2, reg, output) \
MAKE_PFS_INSTR1(dstc, src0, src1, src2, PFS_FLAG_##reg, PFS_FLAG_##output)
/* INSTR 2 */
/* you can "or" PFS_ARG_NEG with these values to negate them */
#define MAKE_PFS_INSTR2(op, arg0, arg1, arg2, flags) \
(((op) << 23) | \
((arg0)<<R300_FPI2_ARG0A_SHIFT) | \
((arg1)<<R300_FPI2_ARG1A_SHIFT) | \
((arg2)<<R300_FPI2_ARG2A_SHIFT) | \
(flags))
#define EASY_PFS_INSTR2(op, arg0, arg1, arg2) \
MAKE_PFS_INSTR2(R300_FPI2_OUTA_##op, \
R300_FPI2_ARGA_##arg0, \
R300_FPI2_ARGA_##arg1, \
R300_FPI2_ARGA_##arg2, \
0)
/* INSTR 3 */
#define PFS_FLAG_NONE 0
#define PFS_FLAG_REG 1
#define PFS_FLAG_OUTPUT 2
#define PFS_FLAG_BOTH 3
#define MAKE_PFS_INSTR3(dstc, src0, src1, src2, flags) \
((src0) | ((src1) << R300_FPI1_SRC1C_SHIFT) \
| ((src2)<<R300_FPI1_SRC2C_SHIFT) \
| ((dstc) << R300_FPI1_DSTC_SHIFT) \
| ((flags) << 23))
#define EASY_PFS_INSTR3(dstc, src0, src1, src2, flag) \
MAKE_PFS_INSTR3(dstc, src0, src1, src2, PFS_FLAG_##flag)
#endif
#ifndef __VERTEX_SHADER_H__
#define __VERTEX_SHADER_H__
#include "r300_reg.h"
typedef struct {
CARD32 op;
CARD32 src1;
CARD32 src2;
CARD32 src3;
} VERTEX_SHADER_INSTRUCTION;
#define VSF_FLAG_X 1
#define VSF_FLAG_Y 2
#define VSF_FLAG_Z 4
#define VSF_FLAG_W 8
#define VSF_FLAG_ALL 0xf
#define VSF_FLAG_NONE 0
#define VSF_OUT_CLASS_TMP 0
#define VSF_OUT_CLASS_RESULT 2
/* first CARD32 of an instruction */
/* possible operations:
DOT, MUL, ADD, MAD, FRC, MAX, MIN, SGE, SLT, EXP, LOG, LIT, POW, RCP, RSQ, EX2,
LG2, MAD_2 */
#define MAKE_VSF_OP(op, out_reg_index, out_reg_fields, class) \
((op) \
| ((out_reg_index) << R300_VPI_OUT_REG_INDEX_SHIFT) \
| ((out_reg_fields) << 20) \
| ( (class) << 8 ) )
#define EASY_VSF_OP(op, out_reg_index, out_reg_fields, class) \
MAKE_VSF_OP(R300_VPI_OUT_OP_##op, out_reg_index, VSF_FLAG_##out_reg_fields, VSF_OUT_CLASS_##class) \
/* according to Nikolai, the subsequent 3 CARD32 are sources, use same define for each */
#define VSF_IN_CLASS_TMP 0
#define VSF_IN_CLASS_ATTR 1
#define VSF_IN_CLASS_PARAM 2
#define VSF_IN_CLASS_NONE 9
#define VSF_IN_COMPONENT_X 0
#define VSF_IN_COMPONENT_Y 1
#define VSF_IN_COMPONENT_Z 2
#define VSF_IN_COMPONENT_W 3
#define VSF_IN_COMPONENT_ZERO 4
#define VSF_IN_COMPONENT_ONE 5
#define MAKE_VSF_SOURCE(in_reg_index, comp_x, comp_y, comp_z, comp_w, class, negate) \
( ((in_reg_index)<<R300_VPI_IN_REG_INDEX_SHIFT) \
| ((comp_x)<<R300_VPI_IN_X_SHIFT) \
| ((comp_y)<<R300_VPI_IN_Y_SHIFT) \
| ((comp_z)<<R300_VPI_IN_Z_SHIFT) \
| ((comp_w)<<R300_VPI_IN_W_SHIFT) \
| ((negate)<<25) | ((class)))
#define EASY_VSF_SOURCE(in_reg_index, comp_x, comp_y, comp_z, comp_w, class, negate) \
MAKE_VSF_SOURCE(in_reg_index, \
VSF_IN_COMPONENT_##comp_x, \
VSF_IN_COMPONENT_##comp_y, \
VSF_IN_COMPONENT_##comp_z, \
VSF_IN_COMPONENT_##comp_w, \
VSF_IN_CLASS_##class, VSF_FLAG_##negate)
/* special sources: */
/* (1.0,1.0,1.0,1.0) vector (ATTR, plain ) */
#define VSF_ATTR_UNITY(reg) EASY_VSF_SOURCE(reg, ONE, ONE, ONE, ONE, ATTR, NONE)
#define VSF_UNITY(reg) EASY_VSF_SOURCE(reg, ONE, ONE, ONE, ONE, NONE, NONE)
/* contents of unmodified register */
#define VSF_REG(reg) EASY_VSF_SOURCE(reg, X, Y, Z, W, ATTR, NONE)
/* contents of unmodified parameter */
#define VSF_PARAM(reg) EASY_VSF_SOURCE(reg, X, Y, Z, W, PARAM, NONE)
/* contents of unmodified temporary register */
#define VSF_TMP(reg) EASY_VSF_SOURCE(reg, X, Y, Z, W, TMP, NONE)
/* components of ATTR register */
#define VSF_ATTR_X(reg) EASY_VSF_SOURCE(reg, X, X, X, X, ATTR, NONE)
#define VSF_ATTR_Y(reg) EASY_VSF_SOURCE(reg, Y, Y, Y, Y, ATTR, NONE)
#define VSF_ATTR_Z(reg) EASY_VSF_SOURCE(reg, Z, Z, Z, Z, ATTR, NONE)
#define VSF_ATTR_W(reg) EASY_VSF_SOURCE(reg, W, W, W, W, ATTR, NONE)
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment