#include "main/glheader.h"
#include "main/colormac.h"
#include "main/context.h"
#include "main/macros.h"
#include "shader/program.h"
#include "shader/atifragshader.h"
#include "swrast/s_atifragshader.h"
Data Structures | |
struct | atifs_machine |
State for executing ATI fragment shader. More... | |
Defines | |
#define | SETUP_SRC_REG(optype, i, x) |
Functions | |
static void | fetch_texel (GLcontext *ctx, const GLfloat texcoord[4], GLfloat lambda, GLuint unit, GLfloat color[4]) |
Fetch a texel. | |
static void | apply_swizzle (GLfloat values[4], GLuint swizzle) |
static void | apply_src_rep (GLint optype, GLuint rep, GLfloat *val) |
static void | apply_src_mod (GLint optype, GLuint mod, GLfloat *val) |
static void | apply_dst_mod (GLuint optype, GLuint mod, GLfloat *val) |
static void | write_dst_addr (GLuint optype, GLuint mod, GLuint mask, GLfloat *src, GLfloat *dst) |
static void | finish_pass (struct atifs_machine *machine) |
static void | handle_pass_op (struct atifs_machine *machine, struct atifs_setupinst *texinst, const SWspan *span, GLuint column, GLuint idx) |
static void | handle_sample_op (GLcontext *ctx, struct atifs_machine *machine, struct atifs_setupinst *texinst, const SWspan *span, GLuint column, GLuint idx) |
static void | execute_shader (GLcontext *ctx, const struct ati_fragment_shader *shader, struct atifs_machine *machine, const SWspan *span, GLuint column) |
Execute the given fragment shader. | |
static void | init_machine (GLcontext *ctx, struct atifs_machine *machine, const struct ati_fragment_shader *shader, const SWspan *span, GLuint col) |
Init fragment shader virtual machine state. | |
void | _swrast_exec_fragment_shader (GLcontext *ctx, SWspan *span) |
Execute the current ATI shader program, operating on the given span. | |
Variables | |
struct ati_fs_opcode_st | ati_fs_opcodes [] |
Execute the current ATI shader program, operating on the given span.
static void apply_dst_mod | ( | GLuint | optype, | |
GLuint | mod, | |||
GLfloat * | val | |||
) | [static] |
static void apply_src_mod | ( | GLint | optype, | |
GLuint | mod, | |||
GLfloat * | val | |||
) | [static] |
static void apply_src_rep | ( | GLint | optype, | |
GLuint | rep, | |||
GLfloat * | val | |||
) | [static] |
static void apply_swizzle | ( | GLfloat | values[4], | |
GLuint | swizzle | |||
) | [static] |
static void execute_shader | ( | GLcontext * | ctx, | |
const struct ati_fragment_shader * | shader, | |||
struct atifs_machine * | machine, | |||
const SWspan * | span, | |||
GLuint | column | |||
) | [static] |
Execute the given fragment shader.
NOTE: we do everything in single-precision floating point
ctx | - rendering context | |
shader | - the shader to execute | |
machine | - virtual machine state | |
span | - the SWspan we're operating on | |
column | - which pixel [i] we're operating on in the span |
static void fetch_texel | ( | GLcontext * | ctx, | |
const GLfloat | texcoord[4], | |||
GLfloat | lambda, | |||
GLuint | unit, | |||
GLfloat | color[4] | |||
) | [static] |
Fetch a texel.
static void finish_pass | ( | struct atifs_machine * | machine | ) | [static] |
static void handle_pass_op | ( | struct atifs_machine * | machine, | |
struct atifs_setupinst * | texinst, | |||
const SWspan * | span, | |||
GLuint | column, | |||
GLuint | idx | |||
) | [static] |
static void handle_sample_op | ( | GLcontext * | ctx, | |
struct atifs_machine * | machine, | |||
struct atifs_setupinst * | texinst, | |||
const SWspan * | span, | |||
GLuint | column, | |||
GLuint | idx | |||
) | [static] |
static void init_machine | ( | GLcontext * | ctx, | |
struct atifs_machine * | machine, | |||
const struct ati_fragment_shader * | shader, | |||
const SWspan * | span, | |||
GLuint | col | |||
) | [static] |
Init fragment shader virtual machine state.
static void write_dst_addr | ( | GLuint | optype, | |
GLuint | mod, | |||
GLuint | mask, | |||
GLfloat * | src, | |||
GLfloat * | dst | |||
) | [static] |
struct ati_fs_opcode_st ati_fs_opcodes[] |
Initial value:
{ {GL_ADD_ATI, 2}, {GL_SUB_ATI, 2}, {GL_MUL_ATI, 2}, {GL_MAD_ATI, 3}, {GL_LERP_ATI, 3}, {GL_MOV_ATI, 1}, {GL_CND_ATI, 3}, {GL_CND0_ATI, 3}, {GL_DOT2_ADD_ATI, 3}, {GL_DOT3_ATI, 2}, {GL_DOT4_ATI, 2} }