Mesa (master): svga: fix buffer binding flags initialization

Brian Paul brianp at kemper.freedesktop.org
Mon Jul 3 16:17:02 UTC 2017


Module: Mesa
Branch: master
Commit: 9bd047aa268a7be1222edb10ee448886fcdc9a68
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9bd047aa268a7be1222edb10ee448886fcdc9a68

Author: Brian Paul <brianp at vmware.com>
Date:   Fri Jun 30 14:02:20 2017 -0700

svga: fix buffer binding flags initialization

If a buffer is created/initialized with glNamedBufferData we will
have no target (GL_ARRAY_BUFFER, GL_UNIFORM_BUFFER, etc) so the
svga_buffer::bind_flags will be zero until we try to get the buffer
handle.

This patch initializes the svga_buffer::bind_flags field when it's
zero.

This fixes the Piglit arb_uniform_buffer_object-rendering-dsa test.

Note that there's still issues in this area that'll have to be
addressed in the future.  For example, creating a buffer object
as GL_UNIFORM_BUFFER and later using it as a vertex buffer will
fail.

Reviewed-by: Charmaine Lee <charmainel at vmware.com>

---

 src/gallium/drivers/svga/svga_resource_buffer_upload.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/gallium/drivers/svga/svga_resource_buffer_upload.c b/src/gallium/drivers/svga/svga_resource_buffer_upload.c
index 61f6fb0f03..104cb6dbd2 100644
--- a/src/gallium/drivers/svga/svga_resource_buffer_upload.c
+++ b/src/gallium/drivers/svga/svga_resource_buffer_upload.c
@@ -1003,6 +1003,12 @@ svga_buffer_handle(struct svga_context *svga, struct pipe_resource *buf,
             return NULL;
       }
    } else {
+      if (!sbuf->bind_flags) {
+         sbuf->bind_flags = tobind_flags;
+      }
+
+      assert((sbuf->bind_flags & tobind_flags) == tobind_flags);
+
       /* This call will set sbuf->handle */
       if (svga_have_gb_objects(svga)) {
          ret = svga_buffer_update_hw(svga, sbuf, sbuf->bind_flags);




More information about the mesa-commit mailing list