X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fcontext.h;h=099912aa15259d707cc5c2977b0d15ba092b17ac;hb=ff938bf059a41a9bdf4c2c93cebe4a3b8a89c201;hp=b4d3a4750ba28672f8e4c1dd9cda80e24e24cbe9;hpb=4e2de9531e4869edf12536c2cb37d3145ee4065c;p=mesa.git diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h index b4d3a4750ba..099912aa152 100644 --- a/src/mesa/main/context.h +++ b/src/mesa/main/context.h @@ -1,29 +1,8 @@ -/** - * \file context.h - * Mesa context/visual/framebuffer management functions. - * - * There are three Mesa data types which are meant to be used by device - * drivers: - * - GLcontext: this contains the Mesa rendering state - * - GLvisual: this describes the color buffer (RGB vs. ci), whether or not - * there's a depth buffer, stencil buffer, etc. - * - GLframebuffer: contains pointers to the depth buffer, stencil buffer, - * accum buffer and alpha buffers. - * - * These types should be encapsulated by corresponding device driver - * data types. See xmesa.h and xmesaP.h for an example. - * - * In OOP terms, GLcontext, GLvisual, and GLframebuffer are base classes - * which the device driver must derive from. - * - * The following functions create and destroy these data types. - */ - /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.5.1 * - * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2006 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"), @@ -44,17 +23,38 @@ */ +/** + * \file context.h + * Mesa context and visual-related functions. + * + * There are three large Mesa data types/classes which are meant to be + * used by device drivers: + * - GLcontext: this contains the Mesa rendering state + * - GLvisual: this describes the color buffer (RGB vs. ci), whether or not + * there's a depth buffer, stencil buffer, etc. + * - GLframebuffer: contains pointers to the depth buffer, stencil buffer, + * accum buffer and alpha buffers. + * + * These types should be encapsulated by corresponding device driver + * data types. See xmesa.h and xmesaP.h for an example. + * + * In OOP terms, GLcontext, GLvisual, and GLframebuffer are base classes + * which the device driver must derive from. + * + * The following functions create and destroy these data types. + */ + + #ifndef CONTEXT_H #define CONTEXT_H -#include "glapi.h" +#include "glapi/glapi.h" #include "imports.h" #include "mtypes.h" -/**********************************************************************/ -/** \name Create/destroy a GLvisual. */ +/** \name Visual-related functions */ /*@{*/ extern GLvisual * @@ -98,8 +98,7 @@ _mesa_destroy_visual( GLvisual *vis ); /*@}*/ -/**********************************************************************/ -/** \name Create/destroy a GLcontext. */ +/** \name Context-related functions */ /*@{*/ extern GLcontext * @@ -139,62 +138,21 @@ _mesa_get_current_context(void); /*@}*/ -/**********************************************************************/ -/** \name OpenGL SI-style export functions. */ -/*@{*/ - -extern GLboolean -_mesa_destroyContext(__GLcontext *gc); - -extern GLboolean -_mesa_loseCurrent(__GLcontext *gc); - -extern GLboolean -_mesa_makeCurrent(__GLcontext *gc); - -extern GLboolean -_mesa_shareContext(__GLcontext *gc, __GLcontext *gcShare); - -extern GLboolean -_mesa_copyContext(__GLcontext *dst, const __GLcontext *src, GLuint mask); - -extern GLboolean -_mesa_forceCurrent(__GLcontext *gc); - -extern GLboolean -_mesa_notifyResize(__GLcontext *gc); - -extern void -_mesa_notifyDestroy(__GLcontext *gc); - extern void _mesa_notifySwapBuffers(__GLcontext *gc); -extern struct __GLdispatchStateRec * -_mesa_dispatchExec(__GLcontext *gc); - -extern void -_mesa_beginDispatchOverride(__GLcontext *gc); - -extern void -_mesa_endDispatchOverride(__GLcontext *gc); - -/*@}*/ - extern struct _glapi_table * _mesa_get_dispatch(GLcontext *ctx); -/**********************************************************************/ /** \name Miscellaneous */ /*@{*/ extern void _mesa_record_error( GLcontext *ctx, GLenum error ); - extern void GLAPIENTRY _mesa_Finish( void ); @@ -205,11 +163,12 @@ _mesa_Flush( void ); -/**********************************************************************/ -/** \name Macros for contexts/flushing. */ +/** + * \name Macros for flushing buffered rendering commands before state changes, + * checking if inside glBegin/glEnd, etc. + */ /*@{*/ - /** * Flush vertices. * @@ -258,7 +217,7 @@ do { \ #define ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, retval) \ do { \ if (ctx->Driver.CurrentExecPrimitive != PRIM_OUTSIDE_BEGIN_END) { \ - _mesa_error( ctx, GL_INVALID_OPERATION, "begin/end" ); \ + _mesa_error(ctx, GL_INVALID_OPERATION, "Inside glBegin/glEnd"); \ return retval; \ } \ } while (0) @@ -272,7 +231,7 @@ do { \ #define ASSERT_OUTSIDE_BEGIN_END(ctx) \ do { \ if (ctx->Driver.CurrentExecPrimitive != PRIM_OUTSIDE_BEGIN_END) { \ - _mesa_error( ctx, GL_INVALID_OPERATION, "begin/end" ); \ + _mesa_error(ctx, GL_INVALID_OPERATION, "Inside glBegin/glEnd"); \ return; \ } \ } while (0) @@ -302,7 +261,6 @@ do { \ FLUSH_VERTICES(ctx, 0); \ } while (0) - /*@}*/ @@ -321,4 +279,12 @@ do { \ ) +/** + * Is RGBA LogicOp enabled? + */ +#define RGBA_LOGICOP_ENABLED(CTX) \ + ((CTX)->Color.ColorLogicOpEnabled || \ + ((CTX)->Color.BlendEnabled && (CTX)->Color.BlendEquationRGB == GL_LOGIC_OP)) + + #endif /* CONTEXT_H */