summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCharmaine Lee <[email protected]>2018-05-11 11:21:52 -0700
committerBrian Paul <[email protected]>2018-05-16 13:04:16 -0600
commit33a86acd785ed4ee5d1325d3e87e4f593d4c07b0 (patch)
treeb102fa48d9678d411d538b922399688b1b14b9fa
parent1261b34cd592822703a6848e78963c011447d2e7 (diff)
svga: fix incompatible bind flags at buffer validation time
At buffer resource validation time, if the resource handle is not yet created and if the initial buffer bind flags and the tobind flags are incompatible, just use the tobind flags to create the resource handle. On the other hand, if the bind flags are compatible, we can combine the bind flags for the resource handle creation. Fixes piglit gl-3.1-buffer-bindings crash. Reviewed-by: Brian Paul <[email protected]>
-rw-r--r--src/gallium/drivers/svga/svga_resource_buffer_upload.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/gallium/drivers/svga/svga_resource_buffer_upload.c b/src/gallium/drivers/svga/svga_resource_buffer_upload.c
index 104cb6dbd2c..9daae9c0f44 100644
--- a/src/gallium/drivers/svga/svga_resource_buffer_upload.c
+++ b/src/gallium/drivers/svga/svga_resource_buffer_upload.c
@@ -1003,9 +1003,14 @@ svga_buffer_handle(struct svga_context *svga, struct pipe_resource *buf,
return NULL;
}
} else {
- if (!sbuf->bind_flags) {
+ /* If there is no resource handle yet, then combine the buffer bind
+ * flags and the tobind_flags if they are compatible.
+ * If not, just use the tobind_flags for creating the resource handle.
+ */
+ if (compatible_bind_flags(sbuf->bind_flags, tobind_flags))
+ sbuf->bind_flags = sbuf->bind_flags | tobind_flags;
+ else
sbuf->bind_flags = tobind_flags;
- }
assert((sbuf->bind_flags & tobind_flags) == tobind_flags);