diff options
author | Brian Paul <[email protected]> | 2017-06-30 14:02:20 -0700 |
---|---|---|
committer | Brian Paul <[email protected]> | 2017-07-03 10:10:11 -0600 |
commit | 9bd047aa268a7be1222edb10ee448886fcdc9a68 (patch) | |
tree | b8a47ccefd70667fdacf384460f45b148f22f9c2 /src/gallium/drivers | |
parent | 8e4559b3fc1c5bac55a0918ddf0c304d6ec970fc (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]>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r-- | src/gallium/drivers/svga/svga_resource_buffer_upload.c | 6 |
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); |