diff options
author | Brian Paul <[email protected]> | 2004-03-13 18:21:40 +0000 |
---|---|---|
committer | Brian Paul <[email protected]> | 2004-03-13 18:21:40 +0000 |
commit | 7a6b71ef2944bae1718e8167b2faaceb8422071c (patch) | |
tree | 3fb3435f3728f09486d455f6060f06dd42fe0e80 /src/mesa/swrast/s_context.c | |
parent | 5498e8b9f34718aba506421988116ccb1e5e3de7 (diff) |
Implementation of GL_EXT_pixel_buffer_object extension.
Note: extension may not be finalized yet - subject to change!
Note: implementation not fully suitable for h/w implementation yet.
Diffstat (limited to 'src/mesa/swrast/s_context.c')
-rw-r--r-- | src/mesa/swrast/s_context.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/mesa/swrast/s_context.c b/src/mesa/swrast/s_context.c index 0a81048e6f5..be800d4d594 100644 --- a/src/mesa/swrast/s_context.c +++ b/src/mesa/swrast/s_context.c @@ -27,6 +27,7 @@ */ #include "imports.h" +#include "bufferobj.h" #include "context.h" #include "colormac.h" #include "mtypes.h" @@ -731,3 +732,25 @@ _swrast_print_vertex( GLcontext *ctx, const SWvertex *v ) _mesa_debug(ctx, "\n"); } } + + +/** + * Validate access to a PBO to be sure we're not going to read/write + * out of buffer bounds. + */ +GLvoid * +_swrast_validate_pbo_access(const struct gl_pixelstore_attrib *pack, + GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLenum type, GLvoid *ptr) +{ + if (pack->BufferObj->Name == 0) { + /* no PBO */ + return ptr; + } + else if (_mesa_validate_pbo_access(pack, width, height, depth, format, + type, ptr)) { + return ADD_POINTERS(pack->BufferObj->Data, ptr); + } + /* bad access! */ + return NULL; +} |