glx: Remove noop dispatch table
We can never hit this, because the indirect GLX dispatch code always forces a current context and checks that it's non-NULL before calling into the dispatch table. If it's _not_ null, then _glapi_set_context will call into the driver, which is responsible for calling _glapi_set_dispatch to make sure the dispatch table is non-NULL. Also remove _glapi_set_warning_func and friends, since we can no longer call them even from dead code. Reviewed-by: Dave Airlie <airlied@redhat.com> Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
		
							parent
							
								
									a095a6d4e8
								
							
						
					
					
						commit
						b0c665ac0f
					
				| 
						 | 
				
			
			@ -41,7 +41,6 @@ glapi_sources =					\
 | 
			
		|||
	indirect_table.c			\
 | 
			
		||||
	dispatch.h				\
 | 
			
		||||
	glapitable.h				\
 | 
			
		||||
	glapitemp.h				\
 | 
			
		||||
	glapi.c					\
 | 
			
		||||
	glapi.h					\
 | 
			
		||||
	glapioffsets.h				\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										92
									
								
								glx/glapi.c
								
								
								
								
							
							
						
						
									
										92
									
								
								glx/glapi.c
								
								
								
								
							| 
						 | 
				
			
			@ -72,11 +72,6 @@
 | 
			
		|||
#include "glapioffsets.h"
 | 
			
		||||
#include "glapitable.h"
 | 
			
		||||
 | 
			
		||||
/***** BEGIN NO-OP DISPATCH *****/
 | 
			
		||||
 | 
			
		||||
static GLboolean WarnFlag = GL_FALSE;
 | 
			
		||||
static _glapi_warning_func warning_func;
 | 
			
		||||
 | 
			
		||||
#if defined(PTHREADS) || defined(GLX_USE_TLS)
 | 
			
		||||
static void init_glapi_relocs(void);
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -84,79 +79,6 @@ static void init_glapi_relocs(void);
 | 
			
		|||
static _glapi_proc generate_entrypoint(GLuint functionOffset);
 | 
			
		||||
static void fill_in_entrypoint_offset(_glapi_proc entrypoint, GLuint offset);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Enable/disable printing of warning messages.
 | 
			
		||||
 */
 | 
			
		||||
PUBLIC void
 | 
			
		||||
_glapi_noop_enable_warnings(GLboolean enable)
 | 
			
		||||
{
 | 
			
		||||
   WarnFlag = enable;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Register a callback function for reporting errors.
 | 
			
		||||
 */
 | 
			
		||||
PUBLIC void
 | 
			
		||||
_glapi_set_warning_func( _glapi_warning_func func )
 | 
			
		||||
{
 | 
			
		||||
   warning_func = func;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static GLboolean
 | 
			
		||||
warn(void)
 | 
			
		||||
{
 | 
			
		||||
   if ((WarnFlag || getenv("MESA_DEBUG") || getenv("LIBGL_DEBUG"))
 | 
			
		||||
       && warning_func) {
 | 
			
		||||
      return GL_TRUE;
 | 
			
		||||
   }
 | 
			
		||||
   else {
 | 
			
		||||
      return GL_FALSE;
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if defined(__GNUC__) && (__GNUC__ > 2)
 | 
			
		||||
#define possibly_unused __attribute((unused))
 | 
			
		||||
#else
 | 
			
		||||
#define possibly_unused
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define KEYWORD1 static
 | 
			
		||||
#define KEYWORD1_ALT static
 | 
			
		||||
#define KEYWORD2 GLAPIENTRY possibly_unused
 | 
			
		||||
#define NAME(func)  NoOp##func
 | 
			
		||||
 | 
			
		||||
#define F NULL
 | 
			
		||||
 | 
			
		||||
#define DISPATCH(func, args, msg)					      \
 | 
			
		||||
   if (warn()) {							      \
 | 
			
		||||
      warning_func(NULL, "GL User Error: called without context: %s", #func); \
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
#define RETURN_DISPATCH(func, args, msg)				      \
 | 
			
		||||
   if (warn()) {							      \
 | 
			
		||||
      warning_func(NULL, "GL User Error: called without context: %s", #func); \
 | 
			
		||||
   }									      \
 | 
			
		||||
   return 0
 | 
			
		||||
 | 
			
		||||
#define DISPATCH_TABLE_NAME __glapi_noop_table
 | 
			
		||||
#define UNUSED_TABLE_NAME __unused_noop_functions
 | 
			
		||||
 | 
			
		||||
#define TABLE_ENTRY(name) (_glapi_proc) NoOp##name
 | 
			
		||||
 | 
			
		||||
static GLint NoOpUnused(void)
 | 
			
		||||
{
 | 
			
		||||
   if (warn()) {
 | 
			
		||||
      warning_func(NULL, "GL User Error: calling extension function without a current context\n");
 | 
			
		||||
   }
 | 
			
		||||
   return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#include "glapitemp.h"
 | 
			
		||||
 | 
			
		||||
/***** END NO-OP DISPATCH *****/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \name Current dispatch and current context control variables
 | 
			
		||||
 *
 | 
			
		||||
| 
						 | 
				
			
			@ -185,8 +107,7 @@ static GLint NoOpUnused(void)
 | 
			
		|||
#if defined(GLX_USE_TLS)
 | 
			
		||||
 | 
			
		||||
PUBLIC TLS struct _glapi_table * _glapi_tls_Dispatch
 | 
			
		||||
    __attribute__((tls_model("initial-exec")))
 | 
			
		||||
    = (struct _glapi_table *) __glapi_noop_table;
 | 
			
		||||
    __attribute__((tls_model("initial-exec"))) = NULL;
 | 
			
		||||
 | 
			
		||||
PUBLIC TLS void * _glapi_tls_Context
 | 
			
		||||
    __attribute__((tls_model("initial-exec")));
 | 
			
		||||
| 
						 | 
				
			
			@ -212,8 +133,7 @@ void FreeAllTSD(void)
 | 
			
		|||
 | 
			
		||||
#endif /* defined(THREADS) */
 | 
			
		||||
 | 
			
		||||
PUBLIC struct _glapi_table *_glapi_Dispatch = 
 | 
			
		||||
  (struct _glapi_table *) __glapi_noop_table;
 | 
			
		||||
PUBLIC struct _glapi_table *_glapi_Dispatch = NULL;
 | 
			
		||||
PUBLIC void *_glapi_Context = NULL;
 | 
			
		||||
 | 
			
		||||
#endif /* defined(GLX_USE_TLS) */
 | 
			
		||||
| 
						 | 
				
			
			@ -252,7 +172,6 @@ _glapi_check_multithread(void)
 | 
			
		|||
PUBLIC void
 | 
			
		||||
_glapi_set_context(void *context)
 | 
			
		||||
{
 | 
			
		||||
   (void) __unused_noop_functions; /* silence a warning */
 | 
			
		||||
#if defined(GLX_USE_TLS)
 | 
			
		||||
   _glapi_tls_Context = context;
 | 
			
		||||
#elif defined(THREADS)
 | 
			
		||||
| 
						 | 
				
			
			@ -284,8 +203,6 @@ _glapi_get_context(void)
 | 
			
		|||
 | 
			
		||||
/**
 | 
			
		||||
 * Set the global or per-thread dispatch table pointer.
 | 
			
		||||
 * If the dispatch parameter is NULL we'll plug in the no-op dispatch
 | 
			
		||||
 * table (__glapi_noop_table).
 | 
			
		||||
 */
 | 
			
		||||
PUBLIC void
 | 
			
		||||
_glapi_set_dispatch(struct _glapi_table *dispatch)
 | 
			
		||||
| 
						 | 
				
			
			@ -295,11 +212,6 @@ _glapi_set_dispatch(struct _glapi_table *dispatch)
 | 
			
		|||
   pthread_once( & once_control, init_glapi_relocs );
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
   if (!dispatch) {
 | 
			
		||||
      /* use the no-op functions */
 | 
			
		||||
      dispatch = (struct _glapi_table *) __glapi_noop_table;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
#if defined(GLX_USE_TLS)
 | 
			
		||||
   _glapi_tls_Dispatch = dispatch;
 | 
			
		||||
#elif defined(THREADS)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -106,12 +106,6 @@ extern struct _glapi_table *_glapi_Dispatch;
 | 
			
		|||
 ** GL API public functions
 | 
			
		||||
 **/
 | 
			
		||||
 | 
			
		||||
extern void
 | 
			
		||||
_glapi_noop_enable_warnings(GLboolean enable);
 | 
			
		||||
 | 
			
		||||
extern void
 | 
			
		||||
_glapi_set_warning_func(_glapi_warning_func func);
 | 
			
		||||
 | 
			
		||||
extern void
 | 
			
		||||
_glapi_check_multithread(void);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										6655
									
								
								glx/glapitemp.h
								
								
								
								
							
							
						
						
									
										6655
									
								
								glx/glapitemp.h
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -681,17 +681,8 @@ GLuint __glFloorLog2(GLuint val)
 | 
			
		|||
    return c;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void warn_func(void * p1, char *format, ...) {
 | 
			
		||||
    va_list v;
 | 
			
		||||
    va_start(v, format);
 | 
			
		||||
    vfprintf(stderr, format, v);
 | 
			
		||||
    va_end(v);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void setup_dispatch_table(void) {
 | 
			
		||||
    struct _glapi_table *disp=_glapi_get_dispatch();
 | 
			
		||||
    _glapi_set_warning_func((_glapi_warning_func)warn_func);
 | 
			
		||||
    _glapi_noop_enable_warnings(TRUE);
 | 
			
		||||
 | 
			
		||||
    /* to update:
 | 
			
		||||
     * for f in $(grep 'define SET_' ../../../glx/dispatch.h  | cut -f2 -d' ' | cut -f1 -d\( | sort -u); do grep -q $f indirect.c || echo $f ; done | grep -v by_offset | sed 's:SET_\(.*\)$:SET_\1(disp, gl\1)\;:' | pbcopy
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue