anv: disable repacking for compression for applicable gen
authorDongwon Kim <dongwon.kim@intel.com>
Thu, 27 Jun 2019 16:54:37 +0000 (09:54 -0700)
committerAnuj Phogat <anuj.phogat@gmail.com>
Mon, 8 Jul 2019 17:54:38 +0000 (10:54 -0700)
set bit15 (Disable Repacking for Compression) of CACHE_MODE_0 register
if the gen attribute, 'disable_ccs_repack' is set.

Signed-off-by: Dongwon Kim <dongwon.kim@intel.com>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
src/intel/vulkan/genX_state.c

index c81de9156c7ea4989ef878acd51076e96e26b7ca..496c63afa6723c5b7a9b6f369a00722deff23294 100644 (file)
@@ -213,6 +213,24 @@ genX(init_device_state)(struct anv_device *device)
    }
 #endif
 
+#if GEN_GEN >= 11
+   /* hardware specification recommends disabling repacking for
+    * the compatibility with decompression mechanism in display controller.
+    */
+   if (device->info.disable_ccs_repack) {
+      uint32_t cache_mode_0;
+      anv_pack_struct(&cache_mode_0,
+                      GENX(CACHE_MODE_0),
+                      .DisableRepackingforCompression = true,
+                      .DisableRepackingforCompressionMask = true);
+
+      anv_batch_emit(&batch, GENX(MI_LOAD_REGISTER_IMM), lri) {
+         lri.RegisterOffset = GENX(CACHE_MODE_0_num);
+         lri.DataDWord      = cache_mode_0;
+      }
+   }
+#endif
+
    /* Set the "CONSTANT_BUFFER Address Offset Disable" bit, so
     * 3DSTATE_CONSTANT_XS buffer 0 is an absolute address.
     *