X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fbufferobj.h;h=5dcc55301ce78f4477abfe87d230f3d17ec9cafa;hb=b9b88516f8d3efc902696f1092519e298ceb7cdb;hp=6305b5cabeda5aa6b06d93592de8af093809c3e7;hpb=a0cc03929e754692ae593df5072d144460434297;p=mesa.git diff --git a/src/mesa/main/bufferobj.h b/src/mesa/main/bufferobj.h index 6305b5cabed..5dcc55301ce 100644 --- a/src/mesa/main/bufferobj.h +++ b/src/mesa/main/bufferobj.h @@ -45,8 +45,14 @@ _mesa_bufferobj_mapped(const struct gl_buffer_object *obj, return obj->Mappings[index].Pointer != NULL; } -/** Can we not use this buffer while mapped? */ -static inline GLboolean +/** + * Check whether the given buffer object is illegally mapped prior to + * drawing from (or reading back to) the buffer. + * Note that it's legal for a buffer to be mapped at draw/readback time + * if it was mapped persistently (See GL_ARB_buffer_storage spec). + * \return true if the buffer is illegally mapped, false otherwise + */ +static inline bool _mesa_check_disallowed_mapping(const struct gl_buffer_object *obj) { return _mesa_bufferobj_mapped(obj, MAP_USER) && @@ -74,7 +80,6 @@ _mesa_free_buffer_objects(struct gl_context *ctx); extern bool _mesa_handle_bind_buffer_gen(struct gl_context *ctx, - GLenum target, GLuint buffer, struct gl_buffer_object **buf_handle, const char *caller); @@ -109,6 +114,10 @@ _mesa_initialize_buffer_object(struct gl_context *ctx, struct gl_buffer_object *obj, GLuint name); +extern void +_mesa_delete_buffer_object(struct gl_context *ctx, + struct gl_buffer_object *bufObj); + extern void _mesa_reference_buffer_object_(struct gl_context *ctx, struct gl_buffer_object **ptr, @@ -161,6 +170,12 @@ _mesa_map_buffer_range(struct gl_context *ctx, GLintptr offset, GLsizeiptr length, GLbitfield access, const char *func); +extern void +_mesa_flush_mapped_buffer_range(struct gl_context *ctx, + struct gl_buffer_object *bufObj, + GLintptr offset, GLsizeiptr length, + const char *func); + extern void _mesa_ClearBufferSubData_sw(struct gl_context *ctx, GLintptr offset, GLsizeiptr size, @@ -177,6 +192,10 @@ _mesa_clear_buffer_sub_data(struct gl_context *ctx, const GLvoid *data, const char *func, bool subdata); +extern GLboolean +_mesa_unmap_buffer(struct gl_context *ctx, struct gl_buffer_object *bufObj, + const char *func); + /* * API functions */ @@ -220,8 +239,12 @@ _mesa_NamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data); void GLAPIENTRY -_mesa_GetBufferSubData(GLenum target, GLintptrARB offset, - GLsizeiptrARB size, void * data); +_mesa_GetBufferSubData(GLenum target, GLintptr offset, + GLsizeiptr size, GLvoid *data); + +void GLAPIENTRY +_mesa_GetNamedBufferSubData(GLuint buffer, GLintptr offset, + GLsizeiptr size, GLvoid *data); void GLAPIENTRY _mesa_ClearBufferData(GLenum target, GLenum internalformat, @@ -248,15 +271,29 @@ _mesa_ClearNamedBufferSubData(GLuint buffer, GLenum internalformat, GLboolean GLAPIENTRY _mesa_UnmapBuffer(GLenum target); +GLboolean GLAPIENTRY +_mesa_UnmapNamedBuffer(GLuint buffer); + void GLAPIENTRY _mesa_GetBufferParameteriv(GLenum target, GLenum pname, GLint *params); void GLAPIENTRY _mesa_GetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params); +void GLAPIENTRY +_mesa_GetNamedBufferParameteriv(GLuint buffer, GLenum pname, GLint *params); + +void GLAPIENTRY +_mesa_GetNamedBufferParameteri64v(GLuint buffer, GLenum pname, + GLint64 *params); + void GLAPIENTRY _mesa_GetBufferPointerv(GLenum target, GLenum pname, GLvoid **params); +void GLAPIENTRY +_mesa_GetNamedBufferPointerv(GLuint buffer, GLenum pname, GLvoid **params); + + void GLAPIENTRY _mesa_CopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, @@ -286,15 +323,9 @@ void GLAPIENTRY _mesa_FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); -GLenum GLAPIENTRY -_mesa_ObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option); - -GLenum GLAPIENTRY -_mesa_ObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option); - void GLAPIENTRY -_mesa_GetObjectParameterivAPPLE(GLenum objectType, GLuint name, - GLenum pname, GLint* params); +_mesa_FlushMappedNamedBufferRange(GLuint buffer, GLintptr offset, + GLsizeiptr length); void GLAPIENTRY _mesa_BindBufferRange(GLenum target, GLuint index,