diff options
author | brianp <brianp> | 2000-01-30 00:27:01 +0000 |
---|---|---|
committer | brianp <brianp> | 2000-01-30 00:27:01 +0000 |
commit | 713d446c68c05d534c848cd22ad2f6663ed9e960 (patch) | |
tree | 8330044e6bc178c6a7e3851547c8341f773700e8 /xc/extras/Mesa/src/context.h | |
parent | 67eb4e0b8d9308db3496a2a52f8cf98463f3305f (diff) |
Merged dispatch-0-0-1dispatch-0-0-1-20000129-merge
Diffstat (limited to 'xc/extras/Mesa/src/context.h')
-rw-r--r-- | xc/extras/Mesa/src/context.h | 111 |
1 files changed, 73 insertions, 38 deletions
diff --git a/xc/extras/Mesa/src/context.h b/xc/extras/Mesa/src/context.h index 382e2a4bc..ee8d74b6e 100644 --- a/xc/extras/Mesa/src/context.h +++ b/xc/extras/Mesa/src/context.h @@ -1,10 +1,10 @@ -/* $Id: context.h,v 1.3 1999/12/14 02:39:38 daryll Exp $ */ +/* $Id: context.h,v 1.4 2000/01/30 00:27:01 brianp Exp $ */ /* * Mesa 3-D graphics library - * Version: 3.1 + * Version: 3.3 * - * Copyright (C) 1999 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2000 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"), @@ -25,32 +25,14 @@ */ - - - #ifndef CONTEXT_H #define CONTEXT_H +#include "glapi.h" #include "types.h" - -#ifdef THREADS - /* - * A seperate GLcontext for each thread - */ - extern GLcontext *gl_get_thread_context( void ); -#else - /* - * All threads use same pointer to current context. - */ - extern GLcontext *CC; - extern struct immediate *CURRENT_INPUT; -#endif - - - /* * There are three Mesa datatypes which are meant to be used by device * drivers: @@ -92,6 +74,21 @@ extern void gl_destroy_visual( GLvisual *vis ); /* + * Create/destroy a GLframebuffer. A GLframebuffer is like a GLX drawable. + * It bundles up the depth buffer, stencil buffer and accum buffers into a + * single entity. + */ +extern GLframebuffer *gl_create_framebuffer( GLvisual *visual, + GLboolean softwareDepth, + GLboolean softwareStencil, + GLboolean softwareAccum, + GLboolean softwareAlpha ); + +extern void gl_destroy_framebuffer( GLframebuffer *buffer ); + + + +/* * Create/destroy a GLcontext. A GLcontext is like a GLX context. It * contains the rendering state. */ @@ -100,38 +97,78 @@ extern GLcontext *gl_create_context( GLvisual *visual, void *driver_ctx, GLboolean direct); +extern GLboolean gl_initialize_context_data( GLcontext *ctx, + GLvisual *visual, + GLcontext *share_list, + void *driver_ctx, + GLboolean direct ); + +extern void gl_free_context_data( GLcontext *ctx ); + extern void gl_destroy_context( GLcontext *ctx ); -/* Called by the driver after both the context and driver are fully - * initialized. Currently just reads the config file. - */ + extern void gl_context_initialize( GLcontext *ctx ); + +extern void gl_copy_context(const GLcontext *src, GLcontext *dst, GLuint mask); + + +extern void gl_make_current( GLcontext *ctx, GLframebuffer *buffer ); + + +extern void gl_make_current2( GLcontext *ctx, GLframebuffer *drawBuffer, + GLframebuffer *readBuffer ); + + +extern GLcontext *gl_get_current_context(void); + + /* - * Create/destroy a GLframebuffer. A GLframebuffer is like a GLX drawable. - * It bundles up the depth buffer, stencil buffer and accum buffers into a - * single entity. + * Macros for fetching current context, input buffer, etc. */ -extern GLframebuffer *gl_create_framebuffer( GLvisual *visual ); +#ifdef THREADS -extern void gl_destroy_framebuffer( GLframebuffer *buffer ); +#define GET_CURRENT_CONTEXT(C) GLcontext *C = (GLcontext *) (_glapi_Context ? _glapi_Context : _glapi_get_context()) +#define GET_IMMEDIATE struct immediate *IM = ((GLcontext *) (_glapi_Context ? _glapi_Context : _glapi_get_context()))->input +#define SET_IMMEDIATE(ctx, im) \ +do { \ + ctx->input = im; \ +} while (0) -extern void gl_make_current( GLcontext *ctx, GLframebuffer *buffer ); +#else -extern GLcontext *gl_get_current_context(void); +extern struct immediate *_mesa_CurrentInput; -extern void gl_copy_context(const GLcontext *src, GLcontext *dst, GLuint mask); +#define GET_CURRENT_CONTEXT(C) GLcontext *C = _glapi_Context + +#define GET_IMMEDIATE struct immediate *IM = _mesa_CurrentInput + +#define SET_IMMEDIATE(ctx, im) \ +do { \ + ctx->input = im; \ + _mesa_CurrentInput = im; \ +} while (0) + +#endif -extern void gl_set_api_table( GLcontext *ctx, const struct gl_api_table *api ); + + +extern void +_mesa_swapbuffers(GLcontext *ctx); + + +extern struct _glapi_table * +_mesa_get_dispatch(GLcontext *ctx); /* * GL_MESA_resize_buffers extension */ -extern void gl_ResizeBuffersMESA( GLcontext *ctx ); +extern void _mesa_ResizeBuffersMESA( void ); @@ -144,10 +181,8 @@ extern void gl_problem( const GLcontext *ctx, const char *s ); extern void gl_warning( const GLcontext *ctx, const char *s ); extern void gl_error( GLcontext *ctx, GLenum error, const char *s ); -extern void gl_compile_error( GLcontext *ctx, GLenum error, const char *s ); - -extern GLenum gl_GetError( GLcontext *ctx ); +extern void gl_compile_error( GLcontext *ctx, GLenum error, const char *s ); extern void gl_update_state( GLcontext *ctx ); |