Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(470)

Side by Side Diff: media-libs/mesa/files/7.9-glisbuffer.patch

Issue 5925002: Switch to Mesa 7.9. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/chromiumos-overlay.git@master
Patch Set: Switch to Mesa 7.9 version 2. Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 From c552f273f559968dfd770367e25329baccbcd0c4 Mon Sep 17 00:00:00 2001
2 From: Brian Paul <brianp@vmware.com>
3 Date: Thu, 11 Nov 2010 21:47:30 +0000
4 Subject: mesa: make glIsBuffer() return false for never bound buffers
5
6 Use a dummy buffer object as we do for frame/renderbuffer objects.
7 Fixes http://bugs.freedesktop.org/show_bug.cgi?id=31514
8
9 Note: this is a candidate for the 7.9 branch.
10 ---
11 diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
12 index 76f8259..df44fbe 100644
13 --- a/src/mesa/main/bufferobj.c
14 +++ b/src/mesa/main/bufferobj.c
15 @@ -55,6 +55,13 @@
16
17
18 /**
19 + * Used as a placeholder for buffer objects between glGenBuffers() and
20 + * glBindBuffer() so that glIsBuffer() can work correctly.
21 + */
22 +static struct gl_buffer_object DummyBufferObject;
23 +
24 +
25 +/**
26 * Return pointer to address of a buffer object target.
27 * \param ctx the GL context
28 * \param target the buffer object target to be retrieved.
29 @@ -548,6 +555,9 @@ _mesa_copy_buffer_subdata(struct gl_context *ctx,
30 void
31 _mesa_init_buffer_objects( struct gl_context *ctx )
32 {
33 + memset(&DummyBufferObject, 0, sizeof(DummyBufferObject));
34 + DummyBufferObject.RefCount = 1000*1000*1000; /* never delete */
35 +
36 _mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj,
37 ctx->Shared->NullBufferObj);
38 _mesa_reference_buffer_object(ctx, &ctx->Array.ElementArrayBufferObj,
39 @@ -605,8 +615,10 @@ bind_buffer_object(struct gl_context *ctx, GLenum target, G Luint buffer)
40 else {
41 /* non-default buffer object */
42 newBufObj = _mesa_lookup_bufferobj(ctx, buffer);
43 - if (!newBufObj) {
44 - /* if this is a new buffer object id, allocate a buffer object now */
45 + if (!newBufObj || newBufObj == &DummyBufferObject) {
46 + /* If this is a new buffer object id, or one which was generated but
47 + * never used before, allocate a buffer object now.
48 + */
49 ASSERT(ctx->Driver.NewBufferObject);
50 newBufObj = ctx->Driver.NewBufferObject(ctx, buffer, target);
51 if (!newBufObj) {
52 @@ -1066,18 +1078,10 @@ _mesa_GenBuffersARB(GLsizei n, GLuint *buffer)
53
54 first = _mesa_HashFindFreeKeyBlock(ctx->Shared->BufferObjects, n);
55
56 - /* Allocate new, empty buffer objects and return identifiers */
57 + /* Insert the ID and pointer to dummy buffer object into hash table */
58 for (i = 0; i < n; i++) {
59 - struct gl_buffer_object *bufObj;
60 - GLuint name = first + i;
61 - GLenum target = 0;
62 - bufObj = ctx->Driver.NewBufferObject( ctx, name, target );
63 - if (!bufObj) {
64 - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
65 - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenBuffersARB");
66 - return;
67 - }
68 - _mesa_HashInsert(ctx->Shared->BufferObjects, first + i, bufObj);
69 + _mesa_HashInsert(ctx->Shared->BufferObjects, first + i,
70 + &DummyBufferObject);
71 buffer[i] = first + i;
72 }
73
74 @@ -1103,7 +1107,7 @@ _mesa_IsBufferARB(GLuint id)
75 bufObj = _mesa_lookup_bufferobj(ctx, id);
76 _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
77
78 - return bufObj ? GL_TRUE : GL_FALSE;
79 + return bufObj && bufObj != &DummyBufferObject;
80 }
81
82
83 --
84 cgit v0.8.3-6-g21f6
OLDNEW
« no previous file with comments | « media-libs/mesa/files/7.9-gldeletebuffers.patch ('k') | media-libs/mesa/files/7.9-glsl-vector-compare.patch » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698