dd.h

来自「mesa-6.5-minigui源码」· C头文件 代码 · 共 1,073 行 · 第 1/3 页

H
1,073
字号
/** * \file dd.h * Device driver interfaces. *//* * Mesa 3-D graphics library * Version:  6.5 * * Copyright (C) 1999-2005  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"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */#ifndef DD_INCLUDED#define DD_INCLUDED/* THIS FILE ONLY INCLUDED BY mtypes.h !!!!! */struct gl_pixelstore_attrib;struct mesa_display_list;/** * Device driver function table. * Core Mesa uses these function pointers to call into device drivers. * Most of these functions directly correspond to OpenGL state commands. * Core Mesa will call these functions after error checking has been done * so that the drivers don't have to worry about error testing. * * Vertex transformation/clipping/lighting is patched into the T&L module. * Rasterization functions are patched into the swrast module. * * Note: when new functions are added here, the drivers/common/driverfuncs.c * file should be updated too!!! */struct dd_function_table {   /**    * Return a string as needed by glGetString().    *    * Only the GL_RENDERER token must be implemented.  Otherwise, NULL can be    * returned.    */   const GLubyte * (*GetString)( GLcontext *ctx, GLenum name );   /**    * Notify the driver after Mesa has made some internal state changes.      *    * This is in addition to any state change callbacks Mesa may already have    * made.    */   void (*UpdateState)( GLcontext *ctx, GLbitfield new_state );   /**    * Get the width and height of the named buffer/window.    *    * Mesa uses this to determine when the driver's window size has changed.    */   void (*GetBufferSize)( GLframebuffer *buffer,                          GLuint *width, GLuint *height );   /**    * Resize the given framebuffer to the given size.    */   void (*ResizeBuffers)( GLcontext *ctx, GLframebuffer *fb,                          GLuint width, GLuint height);   /**    * Called whenever an error is generated.      *    * __GLcontextRec::ErrorValue contains the error value.    */   void (*Error)( GLcontext *ctx );   /**    * This is called whenever glFinish() is called.    */   void (*Finish)( GLcontext *ctx );   /**    * This is called whenever glFlush() is called.    */   void (*Flush)( GLcontext *ctx );   /**    * Clear the color/depth/stencil/accum buffer(s).    *    * \param mask a bitmask of the DD_*_BIT values defined above that indicates    * which buffers need to be cleared.    * \param all if true then clear the whole buffer, else clear only the    * region defined by <tt>(x, y, width, height)</tt>.    *     * This function must obey the glColorMask(), glIndexMask() and    * glStencilMask() settings!    * Software Mesa can do masked clears if the device driver can't.    */   void (*Clear)( GLcontext *ctx, GLbitfield mask, GLboolean all,		  GLint x, GLint y, GLint width, GLint height );   /**    * \name For hardware accumulation buffer    */   /*@{*/   /**    * Execute glAccum command within the given scissor region.    */   void (*Accum)( GLcontext *ctx, GLenum op, GLfloat value,		  GLint xpos, GLint ypos, GLint width, GLint height );   /*@}*/   /**    * \name glDraw(), glRead(), glCopyPixels() and glBitmap() functions    */   /*@{*/   /**    * This is called by glDrawPixels().    *    * \p unpack describes how to unpack the source image data.    */   void (*DrawPixels)( GLcontext *ctx,		       GLint x, GLint y, GLsizei width, GLsizei height,		       GLenum format, GLenum type,		       const struct gl_pixelstore_attrib *unpack,		       const GLvoid *pixels );   /**    * Called by glReadPixels().    */   void (*ReadPixels)( GLcontext *ctx,		       GLint x, GLint y, GLsizei width, GLsizei height,		       GLenum format, GLenum type,		       const struct gl_pixelstore_attrib *unpack,		       GLvoid *dest );   /**    * Do a glCopyPixels().      *    * This function must respect all rasterization state, glPixelTransfer(),    * glPixelZoom(), etc.    */   void (*CopyPixels)( GLcontext *ctx, GLint srcx, GLint srcy,                       GLsizei width, GLsizei height,                       GLint dstx, GLint dsty, GLenum type );   /**    * This is called by glBitmap().      *    * Works the same as dd_function_table::DrawPixels, above.    */   void (*Bitmap)( GLcontext *ctx,		   GLint x, GLint y, GLsizei width, GLsizei height,		   const struct gl_pixelstore_attrib *unpack,		   const GLubyte *bitmap );   /*@}*/      /**    * \name Texture image functions    */   /*@{*/   /**    * Choose texture format.    *     * This is called by the \c _mesa_store_tex[sub]image[123]d() fallback    * functions.  The driver should examine \p internalFormat and return a    * pointer to an appropriate gl_texture_format.    */   const struct gl_texture_format *(*ChooseTextureFormat)( GLcontext *ctx,                      GLint internalFormat, GLenum srcFormat, GLenum srcType );   /**    * Called by glTexImage1D().    *     * \param target user specified.    * \param format user specified.    * \param type user specified.    * \param pixels user specified.    * \param packing indicates the image packing of pixels.    * \param texObj is the target texture object.    * \param texImage is the target texture image.  It will have the texture \p    * width, \p height, \p depth, \p border and \p internalFormat information.    *     * \p retainInternalCopy is returned by this function and indicates whether    * core Mesa should keep an internal copy of the texture image.    *    * Drivers should call a fallback routine from texstore.c if needed.    */   void (*TexImage1D)( GLcontext *ctx, GLenum target, GLint level,                       GLint internalFormat,                       GLint width, GLint border,                       GLenum format, GLenum type, const GLvoid *pixels,                       const struct gl_pixelstore_attrib *packing,                       struct gl_texture_object *texObj,                       struct gl_texture_image *texImage );   /**    * Called by glTexImage2D().    *     * \sa dd_function_table::TexImage1D.    */   void (*TexImage2D)( GLcontext *ctx, GLenum target, GLint level,                       GLint internalFormat,                       GLint width, GLint height, GLint border,                       GLenum format, GLenum type, const GLvoid *pixels,                       const struct gl_pixelstore_attrib *packing,                       struct gl_texture_object *texObj,                       struct gl_texture_image *texImage );      /**    * Called by glTexImage3D().    *     * \sa dd_function_table::TexImage1D.    */   void (*TexImage3D)( GLcontext *ctx, GLenum target, GLint level,                       GLint internalFormat,                       GLint width, GLint height, GLint depth, GLint border,                       GLenum format, GLenum type, const GLvoid *pixels,                       const struct gl_pixelstore_attrib *packing,                       struct gl_texture_object *texObj,                       struct gl_texture_image *texImage );   /**    * Called by glTexSubImage1D().    *    * \param target user specified.    * \param level user specified.    * \param xoffset user specified.    * \param yoffset user specified.    * \param zoffset user specified.    * \param width user specified.    * \param height user specified.    * \param depth user specified.    * \param format user specified.    * \param type user specified.    * \param pixels user specified.    * \param packing indicates the image packing of pixels.    * \param texObj is the target texture object.    * \param texImage is the target texture image.  It will have the texture \p    * width, \p height, \p border and \p internalFormat information.    *    * The driver should use a fallback routine from texstore.c if needed.    */   void (*TexSubImage1D)( GLcontext *ctx, GLenum target, GLint level,                          GLint xoffset, GLsizei width,                          GLenum format, GLenum type,                          const GLvoid *pixels,                          const struct gl_pixelstore_attrib *packing,                          struct gl_texture_object *texObj,                          struct gl_texture_image *texImage );      /**    * Called by glTexSubImage2D().    *    * \sa dd_function_table::TexSubImage1D.    */   void (*TexSubImage2D)( GLcontext *ctx, GLenum target, GLint level,                          GLint xoffset, GLint yoffset,                          GLsizei width, GLsizei height,                          GLenum format, GLenum type,                          const GLvoid *pixels,                          const struct gl_pixelstore_attrib *packing,                          struct gl_texture_object *texObj,                          struct gl_texture_image *texImage );      /**    * Called by glTexSubImage3D().    *    * \sa dd_function_table::TexSubImage1D.    */   void (*TexSubImage3D)( GLcontext *ctx, GLenum target, GLint level,                          GLint xoffset, GLint yoffset, GLint zoffset,                          GLsizei width, GLsizei height, GLint depth,                          GLenum format, GLenum type,                          const GLvoid *pixels,                          const struct gl_pixelstore_attrib *packing,                          struct gl_texture_object *texObj,                          struct gl_texture_image *texImage );   /**    * Called by glGetTexImage().    */   void (*GetTexImage)( GLcontext *ctx, GLenum target, GLint level,                        GLenum format, GLenum type, GLvoid *pixels,                        struct gl_texture_object *texObj,                        struct gl_texture_image *texImage );   /**    * Called by glCopyTexImage1D().    *     * Drivers should use a fallback routine from texstore.c if needed.    */   void (*CopyTexImage1D)( GLcontext *ctx, GLenum target, GLint level,                           GLenum internalFormat, GLint x, GLint y,                           GLsizei width, GLint border );   /**    * Called by glCopyTexImage2D().    *     * Drivers should use a fallback routine from texstore.c if needed.    */   void (*CopyTexImage2D)( GLcontext *ctx, GLenum target, GLint level,                           GLenum internalFormat, GLint x, GLint y,                           GLsizei width, GLsizei height, GLint border );   /**    * Called by glCopyTexSubImage1D().    *     * Drivers should use a fallback routine from texstore.c if needed.    */   void (*CopyTexSubImage1D)( GLcontext *ctx, GLenum target, GLint level,                              GLint xoffset,                              GLint x, GLint y, GLsizei width );   /**    * Called by glCopyTexSubImage2D().    *     * Drivers should use a fallback routine from texstore.c if needed.    */   void (*CopyTexSubImage2D)( GLcontext *ctx, GLenum target, GLint level,                              GLint xoffset, GLint yoffset,                              GLint x, GLint y,                              GLsizei width, GLsizei height );   /**    * Called by glCopyTexSubImage3D().    *     * Drivers should use a fallback routine from texstore.c if needed.    */   void (*CopyTexSubImage3D)( GLcontext *ctx, GLenum target, GLint level,                              GLint xoffset, GLint yoffset, GLint zoffset,                              GLint x, GLint y,                              GLsizei width, GLsizei height );   /**    * Called by glTexImage[123]D when user specifies a proxy texture    * target.      *    * \return GL_TRUE if the proxy test passes, or GL_FALSE if the test fails.    */   GLboolean (*TestProxyTexImage)(GLcontext *ctx, GLenum target,                                  GLint level, GLint internalFormat,

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?