summaryrefslogtreecommitdiff
path: root/src/mesa/shader
AgeCommit message (Collapse)Author
2005-11-08This patch adds the missing NV_vertex_program2 and NV_vertex_program3Ian Romanick
instructions to the various internal tables. It does not add support for them to the parser nor does it add support for them to the program interpreter. It also corrects some errors in the comments in program_instruction.h. This patch breaks the instruction union in t_vb_arbprogram.h. The opcode field in that union was only 6 bits. When there were only 59+3 instructions that worked fine. However, this patch increases the base instruction count to 69. This requires 7 bits. The problem is that increasing the opcode width to 7 bits increases the size of instruction::rsw to 33 bits. I've increased the size of the union to 64-bit, but this is just a temporary hack (and probably breaks the build on some systems).
2005-11-08remove _mesa_debug_fp_inst()Brian Paul
2005-11-08minor work in _mesa_print_program()Brian Paul
2005-11-08remove unneeded #includesBrian Paul
2005-11-07remove unneeded #includesBrian Paul
2005-11-05consolidate vertex/fragment program printing into _mesa_print_program()Brian Paul
2005-11-05use _mesa_program_file_string() and _mesa_opcode_string()Brian Paul
2005-11-05added _mesa_program_file_string()Brian Paul
2005-11-05Use _mesa_opcode_string()Brian Paul
2005-11-05added _mesa_num_inst_src_regs() and _mesa_opcode_string()Brian Paul
2005-11-05Unify vertex/fragment program instuctions.Brian Paul
Based on patch by Ian (#4967) but also unify instruction opcodes.
2005-11-05don't need MAKE_SWIZZLE() macroBrian Paul
2005-11-05Replace parameter_type enum in program.[ch], use register_file enums instead.Brian Paul
2005-11-04use VERT_RESULT_HPOS, VERT_BIT_POS tokensBrian Paul
2005-11-03Streamline code generation by using a fixed size instruction buffer inBrian Paul
arb_program struct.
2005-11-03use WRITEMASK_* tokensBrian Paul
2005-11-03added a const, clean-upBrian Paul
2005-11-03fix typo, minor clean-upsBrian Paul
2005-11-02Rename FRAG_OUTPUT_* tokens to FRAG_RESULT_* to match vertex program conventionBrian Paul
2005-11-01Several fp and vp tweaks:Keith Whitwell
- Renumber VERT_RESULT_* values so that they match the numbers of the corresponding FRAG_ATTRIB_ values. - Add ctx->VertexProgram._Current and FragmentProgram._Current values which point to either the current client-supplied program if enabled, or otherwise to the current mesa-internal program. Thus this program is always the correct one for the current state, providing that the mesa flags to turn on automatic generation are enabled. - Add callbacks to ctx->Driver.BindProgram() in texenvprogram.c and t_vp_build.c so that the driver knows when the generated program changes. This is cleaner than trying to code all the possible _NEW_* flags into the driver, and more precise as well. - Add a UsesKill flag to identify fragment programs with that instruction, as these can require special treatment. - Move the FRAG_OUTPUT values to mtypes.h, near to similar defn's.
2005-11-01Re-org and clean-up of vertx/fragment program limits (instructions,Brian Paul
temporaries, parameters, etc). glGetProgramivARB() now returns all the right things. Updated i915 and r300 code to initialize program native limits and current program's native instruction/temporary/etc counts.
2005-10-30Simplify parse_attrib_binding().Brian Paul
Now only use VERT_ATTRIB_* and FRAG_ATTRIB_* tokens instead of hard-coded numbers. Note: previous check-in did similarly for output register parsing.
2005-10-30Lots of clean-up in arb program parser.Brian Paul
Use new _mesa_init_fp/vp_instruction() function to initialize instructions.
2005-10-29Use MAKE_SWIZZLE4() macro in a few more places.Brian Paul
Clean up the parse_extended_swizzle_mask() and parse_swizzle_mask() functions.
2005-10-29Free old parameter list before assigning new one. FIxes memory leak.Brian Paul
2005-10-29s/lenght/length/Brian Paul
2005-10-29fix a few bugs in SWZ executionBrian Paul
2005-10-29If parsing a program fails, don't change the vertex/fragment program object.Brian Paul
Specifically, don't attach a dummy program. This change also fixes an occasional segfault. Some code clean-ups. Use GLboolean instead of GLuint to return pass/fail.
2005-10-28add newline at end of fileBrian Paul
2005-10-21fix broken SWZ instructionBrian Paul
2005-09-23 Committing in .Jouk Jansen
1) change compilation on VMS to use IEEE floating points 2) one more problem with _mesa_sprintf solved Modified Files: Mesa/docs/README.VMS Mesa/progs/demos/descrip.mms Mesa/progs/tests/descrip.mms Mesa/progs/util/descrip.mms Mesa/progs/xdemos/descrip.mms Mesa/src/glu/mesa/descrip.mms Mesa/src/glu/sgi/descrip.mms Mesa/src/glut/glx/descrip.mms Mesa/src/mesa/array_cache/descrip.mms Mesa/src/mesa/drivers/common/descrip.mms Mesa/src/mesa/drivers/osmesa/descrip.mms Mesa/src/mesa/drivers/x11/descrip.mms Mesa/src/mesa/glapi/descrip.mms Mesa/src/mesa/main/descrip.mms Mesa/src/mesa/main/texobj.c Mesa/src/mesa/math/descrip.mms Mesa/src/mesa/shader/descrip.mms Mesa/src/mesa/shader/grammar/descrip.mms Mesa/src/mesa/shader/slang/descrip.mms Mesa/src/mesa/swrast/descrip.mms Mesa/src/mesa/swrast_setup/descrip.mms Mesa/src/mesa/tnl/descrip.mms ----------------------------------------------------------------------
2005-09-19additional wrapper updates, bug 4468Brian Paul
2005-09-16remove unused ctx varBrian Paul
2005-09-16use mesa import wrappers, bug 4468Brian Paul
2005-09-12remove unnecessary Swizzle parameter from struct (forgotten when the code ↵Roland Scheidegger
was refactored)
2005-09-08be consistent in populating NegateBase fieldKeith Whitwell
2005-09-08fix incorrect swizzling handling. fix code so it can potentially handle ↵Roland Scheidegger
implementations with less than 6 texture units correctly.
2005-09-08add a bunch of FLUSH_VERTICES to some of the ATI_fs functions, most notably ↵Roland Scheidegger
when changing the global ati fragment shader constants.
2005-09-05fix var declaration so that a C compiler can build it.Karl Schultz
2005-09-02replace -1 with PROGRAM_UNDEFINED when initializing instructionsBrian Paul
2005-09-02add error checking to the GL_ATI_FRAGMENT_SHADER entrypoints. Fix bug with ↵Roland Scheidegger
scope of ati fragment shader constants. Fix issues with specifying color/alpha instructions not pair-wise. Change internal representation of the shader (to better fit how the extension works, should make driver implementations simpler, and saves some memory). (still doesn't work correctly with doom3 and swrast, but not worse than before)
2005-08-10fix static assertion problem for gcc (bug 4022)Brian Paul
2005-08-10disable the pointer size assertions (bug 4021)Brian Paul
2005-08-10fix indentationBrian Paul
2005-07-28Fix SPARC assembly for 64-bitIan Romanick
- The test for whether or not we're building for 64-bit is '#ifdef __arch64__'. This appears to be correct on both Linux and Solaris. - The test for Solaris is now '#if defined(SVR4) || defined(__SVR4) || defined(__svr4__)'. GCC 3.4.0 has all three defined on Solaris 9. - Enables assembly language clip routines. - Fixes to make GLSL code build on Solaris. - Update gl_SPARC_asm.py.
2005-07-22Make the vertex program source register Index field a signed int sinceBrian Paul
relative addressing can be negative. Change some GLuint indexes to GLint in the t_vp_build.c file. Added PROGRAM_UNDEFINED token for initializing the register File field to avoid a gcc 4.0 warning.
2005-07-18Wrap every place that accesses a dispatch table with a macro. A new script-Ian Romanick
generated file, called src/mesa/glapi/dispatch.h, is added. This file contains three macros for each API function. It contains a GET, a SET, and a CALL. Each of the macros take a pointer to the context and a pointer to the dispatch table. In several threads on mesa3d-dev we discussed replacing _glapi_add_entrypoint with a new function called _glapi_add_dispatch. For this discussion, the important difference between the two is that the caller of _glapi_add_dispatch does *not* know what the dispatch offset will be at compile time. Because of this callers need to track the dispatch offset returned by _glapi_add_dispatch. http://marc.theaimsgroup.com/?t=111947074700001&r=1&w=2 The downside is that driver code then has to access the dispatch table two different ways. It accesses it using structure tags (e.g., exec->Begin) for functions with fixed offsets and via a remap table (e.g., exec[ remap->NewExtensionFunction ]) for functions without fixed offsets. Yuck! Using the macros allows both types of functions to be accessed identically. If a driver needs to set a pointer for Begin, it does 'SET_Begin(ctx, exec, my_begin_function)'. If it needs to set a pointer for NewExtensionFunction, it does 'SET_NewExtensionFunction(ctx, exec, my_NewExtensionFunction_function)'. Furthermore, if at some point in the future a static offset is assigned for NewExtensionFunction, only the macros need to change (instead of every single place that accesses a table for that function). This code differs slightly from the originally posted patches in that the CALL, GET, and SET marcos no longer take a context pointer as a parameter. Brian Paul had suggested that the remap table could be stored as a global since it would be set at CreateScreen time and would be constant for all contexts. This change reflects that feedback. http://marc.theaimsgroup.com/?t=112087194700001&r=1&w=2
2005-07-01Set fp->Opcode for OP_TEX_KILL case, fix from Ben Skeggs.Keith Whitwell
2005-07-01comment-out some unused code to silence warningsBrian Paul
2005-07-01fix typo in assertionsBrian Paul