winsys/amdgpu: fix (enable) preemption for chained IBs
authorMarek Olšák <marek.olsak@amd.com>
Wed, 28 Sep 2022 10:24:49 +0000 (06:24 -0400)
committerMarge Bot <emma+marge@anholt.net>
Tue, 18 Oct 2022 22:42:28 +0000 (22:42 +0000)
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19131>

src/amd/registers/pkt3.json
src/gallium/winsys/amdgpu/drm/amdgpu_cs.c

index e54196e..bdee735 100644 (file)
    "fields": [
     {"bits": [0, 19], "name": "IB_SIZE"},
     {"bits": [20, 20], "name": "CHAIN"},
+    {"bits": [21, 21], "name": "PRE_ENA"},
     {"bits": [23, 23], "name": "VALID"}
    ]
   },
index a6cb9d8..3b6f3ab 100644 (file)
@@ -824,7 +824,8 @@ static void amdgpu_set_ib_size(struct radeon_cmdbuf *rcs, struct amdgpu_ib *ib)
 {
    if (ib->ptr_ib_size_inside_ib) {
       *ib->ptr_ib_size = rcs->current.cdw |
-                         S_3F2_CHAIN(1) | S_3F2_VALID(1);
+                         S_3F2_CHAIN(1) | S_3F2_VALID(1) |
+                         S_3F2_PRE_ENA(((struct amdgpu_cs*)ib)->preamble_ib_bo != NULL);
    } else {
       *ib->ptr_ib_size = rcs->current.cdw;
    }