Brian
c9db223f90
move TexturesUsed[] into gl_program since vertex programs/shaders can use textures nowadays
2007-01-04 17:22:19 -07:00
Brian
2e76f0a846
check for null Parameters ptr in _mesa_clone_program()
2006-12-19 09:52:07 -07:00
Brian
0560d81ce9
Move many functions into new files.
2006-12-14 15:01:28 -07:00
Brian
b2a3a8554a
New functions for cloning programs and parameter lists.
2006-12-14 13:56:58 -07:00
Brian
fe1d01cb39
Checkpoint of work for new GLSL compiler back-end. Lots of assorted changes.
2006-12-13 14:54:47 -07:00
Brian Paul
308b85f29f
fix several program-related bugs (bug 9136)
2006-11-23 15:58:30 +00:00
Brian Paul
a4806c994e
add STATE_INTERNAL_DRIVER, etc (Rune Petersen)
2006-11-17 15:23:32 +00:00
Brian Paul
fa941e4267
disable yesterday's _mesa_add_named_constant() change for now
2006-11-16 20:59:11 +00:00
Brian Paul
0c6723aee5
Add a size parameter to _mesa_add_unnamed_constant() and
...
_mesa_add_named_constant() to indicate vector size (1, 2, 3 or 4).
Always 4 for now...
2006-11-15 23:38:02 +00:00
Brian Paul
699a33ea77
Add new _mesa_lookup_parameter_constant() to search for a GLfloat4 constant
...
in a parameter list.
Use it in _mesa_add_named_constant() and _mesa_add_unnamed_constant() to
avoid duplication of identical constants.
2006-11-15 23:19:52 +00:00
Brian Paul
f49c0d0dfb
Rename _mesa_IsProgram() to _mesa_IsProgramARB() to avoid collision with the
...
OpenGL 2.0 function of the same name.
2006-11-02 16:20:29 +00:00
Brian Paul
ef987aa1d7
minor clean-ups, simplifications and new comments
2006-10-31 19:53:03 +00:00
Brian Paul
a23e668d40
Move gl_vertex_program_machine struct out of mtypes.h and put into nvvertexec.h.
...
Massage nvvertexec.c code to work more like s_nvfragprog.c - another step
toward unifying vertex/fragment program execution.
2006-10-30 00:12:05 +00:00
Brian Paul
d6272e0617
Change _mesa_init_instruction() to initialize an array of instructions.
2006-10-29 18:03:16 +00:00
Brian Paul
8ed319796f
special case END in _mesa_print_instruction()
2006-10-28 23:08:07 +00:00
Brian Paul
81968ec49d
a step toward moving run-time vertex program state out of GLcontext
2006-10-10 22:45:50 +00:00
Brian Paul
39c4daa6bc
Move the fp_machine struct into s_nvfragmprog.c since (except for program
...
debug) it's only used there.
2006-10-10 21:43:31 +00:00
Keith Whitwell
187f2cfb4a
Add a new internal program parameter value STATE_TEXRECT_SCALE which
...
provides 1/width and 1/height of the active texture, useful for
implementing ARB_texture_rectangle support on hardware which only
supports ARB_npot-style texturing.
2006-09-20 14:30:22 +00:00
Keith Whitwell
5658810660
Export _mesa_print_alu_instruction() to allow drivers to roll their
...
own debug code for programs with driver-private opcodes.
Remove redundant loop in _mesa_num_inst_src_regs().
2006-09-20 12:57:54 +00:00
Brian Paul
58d080b025
Free vertex program TnlData, if any. Fixes a mem leak.
2006-08-25 19:46:31 +00:00
Brian Paul
a360bc31da
Rearrange glBindProgram() code to do all error checking before changing
...
the binding. Prevent a potential dangling pointer error. SF Bug 1544507.
2006-08-25 17:18:56 +00:00
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