aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2017-06-30 14:02:20 -0700
committerBrian Paul <[email protected]>2017-07-03 10:10:11 -0600
commit9bd047aa268a7be1222edb10ee448886fcdc9a68 (patch)
treeb8a47ccefd70667fdacf384460f45b148f22f9c2
parent8e4559b3fc1c5bac55a0918ddf0c304d6ec970fc (diff)
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 <[email protected]>
-rw-r--r--src/gallium/drivers/svga/svga_resource_buffer_upload.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/gallium/drivers/svga/svga_resource_buffer_upload.c b/src/gallium/drivers/svga/svga_resource_buffer_upload.c
index 61f6fb0f03c..104cb6dbd2c 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);