1b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul/*
2b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * Mesa 3-D graphics library
3b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul *
4b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
5b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * Copyright (C) 2009-2011  VMware, Inc.  All Rights Reserved.
6b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul *
7b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * Permission is hereby granted, free of charge, to any person obtaining a
8b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * copy of this software and associated documentation files (the "Software"),
9b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * to deal in the Software without restriction, including without limitation
10b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * and/or sell copies of the Software, and to permit persons to whom the
12b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * Software is furnished to do so, subject to the following conditions:
13b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul *
14b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * The above copyright notice and this permission notice shall be included
15b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * in all copies or substantial portions of the Software.
16b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul *
17b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
20b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
21b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul */
24b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
25b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
26b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul#ifndef PBO_H
27b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul#define PBO_H
28b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
29b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
30b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul#include "mtypes.h"
31b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
32b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
33b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paulextern GLboolean
34b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul_mesa_validate_pbo_access(GLuint dimensions,
35b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                          const struct gl_pixelstore_attrib *pack,
36b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                          GLsizei width, GLsizei height, GLsizei depth,
376b329b9274b18c50f4177eef7ee087d50ebc1525Brian Paul                          GLenum format, GLenum type, GLsizei clientMemSize,
386b329b9274b18c50f4177eef7ee087d50ebc1525Brian Paul                          const GLvoid *ptr);
39b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
40b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paulextern const GLvoid *
41b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul_mesa_map_pbo_source(struct gl_context *ctx,
42b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                     const struct gl_pixelstore_attrib *unpack,
43b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                     const GLvoid *src);
44b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
45b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paulextern const GLvoid *
46b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul_mesa_map_validate_pbo_source(struct gl_context *ctx,
47b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                              GLuint dimensions,
48b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                              const struct gl_pixelstore_attrib *unpack,
49b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                              GLsizei width, GLsizei height, GLsizei depth,
506b329b9274b18c50f4177eef7ee087d50ebc1525Brian Paul                              GLenum format, GLenum type, GLsizei clientMemSize,
516b329b9274b18c50f4177eef7ee087d50ebc1525Brian Paul                              const GLvoid *ptr, const char *where);
52b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
53b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paulextern void
54b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul_mesa_unmap_pbo_source(struct gl_context *ctx,
55b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                       const struct gl_pixelstore_attrib *unpack);
56b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
57b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paulextern void *
58b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul_mesa_map_pbo_dest(struct gl_context *ctx,
59b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                   const struct gl_pixelstore_attrib *pack,
60b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                   GLvoid *dest);
61b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
62b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paulextern GLvoid *
63b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul_mesa_map_validate_pbo_dest(struct gl_context *ctx,
64b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                            GLuint dimensions,
65b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                            const struct gl_pixelstore_attrib *unpack,
66b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                            GLsizei width, GLsizei height, GLsizei depth,
676b329b9274b18c50f4177eef7ee087d50ebc1525Brian Paul                            GLenum format, GLenum type, GLsizei clientMemSize,
686b329b9274b18c50f4177eef7ee087d50ebc1525Brian Paul                            GLvoid *ptr, const char *where);
69b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
70b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paulextern void
71b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul_mesa_unmap_pbo_dest(struct gl_context *ctx,
72b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                     const struct gl_pixelstore_attrib *pack);
73b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
74b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
75b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paulextern const GLvoid *
76b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul_mesa_validate_pbo_teximage(struct gl_context *ctx, GLuint dimensions,
77b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul			    GLsizei width, GLsizei height, GLsizei depth,
78b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul			    GLenum format, GLenum type, const GLvoid *pixels,
79b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul			    const struct gl_pixelstore_attrib *unpack,
80b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul			    const char *funcName);
81b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
82b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paulextern const GLvoid *
83b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul_mesa_validate_pbo_compressed_teximage(struct gl_context *ctx,
84b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                                    GLsizei imageSize, const GLvoid *pixels,
85b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                                    const struct gl_pixelstore_attrib *packing,
86b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                                    const char *funcName);
87b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
88b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paulextern void
89b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul_mesa_unmap_teximage_pbo(struct gl_context *ctx,
90b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul                         const struct gl_pixelstore_attrib *unpack);
91b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
92b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul
93b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul#endif
94