anv: Set L3 full way allocation at context init if L3 cfg is NULL
authorJordan Justen <jordan.l.justen@intel.com>
Fri, 12 Jun 2020 10:02:02 +0000 (03:02 -0700)
committerJordan Justen <jordan.l.justen@intel.com>
Mon, 22 Jun 2020 18:41:59 +0000 (11:41 -0700)
If the platform's default L3 config is NULL, then it now gets
initialized only at context init time, and cmd_buffer_config_l3 will
always return immediately.

Rework:
 * Remove unneeded check on !cfg in cmd_buffer_config_l3 (Jason)

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4956>

src/intel/vulkan/genX_cmd_buffer.c
src/intel/vulkan/genX_state.c

index bf2a5a6dc75229b1786194d7a0e5562b4810f544..856ae2abf11f9fb5e92be249e4c0c8f3c3d556a0 100644 (file)
@@ -1804,7 +1804,7 @@ void
 genX(cmd_buffer_config_l3)(struct anv_cmd_buffer *cmd_buffer,
                            const struct gen_l3_config *cfg)
 {
-   assert(cfg);
+   assert(cfg || GEN_GEN >= 12);
    if (cfg == cmd_buffer->state.current_l3_config)
       return;
 
index 3c5033459d059dcc8aee5e5f1bb851e29cee04c8..316a56ab73068ecdb4d89d3fac105e94358a4cbd 100644 (file)
@@ -294,6 +294,20 @@ genX(init_device_state)(struct anv_device *device)
 #endif
    }
 
+#if GEN_GEN >= 12
+   const struct gen_l3_config *cfg = gen_get_default_l3_config(&device->info);
+   if (!cfg) {
+      /* Platforms with no configs just setup full-way allocation. */
+      uint32_t l3cr;
+      anv_pack_struct(&l3cr, GENX(L3ALLOC),
+                      .L3FullWayAllocationEnable = true);
+      anv_batch_emit(&batch, GENX(MI_LOAD_REGISTER_IMM), lri) {
+         lri.RegisterOffset = GENX(L3ALLOC_num);
+         lri.DataDWord      = l3cr;
+      }
+   }
+#endif
+
    anv_batch_emit(&batch, GENX(MI_BATCH_BUFFER_END), bbe);
 
    assert(batch.next <= batch.end);