summaryrefslogtreecommitdiff
path: root/src/mesa/shader/program.c
AgeCommit message (Collapse)Author
2007-10-31alloc caches for fixed-func vertex/fragment progsBrian
2007-10-30fix InputsRead bug in _mesa_combine_programs()Brian
2007-10-30make _mesa_combine_programs() params constBrian
2007-10-30Added _mesa_combine_programs() for concatenating two programs.Brian
2007-10-26Re-implement GLSL texture sampler variables.Brian
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-07-24call ctx->Driver.NewProgram() instead of _mesa_new_program()Brian
2007-04-21fix instruction comment codeBrian
2007-03-24free prog->Attributes in _mesa_delete_program()Brian
2007-03-22use _mesa_copy_instructions()Brian
2007-02-09move GL_MESA_program_debug funcs to prog_debug.cBrian
2007-01-09Implement vertex attribute binding.Brian
Users can set explicit binding with glBindAttribLocation(), otherwise the linker will allocate generic attribute slots.
2007-01-09Moved NumTexInstructions, NumTexIndirections, etc. into gl_program sinceBrian
they can now apply to vertex programs.
2007-01-04move TexturesUsed[] into gl_program since vertex programs/shaders can use ↵Brian
textures nowadays
2006-12-19check for null Parameters ptr in _mesa_clone_program()Brian
2006-12-14Move many functions into new files.Brian
2006-12-14New functions for cloning programs and parameter lists.Brian
2006-12-13Checkpoint of work for new GLSL compiler back-end. Lots of assorted changes.Brian
2006-11-23fix several program-related bugs (bug 9136)Brian Paul
2006-11-17add STATE_INTERNAL_DRIVER, etc (Rune Petersen)Brian Paul
2006-11-16disable yesterday's _mesa_add_named_constant() change for nowBrian Paul
2006-11-15Add a size parameter to _mesa_add_unnamed_constant() andBrian Paul
_mesa_add_named_constant() to indicate vector size (1, 2, 3 or 4). Always 4 for now...
2006-11-15Add new _mesa_lookup_parameter_constant() to search for a GLfloat4 constantBrian Paul
in a parameter list. Use it in _mesa_add_named_constant() and _mesa_add_unnamed_constant() to avoid duplication of identical constants.
2006-11-02Rename _mesa_IsProgram() to _mesa_IsProgramARB() to avoid collision with theBrian Paul
OpenGL 2.0 function of the same name.
2006-10-31minor clean-ups, simplifications and new commentsBrian Paul
2006-10-30Move gl_vertex_program_machine struct out of mtypes.h and put into nvvertexec.h.Brian Paul
Massage nvvertexec.c code to work more like s_nvfragprog.c - another step toward unifying vertex/fragment program execution.
2006-10-29Change _mesa_init_instruction() to initialize an array of instructions.Brian Paul
2006-10-28special case END in _mesa_print_instruction()Brian Paul
2006-10-10a step toward moving run-time vertex program state out of GLcontextBrian Paul
2006-10-10Move the fp_machine struct into s_nvfragmprog.c since (except for programBrian Paul
debug) it's only used there.
2006-09-20Add a new internal program parameter value STATE_TEXRECT_SCALE whichKeith Whitwell
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-20Export _mesa_print_alu_instruction() to allow drivers to roll theirKeith Whitwell
own debug code for programs with driver-private opcodes. Remove redundant loop in _mesa_num_inst_src_regs().
2006-08-25Free vertex program TnlData, if any. Fixes a mem leak.Brian Paul
2006-08-25Rearrange glBindProgram() code to do all error checking before changingBrian Paul
the binding. Prevent a potential dangling pointer error. SF Bug 1544507.
2006-08-25added _mesa_alloc_instructions() utility functionBrian Paul
2006-08-24Cg tries to bind NV fragment programs to the GL_FRAGMENT_PROGRAM_ARB targetBrian Paul
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-24Added _mesa_realloc_instructions() utility function.Brian Paul
Fixed/updated comments for parameter list functions.
2006-08-23Added _mesa_lookup_program() and _mesa_lookup_bufferobj() functions to avoidBrian Paul
a lot of casting elsewhere. Use _mesa_lookup_texture() in tdfx driver, use _mesa_lookup_bufferobj() in r300 driver.
2006-07-20Some structure renaming. Prefix vertex/fragment-related structs withBrian Paul
"gl_" to match other structs.
2006-05-24Roll _mesa_free_parameters() into calling function (the only caller).Brian Paul
Replace assert(0) with _mesa_warning(). Use new _mesa_align_realloc() function. New comments, clean-ups.
2006-05-24fix a small memory leak in _mesa_add_state_reference()Brian Paul
2006-03-03Use standard ARB names instead of vendor-specific NV names for the ↵Roland Scheidegger
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-01Fix glGet with enums which are used not only in NV_vertex_program, but other ↵Roland Scheidegger
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
2005-12-06C++ fixes, mostly casts (Stephane Conversy)Brian Paul
2005-11-22track state flags which might invalidate parameter listsKeith Whitwell
2005-11-20move _mesa_init_instruction() to program.cBrian Paul
2005-11-20Make Saturate a 2-bit field again, renamed to SaturateMode with threeBrian Paul
possible values: SATURATE_OFF, SATURATE_ZERO_ONE and SATURATE_PLUS_MINUS_ONE.
2005-11-19No longer derive 'ati_fragment_shader' from 'program' class. Only theBrian Paul
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-12Improve _mesa_print_program().Brian Paul
Added make_state_string() to produce a string from a GL state vector.
2005-11-12Move stuff common to vertex/fragment_program into the base class, including:Brian Paul
Instructions, InputsRead, OutputsWritten, and Parameters. Also, added debug functions: _mesa_print_instruction(), _mesa_print_program_parameters() and revamp _mesa_print_program().
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).