Commit Graph

37 Commits

Author SHA1 Message Date
Brian Paul
51faca1270 Rename CLIP_ALL_BITS to CLIP_FRUSTUM_BITS to reflect the fact that the value
only includes the 6 frustum bits, not the user-clip plane bit, nor the vertex
cull bit.
2006-04-06 22:11:57 +00:00
Michal Krol
071357096e GLSL fixes:
- generate error on NULL pointers in glShaderSourceARB;
- reinstall program object, if current, in glLinkProgramARB;
- vertex and fragment shaders are optional in program object;
- floor asm was wrongly computed for x86 back-end;
- allow for (void) idiom in function prototypes;
- all fixed-state uniforms are updated;
- local variable initializers are working;
- implement texture* and shadow* functions for vertex processor;
- generate error if too many arguments in general constructor;
- trim unused data in general constructor;
- struct r-value field select was badly relocated;

Changes:
- add derived state gl_fog_attrib::_Scale;
- add derived state gl_light::_CosCutoffNeg;
2006-03-21 10:37:40 +00:00
Michal Krol
a2ea606377 Add ARB_vertex_shader stage just before render stage.
If enabled, all other stages, except render, are disabled.
2006-02-13 11:23:36 +00:00
Brian Paul
de99760bf3 Move stuff common to vertex/fragment_program into the base class, including:
Instructions, InputsRead, OutputsWritten, and Parameters.
Also, added debug functions: _mesa_print_instruction(),
_mesa_print_program_parameters() and revamp _mesa_print_program().
2005-11-12 17:53:14 +00:00
Brian Paul
7e807510d8 Unify vertex/fragment program instuctions.
Based on patch by Ian (#4967) but also unify instruction opcodes.
2005-11-05 17:10:45 +00:00
Keith Whitwell
81032030ff Store compiled vertex program representations in a pointer in the
vertex_program struct.

Allow switching between regular and vertex_program implementations
of fixed function TNL with the MESA_TNL_PROG environment var
(previously this required recompilation).

Ensure program compilation only references program data, not the
wider context.  This means that compiled programs only need to be
invalidated when the program string changes, not on other state
changes.
2005-06-09 14:55:34 +00:00
Keith Whitwell
6f973f3367 Simplify the pipeline_stage structure
- remove input/output fields, input tracking removed.
	- remove state fields, the validate function now called
	  on every statechange.
	- add an explicit 'create' function.

Add in code to build vertex program to implement current t&l state.  Still
disabled, but turn on with a #define in t_vp_build.h.
2005-04-22 12:51:19 +00:00
Alan Hourihane
fff3b2f318 use COPY_CLEAN_4V macro to replace using both ASSIGN_4V & COPY_SZ_4V 2005-03-02 18:57:01 +00:00
Keith Whitwell
b97e478fe9 mesa-tnl-0-to-NULL.patch from Jeff Muizelaar 2005-02-10 10:57:22 +00:00
Brian Paul
6d460af6af Added ctx->Vertex/FragmentProgram._Enable flags. Set when vertex/fragment
program is enabled AND the currently bound program is valid.
Check _Enable instead of Enable to prevent things from blowing up
when someone calls glEnable(GL_VERTEX_PROGRAM_ARB) without actually
defining a program.
2004-04-23 14:16:46 +00:00
Brian Paul
05a6f2fd48 Fix up some assorted issues with initialization of vertex program registers.
Some need to be set per-vertex, other per-primitive.  Cleared that up.
Only need to init temp/result registers if executing an NV vertex program.
2004-04-21 18:09:14 +00:00
Keith Whitwell
588225770c Beef up t_vertex.c:
- cope with input vectors with size less than that of the emitted
	  attribute.
	- cope with vertices with 'holes' inside and between vertices.

Fix calculation of tnl->render_inputs to work with fp programs.
Mirror VB->PointSizePtr in VB->AttribPtr so that it can work with t_vertex.c.

Transition swrast_setup/ to use t_vertex.c to build swrast vertices.
2004-01-05 15:24:53 +00:00
Keith Whitwell
790734045b Re-commit t_vertex.[ch] changes to fd.o server. 2004-01-05 09:43:42 +00:00
Keith Whitwell
ae0eaf93e0 Merge vtx-0-2-branch 2003-11-24 15:23:18 +00:00
Brian Paul
148a2847a1 More work on ARB_vertex_buffer_object.
Use GLubyte * instead of void * for gl_client_array->Ptr to simplify upcoming
pointer arithmetic changes.
2003-09-17 03:40:11 +00:00
Brian Paul
f2dd273322 Re-org of register files for vertex/fragment programs. Will be easier to
hook in global state references, etc. for ARB programs.
2003-08-17 17:11:50 +00:00
Brian Paul
071a4ddd92 initialize attribute vectors to 4 components 2003-04-07 23:07:50 +00:00
Brian Paul
0e7f2952fe fix color array mixup 2003-04-07 14:54:01 +00:00
Brian Paul
b0e90cc839 more memory-related fixes 2003-04-03 21:01:33 +00:00
Brian Paul
27558a160a Killed mmath.[ch]. Moved low-level functions/assembly code into imports.[ch]
Moved type conversion and interpolation macros into macros.h
Updated all the files that used to include mmath.h
2003-03-01 01:50:20 +00:00
Brian Paul
610d59981a First batch of code for GL_NV_fragment_program.
Re-org of some GL_NV_vertex_program code.
Replace MAX_TEXTURE_UNITS with MAX_TEXTURE_COORD_UNITS and MAX_TEXTURE_IMAGE_UNITS.
2003-01-14 04:55:45 +00:00
Brian Paul
e0e6bd7ae1 fix the occasional missing triangle bug 2002-10-31 17:14:16 +00:00
Brian Paul
3c63452e64 Header file clean-up:
1. Remove all.h and PC_HEADER junk.
2. Rolled mem.c and mem.h into imports.c and imports.h
3. Include imports.h instead of mem.h
Restore _mesa_create/initialize_context() to be like they were in 4.0.4
New wrappers for a few std C functions: _mesa_atoi(), _mesa_strstr(), etc.
2002-10-24 23:57:19 +00:00
Brian Paul
3efe5beefc fix up resulting FOGC and PSIZ when needed 2002-08-08 16:55:56 +00:00
Brian Paul
d65e0beb68 set stage->inputs properly (I think), plus debug/comment updates 2002-06-23 02:40:48 +00:00
Brian Paul
12bab63f09 Vertex program attribute arrays seem to work now. This includes fallbacks
to the conventional arrays when attribute arrays aren't enabled.
2002-04-21 20:37:04 +00:00
Karl Schultz
4d030ba651 casts to silence compiler warnings 2002-04-04 18:25:40 +00:00
Brian Paul
4c8fadc6d9 Clean-up/renaming of the per-vertex attribute bits, specifically, the
VERT_BIT_* flags are new and used in many places (esp in T&L code).
Updated some comments for doxygen.
Various code clean-ups.
2002-01-22 14:35:16 +00:00
Brian Paul
166718f749 updated some comments 2002-01-12 02:57:14 +00:00
Brian Paul
571a1ac6ee implemented vertex program point size control 2002-01-06 20:39:03 +00:00
Brian Paul
363049160d Another vertex program checkpoint: clean-up of vertex attribute storage
in vertex_buffer.   Improved vertex program pipeline stage such that
output registers can be processed in a loop.  Getting closer to where
we need to be in order to implement performance optimizations...
2002-01-06 03:54:12 +00:00
Brian Paul
bd1a9dacf6 Vertex program checkpoint commit: converted all vertex attributes (color,
normal, texcoords, fogcoord, secondary color, etc) to GLfloat[4] datatype.
Aliasing of glVertex, glNormal, glColor, glFogCoord, etc. to glVertexAttrib
now complete.
2002-01-05 20:51:12 +00:00
Brian Paul
30f51ae067 Replace old matrix stacks with new code based on struct matrix_stack.
Moved vertex program hash table into shared context state.
Implemented reference counting for vertex programs.
Replaced tnl "ProjectedClip" with "Ndc" (normalized device coordinates).
2001-12-18 04:06:44 +00:00
Brian Paul
e3a0f39824 divide by W and clipping now work - in pretty good shape now 2001-12-15 22:31:23 +00:00
Brian Paul
56790ced1a temporary hack for divide by W 2001-12-15 21:31:28 +00:00
Brian Paul
c3d90f3211 disable debug printf's, fix a crash 2001-12-15 02:13:32 +00:00
Brian Paul
86b842790b vertex program check-in 2001-12-14 02:50:01 +00:00