aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/mesa/main/remap.c
diff options
context:
space:
mode:
Diffstat (limited to 'mesalib/src/mesa/main/remap.c')
-rw-r--r--mesalib/src/mesa/main/remap.c64
1 files changed, 19 insertions, 45 deletions
diff --git a/mesalib/src/mesa/main/remap.c b/mesalib/src/mesa/main/remap.c
index 8d9df6b83..2341f8488 100644
--- a/mesalib/src/mesa/main/remap.c
+++ b/mesalib/src/mesa/main/remap.c
@@ -14,12 +14,13 @@
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
*/
@@ -35,25 +36,18 @@
* a dynamic entry, or the corresponding static entry, in glapi.
*/
-#include "remap.h"
-#include "imports.h"
-
-#include "main/dispatch.h"
-
+#include "mfeatures.h"
#if FEATURE_remap_table
-
-#define need_MESA_remap_table
-#include "main/remap_helper.h"
+#include "remap.h"
+#include "imports.h"
+#include "glapi/glapi.h"
#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
#define MAX_ENTRY_POINTS 16
-
-/* this is global for quick access */
-int driDispatchRemapTable[driDispatchRemapTable_size];
-
+static const char *_mesa_function_pool;
/**
* Return the spec string associated with the given function index.
@@ -66,10 +60,7 @@ int driDispatchRemapTable[driDispatchRemapTable_size];
const char *
_mesa_get_function_spec(GLint func_index)
{
- if (func_index < ARRAY_SIZE(_mesa_function_pool))
- return _mesa_function_pool + func_index;
- else
- return NULL;
+ return _mesa_function_pool + func_index;
}
@@ -161,32 +152,14 @@ _mesa_map_function_array(const struct gl_function_remap *func_array)
/**
- * Map the functions which are already static.
- *
- * When a extension function are incorporated into the ABI, the
- * extension suffix is usually stripped. Mapping such functions
- * makes sure the alternative names are available.
- *
- * Note that functions mapped by _mesa_init_remap_table() are
- * excluded.
- */
-void
-_mesa_map_static_functions(void)
-{
- /* Remap static functions which have alternative names and are in the ABI.
- * This is to be on the safe side. glapi should have defined those names.
- */
- _mesa_map_function_array(MESA_alt_functions);
-}
-
-
-/**
* Initialize the remap table. This is called in one_time_init().
* The remap table needs to be initialized before calling the
* CALL/GET/SET macros defined in main/dispatch.h.
*/
void
-_mesa_init_remap_table(void)
+_mesa_do_init_remap_table(const char *pool,
+ int size,
+ const struct gl_function_pool_remap *remap)
{
static GLboolean initialized = GL_FALSE;
GLint i;
@@ -194,15 +167,16 @@ _mesa_init_remap_table(void)
if (initialized)
return;
initialized = GL_TRUE;
+ _mesa_function_pool = pool;
/* initialize the remap table */
- for (i = 0; i < ARRAY_SIZE(driDispatchRemapTable); i++) {
+ for (i = 0; i < size; i++) {
GLint offset;
const char *spec;
/* sanity check */
- ASSERT(i == MESA_remap_table_functions[i].remap_index);
- spec = _mesa_function_pool + MESA_remap_table_functions[i].pool_index;
+ ASSERT(i == remap[i].remap_index);
+ spec = _mesa_function_pool + remap[i].pool_index;
offset = _mesa_map_function_spec(spec);
/* store the dispatch offset in the remap table */