X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fshader%2Fprogram.h;h=87590ceea9a05486e763d8df3d5bb3265f6b6c5e;hb=219f3c4489168efbb9ad008575d86023cf0463ef;hp=fb99a79cf6b971ace40d1a1c9162e9f66e755717;hpb=253204f9f0a1942a65e45d876f8d5f16d1a196a1;p=mesa.git diff --git a/src/mesa/shader/program.h b/src/mesa/shader/program.h index fb99a79cf6b..87590ceea9a 100644 --- a/src/mesa/shader/program.h +++ b/src/mesa/shader/program.h @@ -1,8 +1,8 @@ /* * Mesa 3-D graphics library - * Version: 6.2 + * Version: 6.3 * - * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2005 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -51,6 +51,32 @@ #define SWIZZLE_ZERO 4 /* keep these values together: KW */ #define SWIZZLE_ONE 5 /* keep these values together: KW */ +#define MAKE_SWIZZLE4(a,b,c,d) (((a)<<0) | ((b)<<3) | ((c)<<6) | ((d)<<9)) +#define MAKE_SWIZZLE(x) MAKE_SWIZZLE4((x)[0], (x)[1], (x)[2], (x)[3]) +#define SWIZZLE_NOOP MAKE_SWIZZLE4(0,1,2,3) +#define GET_SWZ(swz, idx) (((swz) >> ((idx)*3)) & 0x7) +#define GET_BIT(msk, idx) (((msk) >> (idx)) & 0x1) + + +#define WRITEMASK_X 0x1 +#define WRITEMASK_Y 0x2 +#define WRITEMASK_XY 0x3 +#define WRITEMASK_Z 0x4 +#define WRITEMASK_XZ 0x5 +#define WRITEMASK_YZ 0x6 +#define WRITEMASK_XYZ 0x7 +#define WRITEMASK_W 0x8 +#define WRITEMASK_XW 0x9 +#define WRITEMASK_YW 0xa +#define WRITEMASK_XYW 0xb +#define WRITEMASK_ZW 0xc +#define WRITEMASK_XZW 0xd +#define WRITEMASK_YZW 0xe +#define WRITEMASK_XYZW 0xf + + +extern struct program _mesa_DummyProgram; + /* * Internal functions @@ -71,16 +97,19 @@ _mesa_find_line_column(const GLubyte *string, const GLubyte *pos, extern struct program * -_mesa_init_vertex_program( GLcontext *ctx, - struct vertex_program *prog, - GLenum target, - GLuint id ); +_mesa_init_vertex_program(GLcontext *ctx, + struct vertex_program *prog, + GLenum target, GLuint id); extern struct program * -_mesa_init_fragment_program( GLcontext *ctx, - struct fragment_program *prog, - GLenum target, - GLuint id ); +_mesa_init_fragment_program(GLcontext *ctx, + struct fragment_program *prog, + GLenum target, GLuint id); + +extern struct program * +_mesa_init_ati_fragment_shader(GLcontext *ctx, + struct ati_fragment_shader *prog, + GLenum target, GLuint id ); extern struct program * _mesa_new_program(GLcontext *ctx, GLenum target, GLuint id); @@ -152,7 +181,11 @@ enum state_index { STATE_FRAGMENT_PROGRAM, STATE_ENV, - STATE_LOCAL + STATE_LOCAL, + + STATE_INTERNAL, /* Mesa additions */ + STATE_NORMAL_SCALE, + STATE_POSITION_NORMALIZED }; @@ -177,14 +210,15 @@ struct program_parameter const char *Name; /* Null-terminated */ enum parameter_type Type; enum state_index StateIndexes[6]; /* Global state reference */ - GLfloat Values[4]; }; struct program_parameter_list { + GLuint Size; GLuint NumParameters; struct program_parameter *Parameters; + GLfloat (*ParameterValues)[4]; };