Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * Mesa 3-D graphics library
  3.  * Version:  7.6
  4.  *
  5.  * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
  6.  * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
  7.  *
  8.  * Permission is hereby granted, free of charge, to any person obtaining a
  9.  * copy of this software and associated documentation files (the "Software"),
  10.  * to deal in the Software without restriction, including without limitation
  11.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  12.  * and/or sell copies of the Software, and to permit persons to whom the
  13.  * Software is furnished to do so, subject to the following conditions:
  14.  *
  15.  * The above copyright notice and this permission notice shall be included
  16.  * in all copies or substantial portions of the Software.
  17.  *
  18.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  19.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  20.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  21.  * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
  22.  * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  23.  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  24.  */
  25.  
  26.  
  27.  
  28. #ifndef BUFFEROBJ_H
  29. #define BUFFEROBJ_H
  30.  
  31.  
  32. #include "mtypes.h"
  33.  
  34.  
  35. /*
  36.  * Internal functions
  37.  */
  38.  
  39.  
  40. /** Is the given buffer object currently mapped? */
  41. static INLINE GLboolean
  42. _mesa_bufferobj_mapped(const struct gl_buffer_object *obj)
  43. {
  44.    return obj->Pointer != NULL;
  45. }
  46.  
  47. /**
  48.  * Is the given buffer object a user-created buffer object?
  49.  * Mesa uses default buffer objects in several places.  Default buffers
  50.  * always have Name==0.  User created buffers have Name!=0.
  51.  */
  52. static INLINE GLboolean
  53. _mesa_is_bufferobj(const struct gl_buffer_object *obj)
  54. {
  55.    return obj->Name != 0;
  56. }
  57.  
  58.  
  59. extern void
  60. _mesa_init_buffer_objects( struct gl_context *ctx );
  61.  
  62. extern void
  63. _mesa_free_buffer_objects( struct gl_context *ctx );
  64.  
  65. extern void
  66. _mesa_update_default_objects_buffer_objects(struct gl_context *ctx);
  67.  
  68.  
  69. extern struct gl_buffer_object *
  70. _mesa_lookup_bufferobj(struct gl_context *ctx, GLuint buffer);
  71.  
  72. extern void
  73. _mesa_initialize_buffer_object( struct gl_buffer_object *obj,
  74.                                 GLuint name, GLenum target );
  75.  
  76. extern void
  77. _mesa_reference_buffer_object(struct gl_context *ctx,
  78.                               struct gl_buffer_object **ptr,
  79.                               struct gl_buffer_object *bufObj);
  80.  
  81. extern GLboolean
  82. _mesa_validate_pbo_access(GLuint dimensions,
  83.                           const struct gl_pixelstore_attrib *pack,
  84.                           GLsizei width, GLsizei height, GLsizei depth,
  85.                           GLenum format, GLenum type, const GLvoid *ptr);
  86.  
  87. extern const GLvoid *
  88. _mesa_map_pbo_source(struct gl_context *ctx,
  89.                      const struct gl_pixelstore_attrib *unpack,
  90.                      const GLvoid *src);
  91.  
  92. extern const GLvoid *
  93. _mesa_map_validate_pbo_source(struct gl_context *ctx,
  94.                               GLuint dimensions,
  95.                               const struct gl_pixelstore_attrib *unpack,
  96.                               GLsizei width, GLsizei height, GLsizei depth,
  97.                               GLenum format, GLenum type, const GLvoid *ptr,
  98.                               const char *where);
  99.  
  100. extern void
  101. _mesa_unmap_pbo_source(struct gl_context *ctx,
  102.                        const struct gl_pixelstore_attrib *unpack);
  103.  
  104. extern void *
  105. _mesa_map_pbo_dest(struct gl_context *ctx,
  106.                    const struct gl_pixelstore_attrib *pack,
  107.                    GLvoid *dest);
  108.  
  109. extern GLvoid *
  110. _mesa_map_validate_pbo_dest(struct gl_context *ctx,
  111.                             GLuint dimensions,
  112.                             const struct gl_pixelstore_attrib *unpack,
  113.                             GLsizei width, GLsizei height, GLsizei depth,
  114.                             GLenum format, GLenum type, GLvoid *ptr,
  115.                             const char *where);
  116.  
  117. extern void
  118. _mesa_unmap_pbo_dest(struct gl_context *ctx,
  119.                      const struct gl_pixelstore_attrib *pack);
  120.  
  121.  
  122. extern void
  123. _mesa_init_buffer_object_functions(struct dd_function_table *driver);
  124.  
  125.  
  126. /*
  127.  * API functions
  128.  */
  129.  
  130. extern void GLAPIENTRY
  131. _mesa_BindBufferARB(GLenum target, GLuint buffer);
  132.  
  133. extern void GLAPIENTRY
  134. _mesa_DeleteBuffersARB(GLsizei n, const GLuint * buffer);
  135.  
  136. extern void GLAPIENTRY
  137. _mesa_GenBuffersARB(GLsizei n, GLuint * buffer);
  138.  
  139. extern GLboolean GLAPIENTRY
  140. _mesa_IsBufferARB(GLuint buffer);
  141.  
  142. extern void GLAPIENTRY
  143. _mesa_BufferDataARB(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage);
  144.  
  145. extern void GLAPIENTRY
  146. _mesa_BufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data);
  147.  
  148. extern void GLAPIENTRY
  149. _mesa_GetBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void * data);
  150.  
  151. extern void * GLAPIENTRY
  152. _mesa_MapBufferARB(GLenum target, GLenum access);
  153.  
  154. extern GLboolean GLAPIENTRY
  155. _mesa_UnmapBufferARB(GLenum target);
  156.  
  157. extern void GLAPIENTRY
  158. _mesa_GetBufferParameterivARB(GLenum target, GLenum pname, GLint *params);
  159.  
  160. extern void GLAPIENTRY
  161. _mesa_GetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params);
  162.  
  163. extern void GLAPIENTRY
  164. _mesa_GetBufferPointervARB(GLenum target, GLenum pname, GLvoid **params);
  165.  
  166. extern void GLAPIENTRY
  167. _mesa_CopyBufferSubData(GLenum readTarget, GLenum writeTarget,
  168.                         GLintptr readOffset, GLintptr writeOffset,
  169.                         GLsizeiptr size);
  170.  
  171. extern void * GLAPIENTRY
  172. _mesa_MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length,
  173.                      GLbitfield access);
  174.  
  175. extern void GLAPIENTRY
  176. _mesa_FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length);
  177.  
  178. #if FEATURE_APPLE_object_purgeable
  179. extern GLenum GLAPIENTRY
  180. _mesa_ObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option);
  181.  
  182. extern GLenum GLAPIENTRY
  183. _mesa_ObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option);
  184.  
  185. extern void GLAPIENTRY
  186. _mesa_GetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname, GLint* params);
  187. #endif
  188.  
  189. #endif
  190.