Blame |
Last modification |
View Log
| RSS feed
#ifdef MESA_TRACE
#include "glheader.h"
#include "glapi.h"
#include "glapitable.h"
#include "context.h"
#include "tr_context.h"
/* Full precision on floats/double, else human readable. */
#define TR_FULL_PRECISION 0x000000001
void trInitContext
( trace_context_t
* tr_context
)
{
int i
;
if (!tr_context
)
return;
tr_context
->traceEnabled
= GL_FALSE
;
tr_context
->logFP
= stdout
;
tr_context
->traceName
= NULL
;
tr_context
->traceAttribLogBits
= GL_ALL_ATTRIB_BITS
;
tr_context
->traceEnableLogBits
= GL_TRACE_ALL_BITS_MESA
;
tr_context
->betweenBeginEnd
= GL_FALSE
;
tr_context
->framecounter
= 0;
tr_context
->trDoPrint
= GL_TRUE
;
tr_context
->doExec
= GL_TRUE
;
tr_context
->check_errors
= GL_TRUE
;
tr_context
->head_errors
= 0;
tr_context
->tail_errors
= 0;
for( i
= 0; i
< TR_MAX_QUEUED_ERRORS
; i
++ ) {
tr_context
->cached_errors
[i
] = GL_NO_ERROR
;
}
#if 0
tr_context
->doAsserts
= GL_TRUE
;
tr_context
->clientStateValid
= GL_FALSE
;
#endif
}
/**
* Get the current context.
*/
trace_context_t
* trCtx
() {
GLcontext
* ctx
;
ctx
= (GLcontext
*)_glapi_get_context
();
assert(ctx
);
assert(ctx
->TraceCtx
);
if( (!ctx
) || !(ctx
->TraceCtx
) ) {
_mesa_error
(ctx
, GL_INVALID_OPERATION
, __FUNCTION__
);
return NULL
;
}
return ctx
->TraceCtx
;
}
/**
* Get the current, real dispatch table pointer.
*/
struct _glapi_table
* trGetDispatch
() {
return _glapi_get_dispatch
();
}
void trSetTraceDispatch
( void ) {
GLcontext
* ctx
;
ctx
= (GLcontext
*)_glapi_get_context
();
assert( ctx
);
assert( ctx
->TraceCtx
);
assert( ctx
->TraceDispatch
);
ctx
->TraceCtx
->traceEnabled
= GL_TRUE
;
/* XXX save returned value */
(void) _glapi_begin_dispatch_override
(ctx
->TraceDispatch
);
}
void trSetOriginalDispatch
( void ) {
GLcontext
* ctx
;
ctx
= (GLcontext
*)_glapi_get_context
();
assert( ctx
);
assert( ctx
->TraceCtx
);
assert( ctx
->TraceDispatch
);
ctx
->TraceCtx
->traceEnabled
= GL_FALSE
;
/* XXX pass value we got from _glapi_begin_dispatch_override() */
_glapi_end_dispatch_override
(1);
}
/**
* Is error checking enabled?
*/
GLboolean trDoErrorCheck
() {
return trCtx
()->check_errors
;
}
#else
extern void tr_context_dummy_func
(void);
void tr_context_dummy_func
(void)
{
}
#endif