diff options
author | Lionel Landwerlin <lionel.g.landwerlin@intel.com> | 2021-02-11 17:38:11 +0200 |
---|---|---|
committer | Dylan Baker <dylan.c.baker@intel.com> | 2021-02-18 12:59:38 -0800 |
commit | 9948a0f15499b8a90991fd96f66b8ca570516ba9 (patch) | |
tree | 0a494085ef07dc5735f8262ebbb265d9755a775f | |
parent | 37c4ed461f801788861d7ed82c82a79e428220f7 (diff) |
anv: discard all timeline wait/signal value=0
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 34f32a6d664807 ("anv: implement VK_KHR_timeline_semaphore")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4277
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8987>
(cherry picked from commit 6673c40011c0183953718f45bf0b9b4cba06bee5)
-rw-r--r-- | .pick_status.json | 2 | ||||
-rw-r--r-- | src/intel/vulkan/anv_queue.c | 20 |
2 files changed, 17 insertions, 5 deletions
diff --git a/.pick_status.json b/.pick_status.json index 5c2a2d28e89..89c178f4a4a 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -3991,7 +3991,7 @@ "description": "anv: discard all timeline wait/signal value=0", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "34f32a6d6648073e2fda3fb78377124fb32bb288" }, diff --git a/src/intel/vulkan/anv_queue.c b/src/intel/vulkan/anv_queue.c index 7d52d74cfc2..1b0f7d732e2 100644 --- a/src/intel/vulkan/anv_queue.c +++ b/src/intel/vulkan/anv_queue.c @@ -993,18 +993,24 @@ anv_queue_submit(struct anv_queue *queue, } case ANV_SEMAPHORE_TYPE_TIMELINE: + assert(in_values); + if (in_values[i] == 0) + break; result = anv_queue_submit_add_timeline_wait(submit, device, &impl->timeline, - in_values ? in_values[i] : 0); + in_values[i]); if (result != VK_SUCCESS) goto error; break; case ANV_SEMAPHORE_TYPE_DRM_SYNCOBJ_TIMELINE: + assert(in_values); + if (in_values[i] == 0) + break; result = anv_queue_submit_add_syncobj(submit, device, impl->syncobj, I915_EXEC_FENCE_WAIT, - in_values ? in_values[i] : 0); + in_values[i]); if (result != VK_SUCCESS) goto error; break; @@ -1057,17 +1063,23 @@ anv_queue_submit(struct anv_queue *queue, } case ANV_SEMAPHORE_TYPE_TIMELINE: + assert(out_values); + if (out_values[i] == 0) + break; result = anv_queue_submit_add_timeline_signal(submit, device, &impl->timeline, - out_values ? out_values[i] : 0); + out_values[i]); if (result != VK_SUCCESS) goto error; break; case ANV_SEMAPHORE_TYPE_DRM_SYNCOBJ_TIMELINE: + assert(out_values); + if (out_values[i] == 0) + break; result = anv_queue_submit_add_syncobj(submit, device, impl->syncobj, I915_EXEC_FENCE_SIGNAL, - out_values ? out_values[i] : 0); + out_values[i]); if (result != VK_SUCCESS) goto error; break; |