From 926ddc319cdfddd8acae546a06a4400e070685ca Mon Sep 17 00:00:00 2001 From: Karmjit Mahil Date: Fri, 21 Apr 2023 16:13:24 +0100 Subject: [PATCH] pvr: Fix unaligned VDMCTRL_PDS_STATE1 data address For indirect draw commands the data segment's address was being calculated with an unaligned code size which could potentially send an unaligned address to the hw causing problems. Reported-by: James Glanville Signed-off-by: Karmjit Mahil Reviewed-by: Frank Binns Part-of: --- src/imagination/vulkan/pvr_cmd_buffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/imagination/vulkan/pvr_cmd_buffer.c b/src/imagination/vulkan/pvr_cmd_buffer.c index 87d293c..d8d085b 100644 --- a/src/imagination/vulkan/pvr_cmd_buffer.c +++ b/src/imagination/vulkan/pvr_cmd_buffer.c @@ -6202,7 +6202,7 @@ pvr_write_draw_indirect_vdm_stream(struct pvr_cmd_buffer *cmd_buffer, pvr_csb_emit (csb, VDMCTRL_PDS_STATE1, state1) { const uint32_t data_offset = pds_bo->vma->dev_addr.addr + - PVR_DW_TO_BYTES(pds_prog.program.code_size) - + PVR_DW_TO_BYTES(pds_prog.program.code_size_aligned) - cmd_buffer->device->heaps.pds_heap->base_addr.addr; state1.pds_data_addr = PVR_DEV_ADDR(data_offset); -- 2.7.4