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@vmware.com>
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user