diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c index 534a96859c7..d4081fb16d4 100644 --- a/src/mesa/main/bufferobj.c +++ b/src/mesa/main/bufferobj.c @@ -1347,8 +1347,7 @@ bind_buffer_object(struct gl_context *ctx, /* Get pointer to old buffer object (to be unbound) */ oldBufObj = *bindTarget; - GLuint old_name = oldBufObj && !oldBufObj->DeletePending ? oldBufObj->Name : 0; - if (unlikely(old_name == buffer)) + if (unlikely(_mesa_is_same_buffer_object(oldBufObj, buffer))) return; /* rebinding the same buffer object- no change */ newBufObj = _mesa_lookup_bufferobj(ctx, buffer); @@ -1588,7 +1587,7 @@ set_buffer_multi_binding(struct gl_context *ctx, { struct gl_buffer_object *bufObj; - if (binding->BufferObject && binding->BufferObject->Name == buffers[idx]) + if (_mesa_is_same_buffer_object(binding->BufferObject, buffers[idx])) bufObj = binding->BufferObject; else { bool error; @@ -4698,7 +4697,7 @@ bind_xfb_buffers(struct gl_context *ctx, size = sizes[i]; } - if (boundBufObj && boundBufObj->Name == buffers[i]) + if (_mesa_is_same_buffer_object(boundBufObj, buffers[i])) bufObj = boundBufObj; else { bool error; diff --git a/src/mesa/main/bufferobj.h b/src/mesa/main/bufferobj.h index 0b4c8f80a85..f89bf1be25f 100644 --- a/src/mesa/main/bufferobj.h +++ b/src/mesa/main/bufferobj.h @@ -239,6 +239,11 @@ _mesa_reference_buffer_object_shared(struct gl_context *ctx, _mesa_reference_buffer_object_(ctx, ptr, bufObj, true); } +static inline bool +_mesa_is_same_buffer_object(struct gl_buffer_object *buf, GLuint name) { + return buf && !buf->DeletePending && buf->Name == name; +} + extern void _mesa_buffer_data(struct gl_context *ctx, struct gl_buffer_object *bufObj, GLenum target, GLsizeiptr size, const GLvoid *data, diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c index 9b883e30785..8bf277937dc 100644 --- a/src/mesa/main/varray.c +++ b/src/mesa/main/varray.c @@ -3198,7 +3198,7 @@ vertex_array_vertex_buffer(struct gl_context *ctx, struct gl_buffer_object *current_buf = vao->BufferBinding[VERT_ATTRIB_GENERIC(bindingIndex)].BufferObj; - if (current_buf && buffer == current_buf->Name) { + if (_mesa_is_same_buffer_object(current_buf, buffer)) { vbo = current_buf; } else if (buffer != 0) { vbo = _mesa_lookup_bufferobj(ctx, buffer); @@ -3459,7 +3459,7 @@ vertex_array_vertex_buffers(struct gl_context *ctx, if (buffers[i] == 0) vbo = NULL; - else if (binding->BufferObj && binding->BufferObj->Name == buffers[i]) + else if (_mesa_is_same_buffer_object(binding->BufferObj, buffers[i])) vbo = binding->BufferObj; else { bool error;