v3dv: fix BCL start offset in presence of chained BOs
If a job's BCL spans multiple BOs we should take the start offset of the
BCL from the first BO in the list.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
diff --git a/src/broadcom/vulkan/v3dv_queue.c b/src/broadcom/vulkan/v3dv_queue.c
index a668f56..1d42132 100644
--- a/src/broadcom/vulkan/v3dv_queue.c
+++ b/src/broadcom/vulkan/v3dv_queue.c
@@ -457,7 +457,14 @@
struct drm_v3d_submit_cl submit;
- submit.bcl_start = job->bcl.bo->offset;
+ /* We expect to have just one RCL per job which should fit in just one BO.
+ * Our BCL, could chain multiple BOS together though.
+ */
+ assert(list_length(&job->rcl.bo_list) == 1);
+ assert(list_length(&job->bcl.bo_list) >= 1);
+ struct v3dv_bo *bcl_fist_bo =
+ list_first_entry(&job->bcl.bo_list, struct v3dv_bo, list_link);
+ submit.bcl_start = bcl_fist_bo->offset;
submit.bcl_end = job->bcl.bo->offset + v3dv_cl_offset(&job->bcl);
submit.rcl_start = job->rcl.bo->offset;
submit.rcl_end = job->rcl.bo->offset + v3dv_cl_offset(&job->rcl);