summaryrefslogtreecommitdiff
path: root/src/mesa/main/state.c
AgeCommit message (Collapse)Author
2005-07-18Wrap every place that accesses a dispatch table with a macro. A new script-Ian Romanick
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
2005-05-09Use driver functions to create TexEnvProgram, TnlProgramKeith Whitwell
2005-05-04Major check-in of changes for GL_EXT_framebuffer_object extension.Brian Paul
Main driver impacts: - new code for creating the Mesa GLframebuffer - new span/pixel read/write code Some drivers not yet updated/tested.
2005-05-04Add a facility to route all rasterization through a fragment programKeith Whitwell
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.
2005-04-14cosmetic changesMichal Krol
2005-02-26Rename _mesa_update_buffers() to _mesa_update_draw_buffer_bounds() and doBrian Paul
additional checks. Replace _mesa_init_buffers() with _mesa_init_scissor() and _mesa_init_multisample().
2005-02-08plug in GL_EXT_framebuffer_object functionsBrian Paul
2005-01-12Some initial work for OpenGL 2.0: glStencilFunc/Op/MaskSeparate() functions.Brian Paul
2004-12-19Implement software ATI_fragment_shaderDave Airlie
no error detection, slow, may not be 100% correct but a good start
2004-11-27Change the dispatch offsets for the VertexAttrib*NV functions so they don'tBrian Paul
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.
2004-11-27clean up code related to dispatch table initializationBrian Paul
2004-11-27use _glapi_procBrian Paul
2004-10-27fill api entries for ARB_shader_objects and ARB_vertex_shaderMichal Krol
2004-10-02added support for GL_ARB_draw_buffersBrian Paul
2004-09-10updated error msgBrian Paul
2004-08-25Silence gcc 3.4 warnings on ReactOS. Mostly unused var warnings. (patch ↵Brian Paul
1015696)
2004-05-10Add EXT_vertex_cull support to mesaKeith Whitwell
2004-04-23Added ctx->Vertex/FragmentProgram._Enable flags. Set when vertex/fragmentBrian Paul
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.
2004-01-27Added support for EXT_blend_equation_separate / ATI_blend_equation_separate.Ian Romanick
The internal driver interface was also changed to use BlendEquationSeparate instead of BlendEquation.
2004-01-23Don't set extra bits in FLUSH_VERTICES, fix several state bugs.Keith Whitwell
2004-01-20remove _mesa_check_driver_hooks() - it's really not too useful anymoreBrian Paul
2003-11-24Merge vtx-0-2-branchKeith Whitwell
2003-11-10Redo array element checking for vertex array buffers.Brian Paul
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.
2003-08-31Moved some shared vertex/fragment program code into new program.c file.Brian Paul
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.
2003-08-22Added support for GL_IBM_multimode_draw_arrays.Ian Romanick
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.
2003-07-23fix a few more glitches from last big check-inBrian Paul
2003-07-17Merge Jose's documentation and core Mesa changes from embedded branchKeith Whitwell
2003-06-13Implemented GL_ARB_occlusion_query (not 100% finalized).Brian Paul
2003-05-28glBindProgramARB dispatches to glBindProgramNV (remove _mesa_BindProgramARB).Brian Paul
Removed VertexAttrib*ARB() stubs.
2003-05-01Use ctx->Const.MaxTextureImageUnits and MaxTextureCoordUnits in more places.Brian Paul
Misc vertex array / vertex program changes.
2003-04-21Implemented GL_EXT_depth_bounds_test.Brian Paul
2003-04-21alias ARB/NV program functions where possibleBrian Paul
2003-04-17Added arbprogram.c to Makefiles.Brian Paul
Added display list support for GL_NV_fragment_program. Assorted clean-ups.
2003-04-08Added ctx->Texture._EnabledCoordUnits bitfield.Brian Paul
Fixed some vertex array / vertex program glitches with glDrawElements. Fixed some fragment program runtime bugs. Non-trivial Cg programs are running now.
2003-03-29Basic infrastructure for GL_ARB_vertex_buffer_object.Brian Paul
2003-03-29proper dispatch for NV_fragment_program functionsBrian Paul
2003-03-15Fix up some fragment program texture enable issues.Brian Paul
Implemented TXD instruction.
2003-03-01Killed mmath.[ch]. Moved low-level functions/assembly code into imports.[ch]Brian Paul
Moved type conversion and interpolation macros into macros.h Updated all the files that used to include mmath.h
2003-01-14First batch of code for GL_NV_fragment_program.Brian Paul
Re-org of some GL_NV_vertex_program code. Replace MAX_TEXTURE_UNITS with MAX_TEXTURE_COORD_UNITS and MAX_TEXTURE_IMAGE_UNITS.
2002-11-06a few dispatch pointers weren't set (glGenTexturesEXT for example)Brian Paul
2002-10-24Header file clean-up:Brian Paul
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.
2002-10-16surround vertex program code with #if FEATURE_NV_vertex_program/#endifBrian Paul
2002-10-08finally get rid of ctx->Texture._ReallyEnabled fieldBrian Paul
2002-10-02removed ctx->Polygon._OffsetAny - not really neededBrian Paul
2002-09-27new texture compression infrastructureBrian Paul
2002-09-06hook-up dispatch for glActiveStencilFaceEXT()Brian Paul
2002-09-06GL_EXT_stencil_two_side extension, not 100% complete yet.Brian Paul
2002-07-09Overhaul of glRead/DrawBuffer() code. Now, swrast->Driver.SetBuffer()Brian Paul
indicates the read AND draw color buffer for all software rasterization. Lots of related clean-ups. See RELNOTES-4.1 for details.
2002-06-30Implemented GL_EXT_multi_draw_arrays: glMultiDrawArraysEXT() and ↵Brian Paul
glMultiDrawElementsEXT().
2002-06-25remove an unneeded statement in update_polygon(), added a commentBrian Paul