Lines Matching full:bufobj
125 struct gl_buffer_object **bufObj = get_buffer_target(ctx, target);
127 if (!bufObj) {
132 if (!_mesa_is_bufferobj(*bufObj)) {
137 return *bufObj;
204 struct gl_buffer_object *bufObj;
216 bufObj = get_buffer(ctx, caller, target);
217 if (!bufObj)
220 if (offset + size > bufObj->Size) {
225 (unsigned long) bufObj->Size);
228 if (_mesa_bufferobj_mapped(bufObj)) {
234 return bufObj;
263 struct gl_buffer_object *bufObj)
267 if (bufObj->Data)
268 free(bufObj->Data);
271 bufObj->RefCount = -1000;
272 bufObj->Name = ~0;
274 _glthread_DESTROY_MUTEX(bufObj->Mutex);
275 free(bufObj);
281 * Set ptr to bufObj w/ reference counting.
288 struct gl_buffer_object *bufObj)
310 ASSERT(ctx->Array.ArrayBufferObj != bufObj);
311 ASSERT(ctx->Array.ArrayObj->ElementArrayBufferObj != bufObj);
312 ASSERT(ctx->Array.ArrayObj->Vertex.BufferObj != bufObj);
323 if (bufObj) {
325 _glthread_LOCK_MUTEX(bufObj->Mutex);
326 if (bufObj->RefCount == 0) {
333 bufObj->RefCount++;
336 (void *) bufObj, bufObj->Name, bufObj->RefCount);
338 *ptr = bufObj;
340 _glthread_UNLOCK_MUTEX(bufObj->Mutex);
371 const struct gl_buffer_object *bufObj =
375 *total = *total + bufObj->Size;
408 * \param bufObj Object to be used.
416 struct gl_buffer_object * bufObj )
422 new_data = _mesa_realloc( bufObj->Data, bufObj->Size, size );
424 bufObj->Data = (GLubyte *) new_data;
425 bufObj->Size = size;
426 bufObj->Usage = usage;
429 memcpy( bufObj->Data, data, size );
453 * \param bufObj Object to be used.
460 struct gl_buffer_object * bufObj )
465 ASSERT(size + offset <= bufObj->Size);
467 if (bufObj->Data) {
468 memcpy( (GLubyte *) bufObj->Data + offset, data, size );
486 * \param bufObj Object to be used.
493 struct gl_buffer_object * bufObj )
497 if (bufObj->Data && ((GLsizeiptrARB) (size + offset) <= bufObj->Size)) {
498 memcpy( data, (GLubyte *) bufObj->Data + offset, size );
510 struct gl_buffer_object *bufObj )
513 assert(!_mesa_bufferobj_mapped(bufObj));
515 bufObj->Pointer = bufObj->Data + offset;
516 bufObj->Length = length;
517 bufObj->Offset = offset;
518 bufObj->AccessFlags = access;
519 return bufObj->Pointer;
548 _mesa_buffer_unmap( struct gl_context *ctx, struct gl_buffer_object *bufObj )
551 /* XXX we might assert here that bufObj->Pointer is non-null */
552 bufObj->Pointer = NULL;
553 bufObj->Length = 0;
554 bufObj->Offset = 0;
555 bufObj
860 struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, ids[i]);
861 if (bufObj) {
865 ASSERT(bufObj->Name == ids[i] || bufObj == &DummyBufferObject);
867 if (_mesa_bufferobj_mapped(bufObj)) {
869 ctx->Driver.UnmapBuffer(ctx, bufObj);
870 bufObj->AccessFlags = default_access_mode(ctx);
871 bufObj->Pointer = NULL;
876 unbind(ctx, &arrayObj->VertexAttrib[j].BufferObj, bufObj);
879 if (ctx->Array.ArrayBufferObj == bufObj) {
882 if (arrayObj->ElementArrayBufferObj == bufObj) {
887 if (ctx->CopyReadBuffer == bufObj) {
890 if (ctx->CopyWriteBuffer == bufObj) {
895 if (ctx->TransformFeedback.CurrentBuffer == bufObj) {
899 if (ctx->TransformFeedback.CurrentObject->Buffers[j] == bufObj) {
906 if (ctx->UniformBufferBindings[j].BufferObject == bufObj) {
911 if (ctx->UniformBuffer == bufObj) {
916 if (ctx->Pack.BufferObj == bufObj) {
919 if (ctx->Unpack.BufferObj == bufObj) {
923 if (ctx->Texture.BufferObject == bufObj) {
939 bufObj->DeletePending = GL_TRUE;
940 _mesa_reference_buffer_object(ctx, &bufObj, NULL);
1002 struct gl_buffer_object *bufObj;
1007 bufObj = _mesa_lookup_bufferobj(ctx, id);
1010 return bufObj && bufObj != &DummyBufferObject;
1019 struct gl_buffer_object *bufObj;
1063 bufObj = get_buffer(ctx, "glBufferDataARB", target);
1064 if (!bufObj)
1067 if (_mesa_bufferobj_mapped(bufObj)) {
1069 ctx->Driver.UnmapBuffer(ctx, bufObj);
1070 bufObj->AccessFlags = default_access_mode(ctx);
1071 ASSERT(bufObj->Pointer == NULL);
1076 bufObj->Written = GL_TRUE;
1080 bufObj->Name, size, data, usage);
1088 if (!ctx->Driver.BufferData( ctx, target, size, data, usage, bufObj )) {
1099 struct gl_buffer_object *bufObj;
1102 bufObj = buffer_object_subdata_range_good( ctx, target, offset, size,
1104 if (!bufObj) {
1112 bufObj->Written = GL_TRUE;
1115 ctx->Driver.BufferSubData( ctx, offset, size, data, bufObj );
1124 struct gl_buffer_object *bufObj;
1127 bufObj = buffer_object_subdata_range_good( ctx, target, offset, size,
1129 if (!bufObj) {
1135 ctx->Driver.GetBufferSubData( ctx, offset, size, data, bufObj );
1143 struct gl_buffer_object * bufObj;
1173 bufObj = get_buffer(ctx, "glMapBufferARB", target);
1174 if (!bufObj)
1177 if (_mesa_bufferobj_mapped(bufObj)) {
1182 if (!bufObj->Size) {
1189 map = ctx->Driver.MapBufferRange(ctx, 0, bufObj->Size, accessFlags, bufObj);
1199 ASSERT(bufObj->Pointer == map);
1200 ASSERT(bufObj->Length == bufObj->Size);
1201 ASSERT(bufObj->Offset == 0);
1202 bufObj->AccessFlags = accessFlags;
1206 bufObj->Written = GL_TRUE;
1210 bufObj->Name, bufObj->Size, access);
1213 GLubyte *b = (GLubyte *) bufObj->Pointer;
1214 for (i = 0; i < bufObj->Size; i++)
1221 GLubyte *buf = (GLubyte *) bufObj->Pointer;
1225 buf[bufObj->Size - i - 1] = 123;
1230 return bufObj->Pointer;
1238 struct gl_buffer_object *bufObj;
1242 bufObj = get_buffer(ctx, "glUnmapBufferARB", target);
1243 if (!bufObj)
1246 if (!_mesa_bufferobj_mapped(bufObj)) {
1252 if (bufObj->Access != GL_READ_ONLY_ARB) {
1253 GLubyte *buf = (GLubyte *) bufObj->Pointer;
1257 GLuint pos = bufObj->Size - i - 1;
1268 if (bufObj->AccessFlags & GL_MAP_WRITE_BIT) {
1270 GLubyte *b = (GLubyte *) bufObj->Pointer;
1273 for (i = 0; i < bufObj->Size - 1; i++) {
1282 bufObj->Name, unchanged, bufObj->Size, pos);
1287 status = ctx->Driver.UnmapBuffer( ctx, bufObj );
1288 bufObj->AccessFlags = default_access_mode(ctx);
1289 ASSERT(bufObj->Pointer == NULL);
1290 ASSERT(bufObj->Offset == 0);
1291 ASSERT(bufObj->Length == 0);
1301 struct gl_buffer_object *bufObj;
1304 bufObj = get_buffer(ctx, "glGetBufferParameterivARB", target);
1305 if (!bufObj)
1310 *params = (GLint) bufObj->Size;
1313 *params = bufObj->Usage;
1316 *params = simplified_access_mode(bufObj->AccessFlags);
1319 *params = _mesa_bufferobj_mapped(bufObj);
1325 *params = bufObj->AccessFlags;
1331 *params = (GLint) bufObj->Offset;
1337 *params = (GLint) bufObj->Length;
1358 struct gl_buffer_object *bufObj;
1361 bufObj = get_buffer(ctx, "glGetBufferParameteri64v", target);
1362 if (!bufObj)
1367 *params = bufObj->Size;
1370 *params = bufObj->Usage;
1373 *params = simplified_access_mode(bufObj->AccessFlags);
1378 *params = bufObj->AccessFlags;
1381 *params = _mesa_bufferobj_mapped(bufObj);
1386 *params = bufObj->Offset;
1391 *params = bufObj->Length;
1407 struct gl_buffer_object * bufObj;
1415 bufObj = get_buffer(ctx, "glGetBufferPointervARB", target);
1416 if (!bufObj)
1419 *params = bufObj->Pointer;
1511 struct gl_buffer_object *bufObj;
1567 bufObj = get_buffer(ctx, "glMapBufferRange", target);
1568 if (!bufObj)
1571 if (offset + length > bufObj->Size) {
1577 if (_mesa_bufferobj_mapped(bufObj)) {
1583 if (!bufObj->Size) {
1592 bufObj->Pointer = &dummy;
1593 bufObj->Length = length;
1594 bufObj->Offset = offset;
1595 bufObj->AccessFlags = access;
1596 return bufObj->Pointer;
1600 map = ctx->Driver.MapBufferRange(ctx, offset, length, access, bufObj);
1609 ASSERT(bufObj->Pointer == map);
1610 ASSERT(bufObj->Length == length);
1611 ASSERT(bufObj->Offset == offset);
1612 ASSERT(bufObj->AccessFlags == access);
1626 struct gl_buffer_object *bufObj;
1647 bufObj = get_buffer(ctx, "glFlushMappedBufferRange", target);
1648 if (!bufObj)
1651 if (!_mesa_bufferobj_mapped(bufObj)) {
1658 if ((bufObj->AccessFlags & GL_MAP_FLUSH_EXPLICIT_BIT) == 0) {
1664 if (offset + length > bufObj->Length) {
1667 (long)offset, (long)length, (long)bufObj->Length);
1671 ASSERT(bufObj->AccessFlags & GL_MAP_WRITE_BIT);
1674 ctx->Driver.FlushMappedBufferRange(ctx, offset, length, bufObj);
1682 struct gl_buffer_object *bufObj;
1685 bufObj = _mesa_lookup_bufferobj(ctx, name);
1686 if (!bufObj) {
1691 if (!_mesa_is_bufferobj(bufObj)) {
1696 if (bufObj->Purgeable) {
1702 bufObj->Purgeable = GL_TRUE;
1706 bufObj, option);
1715 struct gl_renderbuffer *bufObj;
1718 bufObj = _mesa_lookup_renderbuffer(ctx, name);
1719 if (!bufObj) {
1725 if (bufObj->Purgeable) {
1731 bufObj->Purgeable = GL_TRUE;
1735 retval = ctx->Driver.RenderObjectPurgeable(ctx, bufObj, option);
1744 struct gl_texture_object *bufObj;
1747 bufObj = _mesa_lookup_texture(ctx, name);
1748 if (!bufObj) {
1754 if (bufObj->Purgeable) {
1760 bufObj->Purgeable = GL_TRUE;
1764 retval = ctx->Driver.TextureObjectPurgeable(ctx, bufObj, option);
1825 struct gl_buffer_object *bufObj;
1828 bufObj = _mesa_lookup_bufferobj(ctx, name);
1829 if (!bufObj) {
1835 if (! bufObj->Purgeable) {
1842 bufObj->Purgeable = GL_FALSE;
1846 retval = ctx->Driver.BufferObjectUnpurgeable(ctx, bufObj, option);
1855 struct gl_renderbuffer *bufObj;
1858 bufObj = _mesa_lookup_renderbuffer(ctx, name);
1859 if (!bufObj) {
1865 if (! bufObj->Purgeable) {
1872 bufObj->Purgeable = GL_FALSE;
1876 retval = ctx->Driver.RenderObjectUnpurgeable(ctx, bufObj, option);
1885 struct gl_texture_object *bufObj;
1888 bufObj = _mesa_lookup_texture(ctx, name);
1889 if (!bufObj) {
1895 if (! bufObj->Purgeable) {
1902 bufObj->Purgeable = GL_FALSE;
1906 retval = ctx->Driver.TextureObjectUnpurgeable(ctx, bufObj, option);
1956 struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, name);
1957 if (!bufObj) {
1965 *params = bufObj->Purgeable;
2058 struct gl_buffer_object *bufObj,
2066 if (binding->BufferObject == bufObj &&
2075 _mesa_reference_buffer_object(ctx, &binding->BufferObject, bufObj);
2084 * \param bufObj the buffer object
2091 struct gl_buffer_object *bufObj,
2107 if (bufObj == ctx->Shared->NullBufferObj) {
2112 _mesa_reference_buffer_object(ctx, &ctx->UniformBuffer, bufObj);
2113 set_ubo_binding(ctx, index, bufObj, offset, size, GL_FALSE);
2124 struct gl_buffer_object *bufObj)
2131 _mesa_reference_buffer_object(ctx, &ctx->UniformBuffer, bufObj);
2132 if (bufObj == ctx->Shared->NullBufferObj)
2133 set_ubo_binding(ctx, index, bufObj, -1, -1, GL_TRUE);
2135 set_ubo_binding(ctx, index, bufObj, 0, 0, GL_TRUE);
2143 struct gl_buffer_object *bufObj;
2146 bufObj = ctx->Shared->NullBufferObj;
2148 bufObj = _mesa_lookup_bufferobj(ctx, buffer);
2150 if (!handle_bind_buffer_gen(ctx, target, buffer, &bufObj))
2153 if (!bufObj) {
2165 if (offset + size > bufObj->Size) {
2168 (int) (offset + size), (int) (bufObj->Size));
2174 _mesa_bind_buffer_range_transform_feedback(ctx, index, bufObj,
2178 bind_buffer_range_uniform_buffer(ctx, index, bufObj, offset, size);
2190 struct gl_buffer_object *bufObj;
2193 bufObj = ctx->Shared->NullBufferObj;
2195 bufObj = _mesa_lookup_bufferobj(ctx, buffer);
2197 if (!handle_bind_buffer_gen(ctx, target, buffer, &bufObj))
2200 if (!bufObj) {
2234 _mesa_bind_buffer_base_transform_feedback(ctx, index, bufObj);
2237 bind_buffer_base_uniform_buffer(ctx, index, bufObj);
2250 struct gl_buffer_object *bufObj;
2253 bufObj = _mesa_lookup_bufferobj(ctx, buffer);
2254 if (!bufObj) {
2267 if (end < 0 || end > bufObj->Size) {
2279 if (_mesa_bufferobj_mapped(bufObj)) {
2280 const GLintptr mapEnd = bufObj->Offset + bufObj->Length;
2290 bufObj->Offset || offset >= mapEnd)) {
2308 struct gl_buffer_object *bufObj;
2310 bufObj = _mesa_lookup_bufferobj(ctx, buffer);
2311 if (!bufObj) {
2324 if (_mesa_bufferobj_mapped(bufObj)) {