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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: media-libs/mesa/files/7.9-glisbuffer.patch
diff --git a/media-libs/mesa/files/7.9-glisbuffer.patch b/media-libs/mesa/files/7.9-glisbuffer.patch
new file mode 100644
index 0000000000000000000000000000000000000000..3004edbb0253705b8980d0d6ecf361a618c8ceac
--- /dev/null
+++ b/media-libs/mesa/files/7.9-glisbuffer.patch
@@ -0,0 +1,84 @@
+From c552f273f559968dfd770367e25329baccbcd0c4 Mon Sep 17 00:00:00 2001
+From: Brian Paul <brianp@vmware.com>
+Date: Thu, 11 Nov 2010 21:47:30 +0000
+Subject: mesa: make glIsBuffer() return false for never bound buffers
+
+Use a dummy buffer object as we do for frame/renderbuffer objects.
+Fixes http://bugs.freedesktop.org/show_bug.cgi?id=31514
+
+Note: this is a candidate for the 7.9 branch.
+---
+diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
+index 76f8259..df44fbe 100644
+--- a/src/mesa/main/bufferobj.c
++++ b/src/mesa/main/bufferobj.c
+@@ -55,6 +55,13 @@
+
+
+ /**
++ * Used as a placeholder for buffer objects between glGenBuffers() and
++ * glBindBuffer() so that glIsBuffer() can work correctly.
++ */
++static struct gl_buffer_object DummyBufferObject;
++
++
++/**
+ * Return pointer to address of a buffer object target.
+ * \param ctx the GL context
+ * \param target the buffer object target to be retrieved.
+@@ -548,6 +555,9 @@ _mesa_copy_buffer_subdata(struct gl_context *ctx,
+ void
+ _mesa_init_buffer_objects( struct gl_context *ctx )
+ {
++ memset(&DummyBufferObject, 0, sizeof(DummyBufferObject));
++ DummyBufferObject.RefCount = 1000*1000*1000; /* never delete */
++
+ _mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj,
+ ctx->Shared->NullBufferObj);
+ _mesa_reference_buffer_object(ctx, &ctx->Array.ElementArrayBufferObj,
+@@ -605,8 +615,10 @@ bind_buffer_object(struct gl_context *ctx, GLenum target, GLuint buffer)
+ else {
+ /* non-default buffer object */
+ newBufObj = _mesa_lookup_bufferobj(ctx, buffer);
+- if (!newBufObj) {
+- /* if this is a new buffer object id, allocate a buffer object now */
++ if (!newBufObj || newBufObj == &DummyBufferObject) {
++ /* If this is a new buffer object id, or one which was generated but
++ * never used before, allocate a buffer object now.
++ */
+ ASSERT(ctx->Driver.NewBufferObject);
+ newBufObj = ctx->Driver.NewBufferObject(ctx, buffer, target);
+ if (!newBufObj) {
+@@ -1066,18 +1078,10 @@ _mesa_GenBuffersARB(GLsizei n, GLuint *buffer)
+
+ first = _mesa_HashFindFreeKeyBlock(ctx->Shared->BufferObjects, n);
+
+- /* Allocate new, empty buffer objects and return identifiers */
++ /* Insert the ID and pointer to dummy buffer object into hash table */
+ for (i = 0; i < n; i++) {
+- struct gl_buffer_object *bufObj;
+- GLuint name = first + i;
+- GLenum target = 0;
+- bufObj = ctx->Driver.NewBufferObject( ctx, name, target );
+- if (!bufObj) {
+- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenBuffersARB");
+- return;
+- }
+- _mesa_HashInsert(ctx->Shared->BufferObjects, first + i, bufObj);
++ _mesa_HashInsert(ctx->Shared->BufferObjects, first + i,
++ &DummyBufferObject);
+ buffer[i] = first + i;
+ }
+
+@@ -1103,7 +1107,7 @@ _mesa_IsBufferARB(GLuint id)
+ bufObj = _mesa_lookup_bufferobj(ctx, id);
+ _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+
+- return bufObj ? GL_TRUE : GL_FALSE;
++ return bufObj && bufObj != &DummyBufferObject;
+ }
+
+
+--
+cgit v0.8.3-6-g21f6
« 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