-/* $Id: dispatch.c,v 1.22 2001/03/28 17:20:20 brianp Exp $ */
-
/*
* Mesa 3-D graphics library
- * Version: 3.5
+ * Version: 6.3
*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
*/
-/*
- * This file generates all the gl* function entyrpoints.
- * But if we're using X86-optimized dispatch (X86/glapi_x86.S) then
- * we don't use this file's code.
+/**
+ * \file dispatch.c
*
- * Eventually this file may be replaced by automatically generated
- * code from an API spec file.
+ * This file generates all the gl* function entrypoints. This code is not
+ * used if optimized assembly stubs are available (e.g., using x86/glapi_x86.S
+ * on IA32 or sparc/glapi_sparc.S on SPARC).
*
- * NOTE: This file should _not_ be used when compiling Mesa for a DRI-
- * based device driver.
+ * \note
+ * This file is also used to build the client-side libGL that loads DRI-based
+ * device drivers. At build-time it is symlinked to src/glx/x11.
*
+ * \author Brian Paul <brian@precisioninsight.com>
*/
+#ifndef GLX_USE_APPLEGL
-#ifdef PC_HEADER
-#include "all.h"
-#else
#include "glheader.h"
#include "glapi.h"
#include "glapitable.h"
#include "glthread.h"
-#endif
-#if !defined(USE_X86_ASM)
-#define KEYWORD1
+#if !(defined(USE_X86_ASM) || defined(USE_X86_64_ASM) || defined(USE_SPARC_ASM))
+
+#if defined(WIN32)
+#define KEYWORD1 GLAPI
+#else
+#define KEYWORD1 PUBLIC
+#endif
+
#define KEYWORD2 GLAPIENTRY
+
#if defined(USE_MGL_NAMESPACE)
#define NAME(func) mgl##func
#else
#define NAME(func) gl##func
#endif
+#if 0 /* Use this to log GL calls to stdout (for DEBUG only!) */
+
+#define F stdout
#define DISPATCH(FUNC, ARGS, MESSAGE) \
- (_glapi_Dispatch->FUNC) ARGS
+ fprintf MESSAGE; \
+ CALL_ ## FUNC(GET_DISPATCH(), ARGS);
#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \
- return (_glapi_Dispatch->FUNC) ARGS
+ fprintf MESSAGE; \
+ return CALL_ ## FUNC(GET_DISPATCH(), ARGS);
+
+#else
+
+#define DISPATCH(FUNC, ARGS, MESSAGE) \
+ CALL_ ## FUNC(GET_DISPATCH(), ARGS);
+
+#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \
+ return CALL_ ## FUNC(GET_DISPATCH(), ARGS);
+
+#endif /* logging */
#ifndef GLAPIENTRY
#define GLAPIENTRY
#endif
+#include "dispatch.h"
#include "glapitemp.h"
-
#endif /* USE_X86_ASM */
+
+#endif /* !GLX_USE_APPLEGL */