Commit Graph

113 Commits

Author SHA1 Message Date
George Sapountzis
32a2a095f4 glcore: build from mesa 2008-04-23 11:12:30 +03:00
Brian
edf07417be Fix TEXREL issues when using GLX_USE_TLS (see bug 7459). 2007-06-12 09:47:03 -06:00
Brian
66d336808d Call _glapi_set_context(NULL) in _glapi_check_multithread() to make sure the _glapi_Context global gets cleared properly. 2007-04-02 10:03:34 -06:00
Ian Romanick
f0bcee5db0 Delete two invalid assertions.
These two assertions are invalid for a couple reasons.  Primarily,
when this code is compiled into the X-server, the symbols
"glSecondaryColor3fEXT" and "glPointParameterivNV" do not exist.
2007-02-20 15:18:53 -08:00
Ian Romanick
4616513577 Fix dumb build errors.
I always build with -DGLX_USE_TLS, so I never hit these paths.  glapi.h is
required in some places because _glapi_Dispatch is declared there, but
_glapi_tls_Dispatch is declared in glthread.h.
2006-10-13 17:34:01 +00:00
Brian Paul
57d719afb1 remove some debug code invalidated by prev check-in 2006-10-12 15:55:04 +00:00
Ian Romanick
f3f51bc844 Fix bug #4681.
glDeleteTextures and glDeleteTexturesEXT were erroneously listed as
aliases of each other.  For anything /except/ GLX protocol they are
aliases.  This set of changes allows functions that are functionally
identical but have different GLX protocol to be listed as aliases.

When building with GLX_INDIRECT_RENDERING set, different static
functions are used.  These functions determine whether the current
context is direct rendering or not.  If the context is direct
rendering, the aliased function (e.g., glDeleteTextures in the case of
glDeleteTexturesEXT) is called.  If the context is not direct
rendering, the correct GLX protocol is sent.

For a deeper explanation of what is changed, please see:
http://dri.freedesktop.org/wiki/PartiallyAliasedFunctions
2006-10-11 22:37:14 +00:00
Brian Paul
70c2d51230 remove assertion that referenced &glSetFenceNV for debug test 2006-08-29 21:54:01 +00:00
Ian Romanick
d319edff1e The TLS dispatch functions for x86-64 are fixed-size, just like on
x86.  This means that the position of each dispatch function can be
calculated as (dispatch_offset * size_of_function) + glNewList.  This
allows us to not store the function pointers in glprocs_table_t.

This same optimization has been done for quite some time on x86.  We
could probably also do this for some cases of the SPARC dispatch as
well.
2006-08-22 18:22:20 +00:00
Ian Romanick
4e4b5f4008 Add new attribute called static_dispatch to the <function> element. This
boolean attribute, which defaults to true, determines whether or not a
static dispatch function is available in libGL for applications to link
against.

Ideally, any new functions that are not part of the ABI should not have
directly accessable dispatch functions.  This forces applications to use
glXGetProcAddress to access these functions.  By doing this we can
gracefully remove functions from libGL without breaking the linkage of
applications.

Note that the static dispatch functions are still generated.  However, they
are given names like gl_dispatch_stub_820 and are marked with the "hidden"
linker attribute.

All extension functions added since the previous Mesa release (6.5) have
been marked as 'static_dispatch="false"'.
2006-08-22 16:34:38 +00:00
Brian Paul
385f23edf9 Thread safety for Win32. SourceForge bug #1507315. 2006-06-16 14:50:05 +00:00
Brian Paul
09c8e41955 added 'const' (Dan Schikore) 2006-04-13 01:51:25 +00:00
Kristian Høgsberg
3a6d968f37 Fixes to silence warnings in code generated by glapi scripts. 2006-03-29 22:32:38 +00:00
Brian Paul
514a15cea1 assorted code clean-ups, comments, etc. 2006-03-15 20:56:22 +00:00
Brian Paul
ac8b07b3ae remove invalid assertion in _glapi_get_dispatch(), fixes additional thread safety problem 2006-03-15 20:42:00 +00:00
Brian Paul
e660690985 Need to include glthread.h in glapi.h, not glapi.c so that GET_CURRENT_CONTEXT
is properly defined.  Fixes long-standing, but unnoticed thread safety failure.
Also, updated comments.
2006-03-15 20:31:50 +00:00
Dave Airlie
f236300e3a commit to fixup MGL namespacing for XGL 2006-02-10 21:46:17 +00:00
Ian Romanick
44b1bd7597 ifdef out some code to make glapi.c linkable in libglx.so (on the
server).  This isn't strictly needed yet, but it doesn't hurt anything
either.  However, the patches for fd.o bug #2996 require this to build.
2005-10-11 16:56:39 +00:00
Ian Romanick
967b006f51 Remove _glapi_check_multithread from the interface exported by the loader to
the driver.  The loader now takes care of this for the driver.

Remove _glapi_DispatchTSD and give _glapi_Dispatch its semantic (i.e.,
having a NULL value means that the application is multithreaded and
_glapi_get_dispatch must be called).

Gut all of the dispatch override code.  This removes _glapi_RealDispatch,
_glapi_tls_RealDispatch, _glapi_begin_dispatch_override,
_glapi_end_dispatch_override, and _glapi_get_override_dispatch.

Remove _glapi_get_proc_address, _glapi_get_proc_name, _glapi_get_version,
and _glapi_check_table from the loader / driver interface.

Reviewed by: Brian Paul
2005-08-10 23:54:15 +00:00
Ian Romanick
1585c234e0 Major rip-up of internal function insertion interface. The old
_glapi_add_entrypoint has been replaced by a new routine called
_glapi_add_dispatch.  This new routine dynamically assignes dispatch offsets
to functions added.  This allows IHVs to add support for extension functions
that do not have assigned dispatch offsets.

It also means that a driver has no idea what offset will be assigned to a
function.  The vast majority of the changes in this commit account for that.
An additional table, driDispatchRemapTable, is added.  Functions not in the
Linux OpenGL ABI (i.e., anything not in GL 1.2 + ARB_multitexture) has a
fixed offset in this new table.  The entry in this table specifies the
offset in of the function in the real dispatch table.

The internal interface was also bumped from version 20050725 to 20050727.

This has been tested with various programs in progs/demos on:

radeon (Radeon Mobility M6)
r128 (Rage 128 Pro)
mga (G400)
2005-07-28 00:29:51 +00:00
Ian Romanick
9f23a3a1bf Fix SPARC assembly for 64-bit
- The test for whether or not we're building for 64-bit is '#ifdef __arch64__'.
 This appears to be correct on both Linux and Solaris.

- The test for Solaris is now '#if defined(SVR4) || defined(__SVR4) ||
defined(__svr4__)'.  GCC 3.4.0 has all three defined on Solaris 9.

- Enables assembly language clip routines.

- Fixes to make GLSL code build on Solaris.

- Update gl_SPARC_asm.py.
2005-07-28 00:11:10 +00:00
Keith Whitwell
5cef1a1fed Stop gcc-4.0 complaining about "type qualifiers ignored on function
return type".
2005-04-28 13:16:23 +00:00
Ben Crossman
d8aa5ffed5 Reverted the last change back to fix bug 3035 2005-04-15 09:13:21 +00:00
Ben Crossman
369404299c A few getenv() that werent using the mesa wrapper version 2005-04-14 19:54:15 +00:00
Ian Romanick
25fe93f0a1 Add TLS support to libGL and, by virtue of using glthread.h and GL_CALL, all
DRI drivers.  A TLS enabled libGL can load a TLS or a non-TLS DRI driver,
but a TLS DRI driver requires a TLS enabled libGL.

This fixes bug #1822.
2005-04-13 20:59:15 +00:00
Adam Jackson
791ce02244 _glapi_* is effectively PUBLIC API for the DRI drivers. 2004-12-15 23:14:29 +00:00
Brian Paul
a760ccf6d8 silence a variety of warnings found with g++ 3.4.2 2004-12-03 15:24:34 +00:00
Brian Paul
209bd3a5b4 make get_static_proc_address() return a _glapi_proc 2004-11-27 04:02:32 +00:00
Brian Paul
767e15a78a Use new _glapi_proc typedef instead of void * for function pointers.
Misc clean-ups in glapi.c
2004-11-27 03:51:11 +00:00
Brian Paul
c247c7f66f applied SPARC patch (freedesktop bug 1898) 2004-11-22 19:27:40 +00:00
Brian Paul
5849e3d353 shorter error messages when calling a GL function without a bound context (FDO bug 1775) 2004-11-05 18:32:02 +00:00
Brian Paul
a6c423d956 Silence gcc 3.4 warnings on ReactOS. Mostly unused var warnings. (patch 1015696) 2004-08-25 15:59:48 +00:00
Roland Scheidegger
d2dbb25372 correct X86_DISPATCH_FUNCTION_SIZE if THREADS is defined 2004-07-06 00:32:03 +00:00
Ian Romanick
10b3bf6013 Fix typos in comments. 2004-07-05 22:42:14 +00:00
Ian Romanick
6c5402bccd Another "if it ain't broke, don't fix it" moment. Revert some more
code in _glapi_set_dispatch to its 1.74 form.  This fixes a "problem"
with buggy apps that make GL calls with no bound GL context (i.e.,
Enemy Territory during shut-down).
2004-07-05 22:40:54 +00:00
Daniel Borca
fd003824ad fixed non-threaded codepath 2004-07-05 06:15:37 +00:00
Ian Romanick
d14d103a0c Fix a potential race condition. Fix a couple of places where
_glapi_DispatchTSD wasn't properly handled.
2004-07-02 00:01:09 +00:00
Keith Whitwell
009aa3ef5e Add infrastructure for t_vertex.c codegen. Add an example driver
for this which spits out C code for the generated functions.
2004-06-30 11:48:21 +00:00
Ian Romanick
8e77da1cd7 First phase of TLS work. At this point SPARC assembly dispatch is
broken, but it will be fixed "shortly."  This is pretty much the same
as the patch I sent to the dri-devel list on 22-Jun-2004.
2004-06-29 19:08:20 +00:00
Ian Romanick
7867799c72 Modify glprocs.h to have two tables instead of one. The first table
is just a huge string will all the function names in it.  The second
table contains offsets into the first table instead of pointers to
strings.
2004-05-27 00:05:13 +00:00
Brian Paul
f7b4e0d376 minor fixes for entrypoint name mangling 2004-04-23 20:33:07 +00:00
Daniel Borca
722cb89a13 no-op table on par with main dispatcher 2004-01-07 12:37:09 +00:00
Brian Paul
9a90cd40c6 fix __sparc_v9__ test to exclude linux (bug 852204) 2003-12-01 22:40:26 +00:00
Brian Paul
e4fcea2e06 Assorted casts to silence g++ warnings. 2003-09-19 15:38:15 +00:00
Brian Paul
a6ed6f48e6 make _glapi_get_proc_address() return NULL if function doesn't start with gl prefix 2003-08-27 14:48:16 +00:00
Ian Romanick
9ac51f57ef Removed all RCS / CVS tags (Id, Header, Date, etc.) from everything. 2003-06-05 00:50:18 +00:00
Brian Paul
dec2a4d4b7 added some casts for mallocs (bug 630379) 2002-10-29 15:03:14 +00:00
Brian Paul
944ea204a8 s/functionOffset/offset/ 2002-10-17 16:29:17 +00:00
Brian Paul
8ad1076dc2 Another round of glRead/DrawBuffer() clean-ups and simplifications.
Replaced ctx->Color._DriverDrawBuffer with swrast->CurrentBuffer.
Replaced ctx->Pixel._DriverReadBuffer with ctx->Pixel._ReadSrcMask.
swrast->Driver.SetBuffer() takes FRONT/BACK_LEFT/RIGHT_BIT values now.
Added tokens and code for GL_AUX buffers, for completeness.
2002-10-11 17:41:03 +00:00
Brian Paul
54f3aab0c7 _glapi_get_proc_address() now always returns a valid dispatch stub function
(provided we're on x86 or SPARC).  Later, _glapi_add_entrypoint() will fix-up
the dispatch offset (which was -1).  This will allow DRI libGL to avoid
probing for drivers.
2002-10-02 01:51:44 +00:00