summaryrefslogtreecommitdiff
path: root/src/mesa/shader/shader_api.c
AgeCommit message (Collapse)Author
2008-05-14mesa: fix InfoLog memleak, misc sync with masterBrian Paul
2008-05-14Updated GLSL uniform/sampler handling from gallium-0.1 branchBrian Paul
Previously, the shader linker combined the uniforms used by the vertex and fragment shaders into a combined set of uniforms. This made the implementation of glUniform*() simple, but was rather inefficient otherwise. Now each shader gets its own set of uniforms (no more modelview matrix showing up in the fragment shader uniforms, for example). cherry-picked by hand from gallium-0.1 branch
2008-05-14mesa: glUniform(location==-1) is not an errorBrian Paul
2008-05-14fix some additional program refcounting bugsBrian Paul
cherry-picked from master
2008-05-14fix some additional program refcounting bugsBrian Paul
2008-05-06implement full reference counting for vertex/fragment programsBrian
Use _mesa_reference_vert/fragprog() wherever we assign program pointers. Fixes a memory corruption bug found with glean/api2 test.
2008-05-06gallium: implement full reference counting for vertex/fragment programsBrian
Use _mesa_reference_vert/fragprog() wherever we assign program pointers. Fixes a memory corruption bug found with glean/api2 test. Another memory bug involving shaders yet to be fixed...
2008-04-22small cleanupsAlan Hourihane
2008-04-04mesa: no longer combine vertex/fragment shader parameters/uniformsBrian
GLSL Vertex and fragment shaders now have independent parameter buffers. A new gl_uniform_list is used to keep track of program uniforms and where each uniform is located in each shader's parameter buffer. This makes better use of the space in each buffer and simplifies shader linking.
2008-03-31mesa: Free all shader program data before deleting allXiang, Haihao
shader/shader program objects to avoid memory access error.
2008-03-31Revert "mesa: separate shader program object from shader object." (bug#15244)Xiang, Haihao
This reverts commit 3ffd11f71d021f672b9bc15b3c39c155a0e2fecb.
2008-03-22use ctx->Driver.DeleteProgram() in a few more placesBrian
2008-03-22use ctx->Driver.DeleteProgram() in a few more placesBrian
2008-02-28mesa: separate shader program object from shader object.Xiang, Haihao
Currently a callback delete_shader_cb is used for deleting shader and shader program objects. Mesa detaches all attached shaders in _mesa_free_shader_program_data when deleting shader program objects. However it is likely that these shaders have been freed in _mesa_free_shader, which will result in unexpected behaviour. This fix uses a single callback for shader program objects and deletes shader program objects before shader objects.
2008-01-01Convert to 0/1 when setting boolean uniformsBruce Merry
Also add some extra tests to the shader_api regression tests
2008-01-01Make use of count in _mesa_uniform_matrixBruce Merry
2008-01-01More fixes to shader_apiBruce Merry
- return GL_INVALID_OPERATION instead of GL_INVALID_VALUE if location is bad - correct the type-checking of uniforms from my previous commit - accept location of -1 in _mesa_uniform_matrix
2008-01-01Fix several bugs relating to uniforms and attributes in GLSL APIBruce Merry
- fix sizes for GL_FLOAT_MAT2x3 and GL_FLOAT_MAT4x3 in sizeof_glsl_type - fix size returns in _mesa_get_active_attrib - fix out-of-bounds array access to vec_types in _mesa_get_active_attrib - fix queries of matrix uniforms in _mesa_get_uniformfv - fix _mesa_get_uniformfv to only return one base, even from an array - allow location == -1 in _mesa_uniform - validate types in _mesa_uniform - allow array overruns in _mesa_uniform
2007-12-20return correct size from glGetActiveUniform (bug 13751)Brian
2007-12-07Move _mesa_init_glsl_driver_functions() into shader_api.cBrian
This allows making a bunch of functions static, and removes a state tracker dependency on driverfuncs.c
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-08-07fix potential NULL dereference (bug 11880)Brian
2007-08-07Naive implementation of IF/ELSE/ENDIF.michal
Handle TGSI labels correctly. Enhance MESA opcode info queries.
2007-07-13fix shader/info string length queries (bug 11588)Jan Dvorak
2007-07-04Be more consistant with paths in #includes. Eventually, eliminate a bunch ↵Brian
of -I flags.
2007-05-09Check that texture units/samplers specified with glUniform1i() are legal.Brian
2007-04-21free shProg->Attributes in _mesa_free_shader_program_data()Brian
2007-04-18Start fixing some issues with uniform variables and their types.Brian
2007-04-18Fix some bugs related to querying active uniforms.Brian
2007-04-18fix error strings, add a sanity checkBrian
2007-04-18Remove bad assertions, decrement NumShaders in _mesa_detach_shader().Brian
Fixes crashes w/ Brad King's depth peeling test.
2007-04-18s/GL_SHADER_PROGRAM/GL_SHADER_PROGRAM_MESA/ (a Mesa-specific token)Brian
2007-04-18Replace _mesa_parameter_longest_name() with _mesa_longest_parameter_name().Brian
The later takes a type parameter so we can match uniforms or attributes/inputs. Used by the GL_ACTIVE_ATTRIBUTE_MAX_LENGTH and GL_ACTIVE_UNIFORM_MAX_LENGTH queries. Fixes problem reported by Brad King in VTK.
2007-04-12disable debug printfsBrian
2007-04-12New _mesa_reference_shader/program() function to consolidate refcounting.Brian
Note that (unlike texture objects), shader handles remain valid (in the hash table) after glDeleteShader/Program() if the refcount isn't zero.
2007-04-11fix invalid error detection problem in _mesa_bind_attrib_location(), bug 10602Brian
2007-03-26fix mem leak, add commentsBrian
2007-03-24Free shader-related context state: _mesa_free_shader_state()Brian
2007-03-23Add the ability to generate programs that doesn't use condition codes.Brian
ctx->Shader.EmitCondCodes determines if we use condition codes. If not, IF statement uses first operand's X component as the condition. Added OPCODE_BRK0, OPCODE_BRK1, OPCODE_CONT0, OPCODE_CONT1 to handle the common cases of conditional break/continue.
2007-03-13more bug fixing, error checkingBrian
2007-03-13fix a number of issues in _mesa_uniform()Brian
2007-03-09fix _mesa_uniform_matrix() transpose bugBrian
2007-03-07check for null program ptrs in _mesa_uniform()Brian
2007-02-26Add EmitHighLevelInstructions, EmitComments booleans to gl_shader_state.Brian
These control code generation options. May be overridden by drivers, debuggers, etc.
2007-02-24Remove unneeded _Fragment/VertexShaderPresent fields, update comments.Brian
2007-02-16s/_slang_link2/_slang_link/Brian
2007-02-03added FLUSH_VERTICES() in _mesa_use_program()Brian
2007-02-02Only glUniform1i() can be used to set sampler uniforms. Generate error ↵Brian
otherwise.
2007-01-30fix _mesa_get_uniform_location() so it uses the given program handleBrian
2007-01-23fix g++ warnings/errorsBrian