[Mesa-dev] [PATCH 1/4] svga: fix buffer binding flags initialization
Brian Paul
brianp at vmware.com
Sun Jul 2 15:12:23 UTC 2017
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.
---
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 61f6fb0..104cb6d 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);
--
1.9.1
More information about the mesa-dev
mailing list