summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/state.c
Commit message (Collapse)AuthorAgeFilesLines
* Wrap every place that accesses a dispatch table with a macro. A new script-Ian Romanick2005-07-181-495/+496
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | generated file, called src/mesa/glapi/dispatch.h, is added. This file contains three macros for each API function. It contains a GET, a SET, and a CALL. Each of the macros take a pointer to the context and a pointer to the dispatch table. In several threads on mesa3d-dev we discussed replacing _glapi_add_entrypoint with a new function called _glapi_add_dispatch. For this discussion, the important difference between the two is that the caller of _glapi_add_dispatch does *not* know what the dispatch offset will be at compile time. Because of this callers need to track the dispatch offset returned by _glapi_add_dispatch. http://marc.theaimsgroup.com/?t=111947074700001&r=1&w=2 The downside is that driver code then has to access the dispatch table two different ways. It accesses it using structure tags (e.g., exec->Begin) for functions with fixed offsets and via a remap table (e.g., exec[ remap->NewExtensionFunction ]) for functions without fixed offsets. Yuck! Using the macros allows both types of functions to be accessed identically. If a driver needs to set a pointer for Begin, it does 'SET_Begin(ctx, exec, my_begin_function)'. If it needs to set a pointer for NewExtensionFunction, it does 'SET_NewExtensionFunction(ctx, exec, my_NewExtensionFunction_function)'. Furthermore, if at some point in the future a static offset is assigned for NewExtensionFunction, only the macros need to change (instead of every single place that accesses a table for that function). This code differs slightly from the originally posted patches in that the CALL, GET, and SET marcos no longer take a context pointer as a parameter. Brian Paul had suggested that the remap table could be stored as a global since it would be set at CreateScreen time and would be constant for all contexts. This change reflects that feedback. http://marc.theaimsgroup.com/?t=112087194700001&r=1&w=2
* Use driver functions to create TexEnvProgram, TnlProgramKeith Whitwell2005-05-091-2/+7
|
* Major check-in of changes for GL_EXT_framebuffer_object extension.Brian Paul2005-05-041-0/+4
| | | | | | | Main driver impacts: - new code for creating the Mesa GLframebuffer - new span/pixel read/write code Some drivers not yet updated/tested.
* Add a facility to route all rasterization through a fragment programKeith Whitwell2005-05-041-0/+13
| | | | | | | | | | | which is automatically generated to match the current texture environment state. Introduces a new value ctx->FragmentProgram._Active which is true when either _Enabled is true or there is such a fragment program ready to run. To test out on a driver running the software rasterizer, set MESA_TEX_PROG=t in the environment. It goes without saying that performance is lower for the software rasterizer in this mode.
* cosmetic changesMichal Krol2005-04-141-6/+7
|
* Rename _mesa_update_buffers() to _mesa_update_draw_buffer_bounds() and doBrian Paul2005-02-261-8/+9
| | | | | additional checks. Replace _mesa_init_buffers() with _mesa_init_scissor() and _mesa_init_multisample().
* plug in GL_EXT_framebuffer_object functionsBrian Paul2005-02-081-0/+23
|
* Some initial work for OpenGL 2.0: glStencilFunc/Op/MaskSeparate() functions.Brian Paul2005-01-121-0/+5
|
* Implement software ATI_fragment_shaderDave Airlie2004-12-191-0/+23
| | | | no error detection, slow, may not be 100% correct but a good start
* Change the dispatch offsets for the VertexAttrib*NV functions so they don'tBrian Paul2004-11-271-3/+3
| | | | | | | alias with the corresponding ARB functions. GL_ARB_vertex_shader (and OpenGL 2.0's) VertexAttrib functions don't alias with conventional vertex attributes, as GL_NV_vertex_program does. So, the ARB and NV version of VertexAttrib need to be distinct.
* clean up code related to dispatch table initializationBrian Paul2004-11-271-42/+1
|
* use _glapi_procBrian Paul2004-11-271-6/+3
|
* fill api entries for ARB_shader_objects and ARB_vertex_shaderMichal Krol2004-10-271-0/+50
|
* added support for GL_ARB_draw_buffersBrian Paul2004-10-021-0/+4
|
* updated error msgBrian Paul2004-09-101-2/+2
|
* Silence gcc 3.4 warnings on ReactOS. Mostly unused var warnings. (patch ↵Brian Paul2004-08-251-2/+3
| | | | 1015696)
* Add EXT_vertex_cull support to mesaKeith Whitwell2004-05-101-0/+2
|
* Added ctx->Vertex/FragmentProgram._Enable flags. Set when vertex/fragmentBrian Paul2004-04-231-17/+36
| | | | | | | program is enabled AND the currently bound program is valid. Check _Enable instead of Enable to prevent things from blowing up when someone calls glEnable(GL_VERTEX_PROGRAM_ARB) without actually defining a program.
* Added support for EXT_blend_equation_separate / ATI_blend_equation_separate.Ian Romanick2004-01-271-0/+1
| | | | | The internal driver interface was also changed to use BlendEquationSeparate instead of BlendEquation.
* Don't set extra bits in FLUSH_VERTICES, fix several state bugs.Keith Whitwell2004-01-231-13/+11
|
* remove _mesa_check_driver_hooks() - it's really not too useful anymoreBrian Paul2004-01-201-11/+6
|
* Merge vtx-0-2-branchKeith Whitwell2003-11-241-1/+1
|
* Redo array element checking for vertex array buffers.Brian Paul2003-11-101-0/+108
| | | | | | | Now, compute ctx->Array._MaxElement as the min of enabled array's max element. Test against ctx->Array._MaxElement in glDrawArrays/Elements. Note: testing in glArrayElement not done yet. Only do element checking if ctx->Const.CheckArrayBounds is set.
* Moved some shared vertex/fragment program code into new program.c file.Brian Paul2003-08-311-5/+7
| | | | | | | Implemented new program_parameter_list type and functions for dealing with named program parameters, constants and GL state references. New state_index enum for describing GL state referenced within ARB vertex/ fragment programs. Plus, functions for fetching named GL state.
* Added support for GL_IBM_multimode_draw_arrays.Ian Romanick2003-08-221-0/+6
| | | | | | | | Added non-static entrypoints and the name string for GL_SUN_multi_draw_arrays (identical to GL_EXT_multi_draw_arrays). Made add_newer_entrypoints (in src/mesa/main/context.c) table driven. This reduced the size of context.o by about 3KB.
* fix a few more glitches from last big check-inBrian Paul2003-07-231-9/+3
|
* Merge Jose's documentation and core Mesa changes from embedded branchKeith Whitwell2003-07-171-575/+170
|
* Implemented GL_ARB_occlusion_query (not 100% finalized).Brian Paul2003-06-131-0/+14
|
* glBindProgramARB dispatches to glBindProgramNV (remove _mesa_BindProgramARB).Brian Paul2003-05-281-10/+11
| | | | Removed VertexAttrib*ARB() stubs.
* Use ctx->Const.MaxTextureImageUnits and MaxTextureCoordUnits in more places.Brian Paul2003-05-011-1/+3
| | | | Misc vertex array / vertex program changes.
* Implemented GL_EXT_depth_bounds_test.Brian Paul2003-04-211-4/+0
|
* alias ARB/NV program functions where possibleBrian Paul2003-04-211-40/+45
|
* Added arbprogram.c to Makefiles.Brian Paul2003-04-171-1/+72
| | | | | Added display list support for GL_NV_fragment_program. Assorted clean-ups.
* Added ctx->Texture._EnabledCoordUnits bitfield.Brian Paul2003-04-081-1/+27
| | | | | | Fixed some vertex array / vertex program glitches with glDrawElements. Fixed some fragment program runtime bugs. Non-trivial Cg programs are running now.
* Basic infrastructure for GL_ARB_vertex_buffer_object.Brian Paul2003-03-291-3/+21
|
* proper dispatch for NV_fragment_program functionsBrian Paul2003-03-291-2/+2
|
* Fix up some fragment program texture enable issues.Brian Paul2003-03-151-9/+18
| | | | Implemented TXD instruction.
* Killed mmath.[ch]. Moved low-level functions/assembly code into imports.[ch]Brian Paul2003-03-011-6/+6
| | | | | Moved type conversion and interpolation macros into macros.h Updated all the files that used to include mmath.h
* First batch of code for GL_NV_fragment_program.Brian Paul2003-01-141-3/+18
| | | | | Re-org of some GL_NV_vertex_program code. Replace MAX_TEXTURE_UNITS with MAX_TEXTURE_COORD_UNITS and MAX_TEXTURE_IMAGE_UNITS.
* a few dispatch pointers weren't set (glGenTexturesEXT for example)Brian Paul2002-11-061-3/+18
|
* Header file clean-up:Brian Paul2002-10-241-5/+1
| | | | | | | | 1. Remove all.h and PC_HEADER junk. 2. Rolled mem.c and mem.h into imports.c and imports.h 3. Include imports.h instead of mem.h Restore _mesa_create/initialize_context() to be like they were in 4.0.4 New wrappers for a few std C functions: _mesa_atoi(), _mesa_strstr(), etc.
* surround vertex program code with #if FEATURE_NV_vertex_program/#endifBrian Paul2002-10-161-1/+5
|
* finally get rid of ctx->Texture._ReallyEnabled fieldBrian Paul2002-10-081-11/+3
|
* removed ctx->Polygon._OffsetAny - not really neededBrian Paul2002-10-021-8/+6
|
* new texture compression infrastructureBrian Paul2002-09-271-4/+1
|
* hook-up dispatch for glActiveStencilFaceEXT()Brian Paul2002-09-061-3/+1
|
* GL_EXT_stencil_two_side extension, not 100% complete yet.Brian Paul2002-09-061-1/+6
|
* Overhaul of glRead/DrawBuffer() code. Now, swrast->Driver.SetBuffer()Brian Paul2002-07-091-2/+1
| | | | | indicates the read AND draw color buffer for all software rasterization. Lots of related clean-ups. See RELNOTES-4.1 for details.
* Implemented GL_EXT_multi_draw_arrays: glMultiDrawArraysEXT() and ↵Brian Paul2002-06-301-1/+5
| | | | glMultiDrawElementsEXT().
* remove an unneeded statement in update_polygon(), added a commentBrian Paul2002-06-251-3/+5
|