Commit Graph

53 Commits

Author SHA1 Message Date
Brian Paul
9983a27cbe added _mesa_alloc_instructions() utility function 2006-08-25 15:13:25 +00:00
Brian Paul
77427a1e52 Cg tries to bind NV fragment programs to the GL_FRAGMENT_PROGRAM_ARB target
with glBindProgramARB().  I guess the GL_ARB_fragment_program specification
allows that, but Mesa didn't.
Relaxed the check with a new predicate function: compatible_program_targets().
2006-08-24 23:11:39 +00:00
Brian Paul
3b9b8de9b0 Added _mesa_realloc_instructions() utility function.
Fixed/updated comments for parameter list functions.
2006-08-24 21:57:36 +00:00
Brian Paul
4d12a05e6c Added _mesa_lookup_program() and _mesa_lookup_bufferobj() functions to avoid
a lot of casting elsewhere.
Use _mesa_lookup_texture() in tdfx driver, use _mesa_lookup_bufferobj() in r300
driver.
2006-08-23 23:10:14 +00:00
Brian Paul
122629f279 Some structure renaming. Prefix vertex/fragment-related structs with
"gl_" to match other structs.
2006-07-20 16:49:57 +00:00
Brian Paul
65a51c0d62 Roll _mesa_free_parameters() into calling function (the only caller).
Replace assert(0) with _mesa_warning().
Use new _mesa_align_realloc() function.
New comments, clean-ups.
2006-05-24 03:30:31 +00:00
Brian Paul
5a67af97fa fix a small memory leak in _mesa_add_state_reference() 2006-05-24 03:25:22 +00:00
Roland Scheidegger
e1e03b32ab Use standard ARB names instead of vendor-specific NV names for the ARB/NV_vertex_program enums in common state handling code, and update comments accordingly. Change some slightly confusing code which gave the impression GL_VERTEX_PROGRAM_ARB and GL_VERTEX_PROGRAM_NV enums were different. 2006-03-03 15:03:04 +00:00
Roland Scheidegger
93da673904 Fix glGet with enums which are used not only in NV_vertex_program, but other extensions too (ARB_vertex_program, ARB_fragment_program, NV_fragment_program), if no support for NV_vertex_program is present. While here, fix return value if enum is used which is not supported by the exposed extensions (GL_INVALID_ENUM instead of GL_INVALID_VALUE). Fix some compile-time #ifs depending on NV_vertex/fragment_program which should also be dependant on ARB_vertex/fragment_program. See bug #6070 2006-03-01 23:11:14 +00:00
Brian Paul
9580179dfb C++ fixes, mostly casts (Stephane Conversy) 2005-12-06 15:41:43 +00:00
Keith Whitwell
ec1ffd9f25 track state flags which might invalidate parameter lists 2005-11-22 12:12:17 +00:00
Brian Paul
ec770b8c60 move _mesa_init_instruction() to program.c 2005-11-20 17:57:22 +00:00
Brian Paul
e31ac05223 Make Saturate a 2-bit field again, renamed to SaturateMode with three
possible values: SATURATE_OFF, SATURATE_ZERO_ONE and SATURATE_PLUS_MINUS_ONE.
2005-11-20 17:52:40 +00:00
Brian Paul
63d683091f No longer derive 'ati_fragment_shader' from 'program' class. Only the
program->Id and program->RefCount fields were used and ATI fragment shaders
didn't have too much in common with ARB/NV vertex/fragment programs anyway.
2005-11-19 16:43:04 +00:00
Brian Paul
7b98b40e47 Improve _mesa_print_program().
Added make_state_string() to produce a string from a GL state vector.
2005-11-12 23:25:49 +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
Ian Romanick
4884db6eb2 This patch adds the missing NV_vertex_program2 and NV_vertex_program3
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-08 22:40:26 +00:00
Brian Paul
02df9e1ed4 minor work in _mesa_print_program() 2005-11-08 14:42:52 +00:00
Brian Paul
30d6a4bffa consolidate vertex/fragment program printing into _mesa_print_program() 2005-11-05 20:18:18 +00:00
Brian Paul
bf41bc03c2 added _mesa_program_file_string() 2005-11-05 19:32:36 +00:00
Brian Paul
1fcdaf1c3b added _mesa_num_inst_src_regs() and _mesa_opcode_string() 2005-11-05 19:12:36 +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
Brian Paul
613e1ad5d5 Replace parameter_type enum in program.[ch], use register_file enums instead. 2005-11-05 02:15:21 +00:00
Brian Paul
1624162b0c added a const, clean-up 2005-11-03 02:26:47 +00:00
Brian Paul
90ebb581e6 Rename FRAG_OUTPUT_* tokens to FRAG_RESULT_* to match vertex program convention 2005-11-02 18:06:12 +00:00
Brian Paul
0505103710 Re-org and clean-up of vertx/fragment program limits (instructions,
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-11-01 04:36:33 +00:00
Brian Paul
aa2069586d use mesa import wrappers, bug 4468 2005-09-16 18:14:24 +00:00
Roland Scheidegger
f519a770d0 add error checking to the GL_ATI_FRAGMENT_SHADER entrypoints. Fix bug with 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-09-02 01:11:53 +00:00
Keith Whitwell
9899f58c76 Use ALIGN_MALLOC for parameter lists. 2005-06-08 21:57:45 +00:00
Keith Whitwell
a42fe19d8d Fix some valgrind complaints 2005-05-10 18:22:19 +00:00
Keith Whitwell
c5f5055097 Fix some valgrind complaints 2005-05-10 18:08:25 +00:00
Keith Whitwell
f29f2fc294 reduce the use of malloc and strdup for parameter lists 2005-05-10 13:56:23 +00:00
Keith Whitwell
7c26b61f93 Reduce the size of mesa's internal fragment and vertex program
representations by switching to packed structures for registers and
instructions.
2005-04-21 14:46:57 +00:00
Brian Paul
52bf005425 fix state.light[n].spot.direction.w value (bug 3083) 2005-04-20 23:47:03 +00:00
Jouk Jansen
49b1d95c1c Updates for OpenVMS : New makefiles
added some type-casts

 Modified Files:
 	Mesa/src/mesa/shader/descrip.mms
 	Mesa/src/mesa/shader/program.c
 	Mesa/src/mesa/shader/slang/slang_compile.c
 	Mesa/src/mesa/shader/slang/slang_preprocess.c
 Added Files:
 	Mesa/src/mesa/shader/slang/descrip.mms
 ----------------------------------------------------------------------
2005-04-18 13:05:24 +00:00
Keith Whitwell
78803b2667 Fix alpha value of STATE_LIGHTMODEL_SCENECOLOR. From the spec:
The "w" component of the program parameter variable is filled with
 the alpha component of the front diffuse material color.

Make sure matrix inverses are uptodate also.
2005-04-15 12:57:23 +00:00
Daniel Borca
0a13cebaa1 ProgramCallbackMesa must match the prototype 2005-02-14 08:01:59 +00:00
Brian Paul
ea2943efd9 Update glDeletePrograms/Buffers() so that the ID is freed immediately, like
texture objects.
2005-01-20 04:02:02 +00:00
Brian Paul
cdb6541634 prototype _mesa_init_ati_fragment_shader() 2005-01-11 15:56:47 +00:00
Dave Airlie
7f752fed99 Implement software ATI_fragment_shader
no error detection, slow, may not be 100% correct but a good start
2004-12-19 03:06:59 +00:00
Brian Paul
2a5afe3ab8 Added PRINT instruction for GL_NV_fragment_program. 2004-12-18 16:18:00 +00:00
Brian Paul
575700fbdc Experimental PRINT instruction for NV_vertex_program.
Basically, this lets you put a "PRINT 'mesage', register;" statement in a
vertex program to aid in debugging.
2004-12-16 03:07:18 +00:00
Alan Hourihane
22ae633d1e Fix some warnings 2004-12-02 13:29:40 +00:00
Brian Paul
9ca8392484 fix LoadProgramNV regression when I had fixed the RefCount bug 2004-10-02 15:16:59 +00:00
Brian Paul
765f1a12c6 also fix possible delete bugs with buffer objects and vertex/fragment programs 2004-09-14 22:28:27 +00:00
Brian Paul
a6c423d956 Silence gcc 3.4 warnings on ReactOS. Mostly unused var warnings. (patch 1015696) 2004-08-25 15:59:48 +00:00
Brian Paul
21841f0ae5 fix some memory leaks (bug #1002030) 2004-08-14 14:28:11 +00:00
Brian Paul
824fdf035e remove trailing whitespace and misc clean-ups 2004-06-29 00:00:06 +00:00
Brian Paul
c9a415663a remove program from hash table when deleted (bug 979514) 2004-06-25 14:46:48 +00:00
Brian Paul
26359143b6 remove redundant program field initializers in BindProgram(); ctx->Driver.NewProgram() does the inits 2004-06-20 20:55:36 +00:00