turnip: check the right alignment requirement on shader iova
authorJonathan Marek <jonathan@marek.ca>
Wed, 12 Feb 2020 02:11:07 +0000 (21:11 -0500)
committerMarge Bot <eric+marge@anholt.net>
Fri, 28 Feb 2020 14:04:20 +0000 (14:04 +0000)
I had some trouble because I assumed this was right, tested that the
alignment requirement is actually 16.

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3979>

src/freedreno/vulkan/tu_pipeline.c

index d1dc5644cc6cfa2a07f80e2558abb6e5868d9cf9..4bd59a087d586ad6ad911aacc18ad9f8804a4cc9 100644 (file)
@@ -972,7 +972,11 @@ tu6_emit_shader_object(struct tu_cs *cs,
    assert(variant->type == stage);
 
    const uint64_t binary_iova = binary_bo->iova + binary_offset;
-   assert((binary_iova & 0x3) == 0);
+   assert((binary_iova & 0xf) == 0);
+   /* note: it looks like HW might try to read a few instructions beyond the instrlen size
+    * of the shader. this could be a potential source of problems at some point
+    * possibly this doesn't happen if shader iova is aligned enough (to 4k for example)
+    */
 
    tu_cs_emit_pkt4(cs, reg, 2);
    tu_cs_emit_qw(cs, binary_iova);