summaryrefslogtreecommitdiff
path: root/xc/extras/Mesa/src/Trace/tr_control.c
diff options
context:
space:
mode:
Diffstat (limited to 'xc/extras/Mesa/src/Trace/tr_control.c')
-rw-r--r--xc/extras/Mesa/src/Trace/tr_control.c147
1 files changed, 147 insertions, 0 deletions
diff --git a/xc/extras/Mesa/src/Trace/tr_control.c b/xc/extras/Mesa/src/Trace/tr_control.c
new file mode 100644
index 000000000..ff67b15c3
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_control.c
@@ -0,0 +1,147 @@
+#ifdef MESA_TRACE
+#include "glheader.h"
+#include "glapi.h"
+#include "context.h" /* for _mesa_error */
+#include "mtypes.h"
+#include "tr_context.h"
+#include "tr_write.h"
+
+
+void glEnableTraceMESA( GLbitfield mask )
+{
+ trace_context_t * tctx = trCtx();
+
+ tctx->traceEnableLogBits = mask;
+ tctx->traceEnabled = GL_TRUE;
+}
+
+
+void glDisableTraceMESA( GLbitfield mask )
+{
+ /* Reset traceEnableLogBits ? */
+ trCtx()->traceEnabled = GL_FALSE;
+}
+
+
+void glNewTraceMESA( GLbitfield logbits, const GLubyte * traceName )
+{
+ char * newname;
+ GLint length;
+ GLcontext * ctx;
+ const char * defaultName = "traceGL";
+
+ ctx = (GLcontext *)_glapi_get_context();
+
+ assert(ctx);
+ assert(ctx->TraceCtx);
+ assert(ctx->TraceDispatch);
+ if( !ctx || /* Do we even have a context ? */
+ (ctx->TraceCtx->betweenBeginEnd == GL_TRUE) || /* Are we currently between glBegin and glEnd ? */
+ (ctx->TraceDispatch == _glapi_get_override_dispatch(1)) ) { /* Has a trace already started ? */
+ _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__ );
+ return;
+ }
+
+ /* FIXME!!! When do we free tracename after the app is finished? */
+ if( ctx->TraceCtx->traceName ) {
+ free( ctx->TraceCtx->traceName );
+ }
+
+ length = strlen((char *)traceName) + 1;
+ if( length != 1 ) {
+ newname = (char *)malloc( length );
+ strncpy( (char *)newname, (char *)traceName, length );
+ } else {
+ length = strlen( defaultName );
+ newname = (char *)malloc( length );
+ strncpy( (char *)newname, defaultName, length );
+ }
+ ctx->TraceCtx->traceName = newname;
+ ctx->TraceCtx->traceAttribLogBits = logbits;
+
+ trOpenLogFile();
+ trSetTraceDispatch();
+}
+
+
+void glEndTraceMESA(void)
+{
+ GLcontext * ctx;
+
+ ctx = (GLcontext *)_glapi_get_context();
+ assert(ctx);
+ assert(ctx->TraceCtx);
+ assert(ctx->TraceDispatch);
+
+ /* Do we even have a context ? */
+ /* Are we currently between glBegin and glEnd ? */
+ /* Are we sure the current dispatch _is_ the TraceDispatch ? */
+ if (!ctx ||
+ (ctx->TraceCtx->betweenBeginEnd == GL_TRUE) ||
+ (ctx->TraceDispatch != _glapi_get_override_dispatch(1)) ) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__ );
+ return;
+ }
+
+#if 0
+ /* Always dump the max indices */
+// But not yet...
+ trWriteCMD( VAR_COLORPOINTER );
+ trWritei( ctx->TraceCtx->trColorPtrState.maxIndex );
+ trWriteCMD( VAR_EDGEFLAGPOINTER );
+ trWritei( ctx->TraceCtx->trEdgeFlagPtrState.maxIndex );
+ trWriteCMD( VAR_INDEXPOINTER );
+ trWritei( ctx->TraceCtx->trIndexPtrState.maxIndex );
+ trWriteCMD( VAR_NORMALPOINTER );
+ trWritei( ctx->TraceCtx->trNormalPtrState.maxIndex );
+ trWriteCMD( VAR_TEXCOORDPOINTER );
+ trWritei( ctx->TraceCtx->trTexCoordPtrState.maxIndex );
+ trWriteCMD( VAR_VERTEXPOINTER );
+ trWritei( ctx->TraceCtx->trVertexPtrState.maxIndex );
+#endif
+
+ trCloseLogFile();
+ trSetOriginalDispatch();
+}
+
+
+void glTraceAssertAttribMESA( GLbitfield attribMask )
+{
+#warning TraceAssertAttrib not implemented
+}
+
+
+void glTraceCommentMESA( const GLubyte * comment )
+{
+ trWriteString( (char *)comment );
+}
+
+
+void glTraceTextureMESA( GLuint name, const GLubyte* comment )
+{
+#warning TraceTexture not implemented
+}
+
+void glTraceListMESA( GLuint name, const GLubyte* comment )
+{
+#warning TraceList not implemented
+}
+
+
+void glTracePointerMESA( GLvoid* pointer, const GLubyte* comment )
+{
+#warning TracePointer not implemented
+}
+
+
+void glTracePointerRangeMESA( const GLvoid* first, const GLvoid* last, const GLubyte* comment )
+{
+#warning TracePointerRange not implemented
+}
+
+#else
+extern void tr_control_dummy_func(void);
+void tr_control_dummy_func(void)
+{
+}
+#endif