intel/isl: Update mocs for DG1
authorRafael Antognolli <rafael.antognolli@intel.com>
Tue, 5 Nov 2019 23:34:53 +0000 (15:34 -0800)
committerJordan Justen <jordan.l.justen@intel.com>
Mon, 22 Jun 2020 18:42:00 +0000 (11:42 -0700)
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4956>

src/intel/isl/isl.c

index f7689d5b8670294f033df173abfa8c37d415c9fc..e9731616bb1b631e6850d16f8c2c1215e91b7f45 100644 (file)
@@ -99,11 +99,20 @@ static void
 isl_device_setup_mocs(struct isl_device *dev)
 {
    if (dev->info->gen >= 12) {
-      /* TODO: Set PTE to MOCS 61 when the kernel is ready */
-      /* TC=1/LLC Only, LeCC=1/Uncacheable, LRUM=0, L3CC=1/Uncacheable */
-      dev->mocs.external = 3 << 1;
-      /* TC=LLC/eLLC, LeCC=WB, LRUM=3, L3CC=WB */
-      dev->mocs.internal = 2 << 1;
+      if (dev->info->is_dg1) {
+         /* L3CC=WB */
+         dev->mocs.internal = 5 << 1;
+         /* Displayables on DG1 are free to cache in L3 since L3 is transient
+          * and flushed at bottom of each submission.
+          */
+         dev->mocs.external = 5 << 1;
+      } else {
+         /* TODO: Set PTE to MOCS 61 when the kernel is ready */
+         /* TC=1/LLC Only, LeCC=1/Uncacheable, LRUM=0, L3CC=1/Uncacheable */
+         dev->mocs.external = 3 << 1;
+         /* TC=LLC/eLLC, LeCC=WB, LRUM=3, L3CC=WB */
+         dev->mocs.internal = 2 << 1;
+      }
    } else if (dev->info->gen >= 9) {
       /* TC=LLC/eLLC, LeCC=PTE, LRUM=3, L3CC=WB */
       dev->mocs.external = 1 << 1;