summaryrefslogtreecommitdiff
path: root/lib/mesa/src/mapi
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2024-04-02 09:30:07 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2024-04-02 09:30:07 +0000
commitf54e142455cb3c9d1662dae7e096a32a47e5409b (patch)
tree440ecd46269f0eac25e349e1ed58f246490c5e26 /lib/mesa/src/mapi
parent36d8503c27530f68d655d3ef77a6eaa4dfd8ad65 (diff)
Import Mesa 23.3.6
Diffstat (limited to 'lib/mesa/src/mapi')
-rw-r--r--lib/mesa/src/mapi/entry.h6
-rw-r--r--lib/mesa/src/mapi/glapi/gen/NV_texture_barrier.xml2
-rw-r--r--lib/mesa/src/mapi/glapi/gen/NV_vdpau_interop.xml4
-rw-r--r--lib/mesa/src/mapi/glapi/glapi_dispatch.c5
-rw-r--r--lib/mesa/src/mapi/glapi/glapi_getproc.c462
-rw-r--r--lib/mesa/src/mapi/glapi/tests/check_table.cpp4
-rw-r--r--lib/mesa/src/mapi/shared-glapi/meson.build2
-rw-r--r--lib/mesa/src/mapi/shared-glapi/stub.c106
-rw-r--r--lib/mesa/src/mapi/shared-glapi/stub.h6
9 files changed, 40 insertions, 557 deletions
diff --git a/lib/mesa/src/mapi/entry.h b/lib/mesa/src/mapi/entry.h
index 7c8137c0c..2d2c4137a 100644
--- a/lib/mesa/src/mapi/entry.h
+++ b/lib/mesa/src/mapi/entry.h
@@ -37,10 +37,4 @@ entry_patch_public(void);
mapi_func
entry_get_public(int slot);
-mapi_func
-entry_generate(int slot);
-
-void
-entry_patch(mapi_func entry, int slot);
-
#endif /* _ENTRY_H_ */
diff --git a/lib/mesa/src/mapi/glapi/gen/NV_texture_barrier.xml b/lib/mesa/src/mapi/glapi/gen/NV_texture_barrier.xml
index b4d3d88d6..fd341a801 100644
--- a/lib/mesa/src/mapi/glapi/gen/NV_texture_barrier.xml
+++ b/lib/mesa/src/mapi/glapi/gen/NV_texture_barrier.xml
@@ -7,7 +7,7 @@
<OpenGLAPI>
<category name="GL_NV_texture_barrier" number="381">
- <function name="TextureBarrierNV" exec="dlist" />
+ <function name="TextureBarrierNV" exec="dlist" es2="2.0" />
</category>
</OpenGLAPI>
diff --git a/lib/mesa/src/mapi/glapi/gen/NV_vdpau_interop.xml b/lib/mesa/src/mapi/glapi/gen/NV_vdpau_interop.xml
index 7bf8fdfb4..1f53ac4a0 100644
--- a/lib/mesa/src/mapi/glapi/gen/NV_vdpau_interop.xml
+++ b/lib/mesa/src/mapi/glapi/gen/NV_vdpau_interop.xml
@@ -50,12 +50,12 @@
<param name="access" type="GLenum"/>
</function>
- <function name="VDPAUMapSurfacesNV">
+ <function name="VDPAUMapSurfacesNV" marshal="sync">
<param name="numSurfaces" type="GLsizei"/>
<param name="surfaces" type="const GLintptr *" count="numSurfaces"/>
</function>
- <function name="VDPAUUnmapSurfacesNV">
+ <function name="VDPAUUnmapSurfacesNV" marshal="sync">
<param name="numSurfaces" type="GLsizei"/>
<param name="surfaces" type="const GLintptr *" count="numSurfaces"/>
</function>
diff --git a/lib/mesa/src/mapi/glapi/glapi_dispatch.c b/lib/mesa/src/mapi/glapi/glapi_dispatch.c
index 43209b597..960ccc0e8 100644
--- a/lib/mesa/src/mapi/glapi/glapi_dispatch.c
+++ b/lib/mesa/src/mapi/glapi/glapi_dispatch.c
@@ -74,11 +74,6 @@
#endif /* logging */
-#ifdef GLX_INDIRECT_RENDERING
-/* those link to libglapi.a should provide the entry points */
-#define _GLAPI_SKIP_PROTO_ENTRY_POINTS
-#endif
-
/* Enable frame pointer elimination on Windows, otherwise forgetting to add
* GLAPIENTRY to _mesa_* entrypoints will not cause crashes on debug builds, as
* the initial ESP value is saved in the EBP in the function prologue, then
diff --git a/lib/mesa/src/mapi/glapi/glapi_getproc.c b/lib/mesa/src/mapi/glapi/glapi_getproc.c
index df8b4fa25..9496ff87d 100644
--- a/lib/mesa/src/mapi/glapi/glapi_getproc.c
+++ b/lib/mesa/src/mapi/glapi/glapi_getproc.c
@@ -37,16 +37,12 @@
#include "glapitable.h"
-#define FIRST_DYNAMIC_OFFSET (sizeof(struct _glapi_table) / sizeof(void *))
-
-
-
/**********************************************************************
* Static function management.
*/
-#if !defined(DISPATCH_FUNCTION_SIZE)
+#if !defined(DISPATCH_FUNCTION_SIZE)
# define NEED_FUNCTION_POINTER
#endif
#include "glprocs.h"
@@ -57,14 +53,14 @@
* and return the corresponding glprocs_table_t entry.
*/
static const glprocs_table_t *
-get_static_proc( const char * n )
+get_static_proc(const char *n)
{
GLuint i;
for (i = 0; static_functions[i].Name_offset >= 0; i++) {
const char *testName = gl_string_table + static_functions[i].Name_offset;
if (strcmp(testName, n) == 0)
{
- return &static_functions[i];
+ return &static_functions[i];
}
}
return NULL;
@@ -78,7 +74,7 @@ get_static_proc( const char * n )
static GLint
get_static_proc_offset(const char *funcName)
{
- const glprocs_table_t * const f = get_static_proc( funcName );
+ const glprocs_table_t *const f = get_static_proc(funcName);
if (f == NULL) {
return -1;
}
@@ -87,411 +83,28 @@ get_static_proc_offset(const char *funcName)
}
-
-/**
- * Return dispatch function address for the named static (built-in) function.
- * Return NULL if function not found.
- */
-static _glapi_proc
-get_static_proc_address(const char *funcName)
-{
- const glprocs_table_t * const f = get_static_proc( funcName );
- if (f == NULL) {
- return NULL;
- }
-
-#if defined(DISPATCH_FUNCTION_SIZE) && defined(GLX_INDIRECT_RENDERING)
- return (f->Address == NULL)
- ? get_entrypoint_address(f->Offset)
- : f->Address;
-#elif defined(DISPATCH_FUNCTION_SIZE)
- return get_entrypoint_address(f->Offset);
-#else
- return f->Address;
-#endif
-}
-
-
-
-/**
- * Return the name of the function at the given offset in the dispatch
- * table. For debugging only.
- */
-static const char *
-get_static_proc_name( GLuint offset )
-{
- GLuint i;
- for (i = 0; static_functions[i].Name_offset >= 0; i++) {
- if (static_functions[i].Offset == offset) {
- return gl_string_table + static_functions[i].Name_offset;
- }
- }
- return NULL;
-}
-
-
-
/**********************************************************************
* Extension function management.
*/
-
-/**
- * Track information about a function added to the GL API.
- */
-struct _glapi_function {
- /**
- * Name of the function.
- */
- const char * name;
-
-
- /**
- * Text string that describes the types of the parameters passed to the
- * named function. Parameter types are converted to characters using the
- * following rules:
- * - 'i' for \c GLint, \c GLuint, and \c GLenum
- * - 'p' for any pointer type
- * - 'f' for \c GLfloat and \c GLclampf
- * - 'd' for \c GLdouble and \c GLclampd
- */
- const char * parameter_signature;
-
-
- /**
- * Offset in the dispatch table where the pointer to the real function is
- * located. If the driver has not requested that the named function be
- * added to the dispatch table, this will have the value ~0.
- */
- unsigned dispatch_offset;
-
-
- /**
- * Pointer to the dispatch stub for the named function.
- *
- * \todo
- * The semantic of this field should be changed slightly. Currently, it
- * is always expected to be non-\c NULL. However, it would be better to
- * only allocate the entry-point stub when the application requests the
- * function via \c glXGetProcAddress. This would save memory for all the
- * functions that the driver exports but that the application never wants
- * to call.
- */
- _glapi_proc dispatch_stub;
-};
-
-
-static struct _glapi_function ExtEntryTable[MAX_EXTENSION_FUNCS];
-static GLuint NumExtEntryPoints = 0;
-
-
-static struct _glapi_function *
-get_extension_proc(const char *funcName)
-{
- GLuint i;
- for (i = 0; i < NumExtEntryPoints; i++) {
- if (strcmp(ExtEntryTable[i].name, funcName) == 0) {
- return & ExtEntryTable[i];
- }
- }
- return NULL;
-}
-
-
-static GLint
-get_extension_proc_offset(const char *funcName)
-{
- const struct _glapi_function * const f = get_extension_proc( funcName );
- if (f == NULL) {
- return -1;
- }
-
- return f->dispatch_offset;
-}
-
-
-static _glapi_proc
-get_extension_proc_address(const char *funcName)
-{
- const struct _glapi_function * const f = get_extension_proc( funcName );
- if (f == NULL) {
- return NULL;
- }
-
- return f->dispatch_stub;
-}
-
-
-static const char *
-get_extension_proc_name(GLuint offset)
-{
- GLuint i;
- for (i = 0; i < NumExtEntryPoints; i++) {
- if (ExtEntryTable[i].dispatch_offset == offset) {
- return ExtEntryTable[i].name;
- }
- }
- return NULL;
-}
-
-
-/**
- * strdup() is actually not a standard ANSI C or POSIX routine.
- * Irix will not define it if ANSI mode is in effect.
- */
-static char *
-str_dup(const char *str)
-{
- char *copy;
- copy = malloc(strlen(str) + 1);
- if (!copy)
- return NULL;
- strcpy(copy, str);
- return copy;
-}
-
-
-/**
- * Generate new entrypoint
- *
- * Use a temporary dispatch offset of ~0 (i.e. -1). Later, when the driver
- * calls \c _glapi_add_dispatch we'll put in the proper offset. If that
- * never happens, and the user calls this function, he'll segfault. That's
- * what you get when you try calling a GL function that doesn't really exist.
- *
- * \param funcName Name of the function to create an entry-point for.
- *
- * \sa _glapi_add_entrypoint
- */
-
-static struct _glapi_function *
-add_function_name( const char * funcName )
-{
- struct _glapi_function * entry = NULL;
- _glapi_proc entrypoint = NULL;
- char * name_dup = NULL;
-
- if (NumExtEntryPoints >= MAX_EXTENSION_FUNCS)
- return NULL;
-
- if (funcName == NULL)
- return NULL;
-
- name_dup = str_dup(funcName);
- if (name_dup == NULL)
- return NULL;
-
- entrypoint = generate_entrypoint(~0);
-
- if (entrypoint == NULL) {
- free(name_dup);
- return NULL;
- }
-
- entry = & ExtEntryTable[NumExtEntryPoints];
- NumExtEntryPoints++;
-
- entry->name = name_dup;
- entry->parameter_signature = NULL;
- entry->dispatch_offset = ~0;
- entry->dispatch_stub = entrypoint;
-
- return entry;
-}
-
-
-static struct _glapi_function *
-set_entry_info( struct _glapi_function * entry, const char * signature, unsigned offset )
-{
- char * sig_dup = NULL;
-
- if (signature == NULL)
- return NULL;
-
- sig_dup = str_dup(signature);
- if (sig_dup == NULL)
- return NULL;
-
- fill_in_entrypoint_offset(entry->dispatch_stub, offset);
-
- entry->parameter_signature = sig_dup;
- entry->dispatch_offset = offset;
-
- return entry;
-}
-
-
/**
- * Fill-in the dispatch stub for the named function.
- *
- * This function is intended to be called by a hardware driver. When called,
- * a dispatch stub may be created for the function. A pointer to this
- * dispatch function will be returned by glXGetProcAddress.
- *
- * \param function_names Array of pointers to function names that should
- * share a common dispatch offset.
- * \param parameter_signature String representing the types of the parameters
- * passed to the named function. Parameter types
- * are converted to characters using the following
- * rules:
- * - 'i' for \c GLint, \c GLuint, and \c GLenum
- * - 'p' for any pointer type
- * - 'f' for \c GLfloat and \c GLclampf
- * - 'd' for \c GLdouble and \c GLclampd
- *
- * \returns
- * The offset in the dispatch table of the named function. A pointer to the
- * driver's implementation of the named function should be stored at
- * \c dispatch_table[\c offset]. Return -1 if error/problem.
- *
- * \sa glXGetProcAddress
- *
- * \warning
- * This function can only handle up to 8 names at a time. As far as I know,
- * the maximum number of names ever associated with an existing GL function is
- * 4 (\c glPointParameterfSGIS, \c glPointParameterfEXT,
- * \c glPointParameterfARB, and \c glPointParameterf), so this should not be
- * too painful of a limitation.
- *
- * \todo
- * Determine whether or not \c parameter_signature should be allowed to be
- * \c NULL. It doesn't seem like much of a hardship for drivers to have to
- * pass in an empty string.
- *
- * \todo
- * Determine if code should be added to reject function names that start with
- * 'glX'.
- *
- * \bug
- * Add code to compare \c parameter_signature with the parameter signature of
- * a static function. In order to do that, we need to find a way to \b get
- * the parameter signature of a static function.
+ * Initializes the glapi relocs table, and returns the offset of the given
+ * function in the dispatch table.
*/
-
int
-_glapi_add_dispatch( const char * const * function_names,
- const char * parameter_signature )
+_glapi_add_dispatch(const char *funcName)
{
- static int next_dynamic_offset = FIRST_DYNAMIC_OFFSET;
- const char * const real_sig = (parameter_signature != NULL)
- ? parameter_signature : "";
- struct _glapi_function * entry[8];
- GLboolean is_static[8];
- unsigned i;
- int offset = ~0;
-
init_glapi_relocs_once();
- (void) memset( is_static, 0, sizeof( is_static ) );
- (void) memset( entry, 0, sizeof( entry ) );
-
- /* Find the _single_ dispatch offset for all function names that already
- * exist (and have a dispatch offset).
- */
-
- for ( i = 0 ; function_names[i] != NULL ; i++ ) {
- const char * funcName = function_names[i];
- int static_offset;
- int extension_offset;
-
- if (funcName[0] != 'g' || funcName[1] != 'l')
- return -1;
-
- /* search built-in functions */
- static_offset = get_static_proc_offset(funcName);
-
- if (static_offset >= 0) {
-
- is_static[i] = GL_TRUE;
-
- /* FIXME: Make sure the parameter signatures match! How do we get
- * FIXME: the parameter signature for static functions?
- */
-
- if ( (offset != ~0) && (static_offset != offset) ) {
- return -1;
- }
-
- offset = static_offset;
-
- continue;
- }
-
- /* search added extension functions */
- entry[i] = get_extension_proc(funcName);
-
- if (entry[i] != NULL) {
- extension_offset = entry[i]->dispatch_offset;
-
- /* The offset may be ~0 if the function name was added by
- * glXGetProcAddress but never filled in by the driver.
- */
-
- if (extension_offset == ~0) {
- continue;
- }
-
- if (strcmp(real_sig, entry[i]->parameter_signature) != 0) {
- return -1;
- }
-
- if ( (offset != ~0) && (extension_offset != offset) ) {
- return -1;
- }
-
- offset = extension_offset;
- }
- }
-
- /* If all function names are either new (or with no dispatch offset),
- * allocate a new dispatch offset.
- */
-
- if (offset == ~0) {
- offset = next_dynamic_offset;
- next_dynamic_offset++;
- }
-
- /* Fill in the dispatch offset for the new function names (and those with
- * no dispatch offset).
- */
-
- for ( i = 0 ; function_names[i] != NULL ; i++ ) {
- if (is_static[i]) {
- continue;
- }
-
- /* generate entrypoints for new function names */
- if (entry[i] == NULL) {
- entry[i] = add_function_name( function_names[i] );
- if (entry[i] == NULL) {
- /* FIXME: Possible memory leak here. */
- return -1;
- }
- }
-
- if (entry[i]->dispatch_offset == ~0) {
- set_entry_info( entry[i], real_sig, offset );
- }
- }
-
- return offset;
+ return get_static_proc_offset(funcName);
}
-
/**
* Return offset of entrypoint for named function within dispatch table.
*/
GLint
_glapi_get_proc_offset(const char *funcName)
{
- GLint offset;
-
- /* search extension functions first */
- offset = get_extension_proc_offset(funcName);
- if (offset >= 0)
- return offset;
-
/* search static functions */
return get_static_proc_offset(funcName);
}
@@ -499,37 +112,31 @@ _glapi_get_proc_offset(const char *funcName)
/**
- * Return pointer to the named function. If the function name isn't found
- * in the name of static functions, try generating a new API entrypoint on
- * the fly with assembly language.
+ * Return dispatch function address for the named static (built-in) function.
+ * Return NULL if function not found.
*/
_glapi_proc
_glapi_get_proc_address(const char *funcName)
{
- _glapi_proc func;
- struct _glapi_function * entry;
-
init_glapi_relocs_once();
- if (!funcName || funcName[0] != 'g' || funcName[1] != 'l')
+ if (!funcName || funcName[0] != 'g' || funcName[1] != 'l')
return NULL;
- /* search extension functions first */
- func = get_extension_proc_address(funcName);
- if (func)
- return func;
-
- /* search static functions */
- func = get_static_proc_address(funcName);
- if (func)
- return func;
-
- /* generate entrypoint, dispatch offset must be filled in by the driver */
- entry = add_function_name(funcName);
- if (entry == NULL)
+ const glprocs_table_t *const f = get_static_proc(funcName);
+ if (f == NULL) {
return NULL;
+ }
- return entry->dispatch_stub;
+#if defined(DISPATCH_FUNCTION_SIZE) && defined(GLX_INDIRECT_RENDERING)
+ return (f->Address == NULL)
+ ? get_entrypoint_address(f->Offset)
+ : f->Address;
+#elif defined(DISPATCH_FUNCTION_SIZE)
+ return get_entrypoint_address(f->Offset);
+#else
+ return f->Address;
+#endif
}
@@ -541,16 +148,13 @@ _glapi_get_proc_address(const char *funcName)
const char *
_glapi_get_proc_name(GLuint offset)
{
- const char * n;
-
- /* search built-in functions */
- n = get_static_proc_name(offset);
- if ( n != NULL ) {
- return n;
+ GLuint i;
+ for (i = 0; static_functions[i].Name_offset >= 0; i++) {
+ if (static_functions[i].Offset == offset) {
+ return gl_string_table + static_functions[i].Name_offset;
+ }
}
-
- /* search added extension functions */
- return get_extension_proc_name(offset);
+ return NULL;
}
@@ -567,11 +171,5 @@ _glapi_get_proc_name(GLuint offset)
GLuint
_glapi_get_dispatch_table_size(void)
{
- /*
- * The dispatch table size (number of entries) is the size of the
- * _glapi_table struct plus the number of dynamic entries we can add.
- * The extra slots can be filled in by DRI drivers that register new
- * extension functions.
- */
- return FIRST_DYNAMIC_OFFSET + MAX_EXTENSION_FUNCS;
+ return sizeof(struct _glapi_table) / sizeof(void *);
}
diff --git a/lib/mesa/src/mapi/glapi/tests/check_table.cpp b/lib/mesa/src/mapi/glapi/tests/check_table.cpp
index 5b9d1e7c4..9b1bc1593 100644
--- a/lib/mesa/src/mapi/glapi/tests/check_table.cpp
+++ b/lib/mesa/src/mapi/glapi/tests/check_table.cpp
@@ -28,7 +28,7 @@
struct name_offset {
const char *name;
- unsigned int offset;
+ size_t offset;
};
extern const struct name_offset linux_gl_abi[];
@@ -108,7 +108,7 @@ TEST(GetProcAddress, QueriedDispatchSizeBigEnough)
* table. This is the size of the static table with some extra entries for
* drivers to use for extensions that the core does not know about.
*/
- EXPECT_LT(table_entries, _glapi_get_dispatch_table_size());
+ EXPECT_EQ(table_entries, _glapi_get_dispatch_table_size());
}
TEST(GetProcAddress, KnownDispatchOffsetsAreConsistent)
diff --git a/lib/mesa/src/mapi/shared-glapi/meson.build b/lib/mesa/src/mapi/shared-glapi/meson.build
index bf84745d1..2cb93d778 100644
--- a/lib/mesa/src/mapi/shared-glapi/meson.build
+++ b/lib/mesa/src/mapi/shared-glapi/meson.build
@@ -22,8 +22,6 @@ files_shared_glapi = files(
'../entry.c',
'../u_current.c',
'../u_current.h',
- '../u_execmem.c',
- '../u_execmem.h',
'glapi.c',
'stub.c',
'stub.h',
diff --git a/lib/mesa/src/mapi/shared-glapi/stub.c b/lib/mesa/src/mapi/shared-glapi/stub.c
index 1836e330c..0bf54a89f 100644
--- a/lib/mesa/src/mapi/shared-glapi/stub.c
+++ b/lib/mesa/src/mapi/shared-glapi/stub.c
@@ -39,19 +39,14 @@
struct mapi_stub {
- const void *name;
+ size_t name_offset;
int slot;
- mapi_func addr;
};
/* define public_string_pool and public_stubs */
#define MAPI_TMP_PUBLIC_STUBS
#include "mapi_tmp.h"
-static struct mapi_stub dynamic_stubs[MAPI_TABLE_NUM_DYNAMIC];
-static int num_dynamic_stubs;
-static int next_dynamic_slot = MAPI_TABLE_NUM_STATIC;
-
void
stub_init_once(void)
{
@@ -66,7 +61,7 @@ stub_compare(const void *key, const void *elem)
const struct mapi_stub *stub = (const struct mapi_stub *) elem;
const char *stub_name;
- stub_name = &public_string_pool[(size_t) stub->name];
+ stub_name = &public_string_pool[stub->name_offset];
return strcmp(name, stub_name);
}
@@ -81,69 +76,6 @@ stub_find_public(const char *name)
ARRAY_SIZE(public_stubs), sizeof(public_stubs[0]), stub_compare);
}
-/**
- * Add a dynamic stub.
- */
-static struct mapi_stub *
-stub_add_dynamic(const char *name)
-{
- struct mapi_stub *stub;
- int idx;
-
- idx = num_dynamic_stubs;
- /* minus 1 to make sure we can never reach the last slot */
- if (idx >= MAPI_TABLE_NUM_DYNAMIC - 1)
- return NULL;
-
- stub = &dynamic_stubs[idx];
-
- /* dispatch to the last slot, which is reserved for no-op */
- stub->addr = entry_generate(
- MAPI_TABLE_NUM_STATIC + MAPI_TABLE_NUM_DYNAMIC - 1);
- if (!stub->addr)
- return NULL;
-
- stub->name = (const void *) strdup(name);
- /* to be fixed later */
- stub->slot = -1;
-
- num_dynamic_stubs = idx + 1;
-
- return stub;
-}
-
-/**
- * Return the dynamic stub with the given name. If no such stub exists and
- * generate is true, a new stub is generated.
- */
-struct mapi_stub *
-stub_find_dynamic(const char *name, int generate)
-{
- static simple_mtx_t dynamic_mutex = SIMPLE_MTX_INITIALIZER;
- struct mapi_stub *stub = NULL;
- int count, i;
-
- simple_mtx_lock(&dynamic_mutex);
-
- if (generate)
- assert(!stub_find_public(name));
-
- count = num_dynamic_stubs;
- for (i = 0; i < count; i++) {
- if (strcmp(name, (const char *) dynamic_stubs[i].name) == 0) {
- stub = &dynamic_stubs[i];
- break;
- }
- }
-
- /* generate a dynamic stub */
- if (generate && !stub)
- stub = stub_add_dynamic(name);
-
- simple_mtx_unlock(&dynamic_mutex);
-
- return stub;
-}
static const struct mapi_stub *
search_table_by_slot(const struct mapi_stub *table, size_t num_entries,
@@ -162,26 +94,7 @@ stub_find_by_slot(int slot)
{
const struct mapi_stub *stub =
search_table_by_slot(public_stubs, ARRAY_SIZE(public_stubs), slot);
- if (stub)
- return stub;
- return search_table_by_slot(dynamic_stubs, num_dynamic_stubs, slot);
-}
-
-void
-stub_fix_dynamic(struct mapi_stub *stub, const struct mapi_stub *alias)
-{
- int slot;
-
- if (stub->slot >= 0)
- return;
-
- if (alias)
- slot = alias->slot;
- else
- slot = next_dynamic_slot++;
-
- entry_patch(stub->addr, slot);
- stub->slot = slot;
+ return stub;
}
/**
@@ -190,15 +103,7 @@ stub_fix_dynamic(struct mapi_stub *stub, const struct mapi_stub *alias)
const char *
stub_get_name(const struct mapi_stub *stub)
{
- const char *name;
-
- if (stub >= public_stubs &&
- stub < public_stubs + ARRAY_SIZE(public_stubs))
- name = &public_string_pool[(size_t) stub->name];
- else
- name = (const char *) stub->name;
-
- return name;
+ return &public_string_pool[stub->name_offset];
}
/**
@@ -216,6 +121,5 @@ stub_get_slot(const struct mapi_stub *stub)
mapi_func
stub_get_addr(const struct mapi_stub *stub)
{
- assert(stub->addr || (unsigned int) stub->slot < MAPI_TABLE_NUM_STATIC);
- return (stub->addr) ? stub->addr : entry_get_public(stub->slot);
+ return entry_get_public(stub->slot);
}
diff --git a/lib/mesa/src/mapi/shared-glapi/stub.h b/lib/mesa/src/mapi/shared-glapi/stub.h
index 953a0fae5..4a0e0d866 100644
--- a/lib/mesa/src/mapi/shared-glapi/stub.h
+++ b/lib/mesa/src/mapi/shared-glapi/stub.h
@@ -38,15 +38,9 @@ stub_init_once(void);
const struct mapi_stub *
stub_find_public(const char *name);
-struct mapi_stub *
-stub_find_dynamic(const char *name, int generate);
-
const struct mapi_stub *
stub_find_by_slot(int slot);
-void
-stub_fix_dynamic(struct mapi_stub *stub, const struct mapi_stub *alias);
-
const char *
stub_get_name(const struct mapi_stub *stub);