Brian
9ffd88911f
Added _mesa_combine_programs() for concatenating two programs.
2007-10-30 11:32:52 -06:00
Brian
40133487db
disable ctx->Driver.NewProgram() call in _mesa_new_program()
...
This was causing infinite recursive calls w/ software drivers.
All vertex/fragment shaders should be allocated by calling
ctx->Driver.NewProgram(), not by calling _mesa_new_program().
2007-10-29 10:01:15 -06:00
Brian
8fed2466e4
Re-implement GLSL texture sampler variables.
...
GLSL sampler variables indicate which texture unit to use for TEX instructions.
Previously, this was baked into the fragment/vertex program and couldn't be
readily changed once set.
Now, SamplerUnits[] array indicates which texture unit is to be used for
each sampler variable. These values are set with glUniform1i().
This is extra state that must be passed to the fragment/vertex program
executor at runtime.
2007-10-26 19:19:51 -06:00
Zou Nan hai
6ef27b88e6
Merge branch '965-glsl'
...
Conflicts:
src/mesa/drivers/dri/i965/brw_sf.h
src/mesa/drivers/dri/i965/intel_context.c
2007-10-26 15:39:50 +08:00
Brian
4b654d41da
For _mesa_share_state(), update the context's references to the new share group's objects (Shane Blackett)
2007-08-23 08:53:43 +01:00
Brian
4477a01372
call ctx->Driver.NewProgram() instead of _mesa_new_program()
2007-07-24 09:57:26 -06:00
Brian
5b6858c023
call ctx->Driver.NewProgram() instead of _mesa_new_program()
2007-07-24 09:56:44 -06:00
Zou Nan hai
719cf0b795
Use ProgramStringNotify
2007-07-17 11:19:52 +08:00
Brian
4cc2674aee
fix instruction comment code
2007-04-21 10:05:05 -06:00
Brian
3493e867e9
free prog->Attributes in _mesa_delete_program()
2007-03-24 16:18:13 -06:00
Brian
12229f119d
use _mesa_copy_instructions()
2007-03-22 09:11:26 -06:00
Brian
942ee02590
move GL_MESA_program_debug funcs to prog_debug.c
2007-02-09 15:40:00 -07:00
Brian
3209c3ed0d
Implement vertex attribute binding.
...
Users can set explicit binding with glBindAttribLocation(), otherwise the
linker will allocate generic attribute slots.
2007-01-09 17:49:24 -07:00
Brian
21f99792a9
Moved NumTexInstructions, NumTexIndirections, etc. into gl_program since
...
they can now apply to vertex programs.
2007-01-09 11:00:21 -07:00
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