Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gmmlib for openSUSE:Factory checked 
in at 2026-02-04 21:10:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gmmlib (Old)
 and      /work/SRC/openSUSE:Factory/.gmmlib.new.1670 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gmmlib"

Wed Feb  4 21:10:38 2026 rev:42 rq:1331009 version:22.9.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/gmmlib/gmmlib.changes    2025-09-30 
17:42:01.092322054 +0200
+++ /work/SRC/openSUSE:Factory/.gmmlib.new.1670/gmmlib.changes  2026-02-04 
21:11:07.717242455 +0100
@@ -1,0 +2,14 @@
+Wed Feb  4 12:33:48 UTC 2026 - Stefan Dirsch <[email protected]>
+
+- Update to  release 22.9.0
+  * Update Readme with Xe3P_HPM details (#268)
+  * Add Media Core Family for CRI and fix ULT (#267)
+  * Introduce CRI Support (#263)
+  * Introduce NVL Support (#261)
+  * Mark L4 Uncached for media usages (#265)
+  * Update Media resources to L3 Cacheable (#264)
+  * Introducing new resource usages to support command streamer instructions 
(#262)
+  * Remove unused variables from Gen12 Resource ULT (#259)
+  * Fix Null check in GMM Auxtable ULT (#256)
+
+-------------------------------------------------------------------

Old:
----
  intel-gmmlib-22.8.2.tar.gz

New:
----
  intel-gmmlib-22.9.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gmmlib.spec ++++++
--- /var/tmp/diff_new_pack.yNOJb8/_old  2026-02-04 21:11:08.549277301 +0100
+++ /var/tmp/diff_new_pack.yNOJb8/_new  2026-02-04 21:11:08.553277468 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package gmmlib
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
 %global somajor 12
 %global libname libigdgmm%{somajor}
 Name:           gmmlib
-Version:        22.8.2
+Version:        22.9.0
 Release:        0
 Summary:        Intel Graphics Memory Management Library Package
 License:        MIT

++++++ intel-gmmlib-22.8.2.tar.gz -> intel-gmmlib-22.9.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gmmlib-intel-gmmlib-22.8.2/README.rst 
new/gmmlib-intel-gmmlib-22.9.0/README.rst
--- old/gmmlib-intel-gmmlib-22.8.2/README.rst   2025-09-08 15:17:27.000000000 
+0200
+++ new/gmmlib-intel-gmmlib-22.9.0/README.rst   2025-12-12 13:20:35.000000000 
+0100
@@ -92,7 +92,9 @@
 
 Xe2_HPG (BMG: Battlemage, LNL: Lunar Lake)
 
-Xe3_LPG (Panther Lake)
+Xe3_LPG/Xe3P_LPM (Panther Lake, NVL-S: Nova Lake S, NVL-U: Nova Lake U, NVL-H: 
Nova Lake H, NVL-HX: Nova Lake HX, NVL-UL: Nova Lake UL)
+
+Xe3P-XPC/Xe3P_HPM (CRI: Crescent Island)
 
 No code changes may be introduced knowingly, that would regress for any 
currently supported hardware.
 All contributions must ensure continued compatibility and functionality across 
all supported hardware platforms.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CMakeLists.txt 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CMakeLists.txt
--- old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CMakeLists.txt 2025-09-08 
15:17:27.000000000 +0200
+++ new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CMakeLists.txt 2025-12-12 
13:20:35.000000000 +0100
@@ -25,14 +25,14 @@
 
 # GmmLib Api Version used for so naming
 set(GMMLIB_API_MAJOR_VERSION 12)
-set(GMMLIB_API_MINOR_VERSION 8)
+set(GMMLIB_API_MINOR_VERSION 9)
 
 if(NOT DEFINED MAJOR_VERSION)
        set(MAJOR_VERSION 12)
 endif()
 
 if(NOT DEFINED MINOR_VERSION)
-       set(MINOR_VERSION 8)
+       set(MINOR_VERSION 9)
 endif()
 
 if(NOT DEFINED PATCH_VERSION)
@@ -204,7 +204,8 @@
        ${BS_DIR_GMMLIB}/CachePolicy/GmmGen11CachePolicy.h
        ${BS_DIR_GMMLIB}/CachePolicy/GmmGen12CachePolicy.h
         ${BS_DIR_GMMLIB}/CachePolicy/GmmXe_LPGCachePolicy.h
-        ${BS_DIR_GMMLIB}/CachePolicy/GmmXe2_LPGCachePolicy.h   
+        ${BS_DIR_GMMLIB}/CachePolicy/GmmXe2_LPGCachePolicy.h
+       ${BS_DIR_GMMLIB}/CachePolicy/GmmXe3P_XPCCachePolicy.h   
        ${BS_DIR_GMMLIB}/CachePolicy/GmmGen12dGPUCachePolicy.h
        ${BS_DIR_GMMLIB}/CachePolicy/GmmGen8CachePolicy.h
        ${BS_DIR_GMMLIB}/CachePolicy/GmmGen9CachePolicy.h
@@ -213,6 +214,7 @@
        ${BS_DIR_GMMLIB}/inc/External/Common/CachePolicy/GmmCachePolicyGen12.h
        ${BS_DIR_GMMLIB}/inc/External/Common/CachePolicy/GmmCachePolicyXe_LPG.h
         
${BS_DIR_GMMLIB}/inc/External/Common/CachePolicy/GmmCachePolicyXe2_LPG.h
+       
${BS_DIR_GMMLIB}/inc/External/Common/CachePolicy/GmmCachePolicyXe3P_XPC.h       
        
${BS_DIR_GMMLIB}/inc/External/Common/CachePolicy/GmmCachePolicyGen12dGPU.h
        ${BS_DIR_GMMLIB}/inc/External/Common/CachePolicy/GmmCachePolicyGen8.h
        ${BS_DIR_GMMLIB}/inc/External/Common/CachePolicy/GmmCachePolicyGen9.h
@@ -278,6 +280,7 @@
   ${BS_DIR_GMMLIB}/CachePolicy/GmmGen12CachePolicy.cpp
   ${BS_DIR_GMMLIB}/CachePolicy/GmmXe_LPGCachePolicy.cpp
   ${BS_DIR_GMMLIB}/CachePolicy/GmmXe2_LPGCachePolicy.cpp
+  ${BS_DIR_GMMLIB}/CachePolicy/GmmXe3P_XPCCachePolicy.cpp
   ${BS_DIR_GMMLIB}/CachePolicy/GmmGen12dGPUCachePolicy.cpp
   ${BS_DIR_GMMLIB}/Platform/GmmGen11Platform.cpp
   ${BS_DIR_GMMLIB}/Platform/GmmGen12Platform.cpp
@@ -323,6 +326,7 @@
                        ${BS_DIR_GMMLIB}/CachePolicy/GmmGen12CachePolicy.h
                         ${BS_DIR_GMMLIB}/CachePolicy/GmmXe_LPGCachePolicy.h
                         ${BS_DIR_GMMLIB}/CachePolicy/GmmXe2_LPGCachePolicy.h
+                       ${BS_DIR_GMMLIB}/CachePolicy/GmmXe3P_XPCCachePolicy.h
                        ${BS_DIR_GMMLIB}/CachePolicy/GmmGen12dGPUCachePolicy.h
                        ${BS_DIR_GMMLIB}/CachePolicy/GmmGen8CachePolicy.h
                        ${BS_DIR_GMMLIB}/CachePolicy/GmmGen9CachePolicy.h
@@ -387,6 +391,7 @@
                        
${BS_DIR_GMMLIB}/inc/External/Common/CachePolicy/GmmCachePolicyGen12.h
                        
${BS_DIR_GMMLIB}/inc/External/Common/CachePolicy/GmmCachePolicyXe_LPG.h
                         
${BS_DIR_GMMLIB}/inc/External/Common/CachePolicy/GmmCachePolicyXe2_LPG.h
+                       
${BS_DIR_GMMLIB}/inc/External/Common/CachePolicy/GmmCachePolicyXe3P_XPC.h       
                
                         
${BS_DIR_GMMLIB}/inc/External/Common/CachePolicy/GmmCachePolicyGen12dGPU.h
                        
${BS_DIR_GMMLIB}/inc/External/Common/CachePolicy/GmmCachePolicyGen8.h
                        
${BS_DIR_GMMLIB}/inc/External/Common/CachePolicy/GmmCachePolicyGen9.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmCachePolicyResourceUsageDefinitions.h
 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmCachePolicyResourceUsageDefinitions.h
--- 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmCachePolicyResourceUsageDefinitions.h
   2025-09-08 15:17:27.000000000 +0200
+++ 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmCachePolicyResourceUsageDefinitions.h
   2025-12-12 13:20:35.000000000 +0100
@@ -352,3 +352,9 @@
 DEFINE_RESOURCE_USAGE(GMM_RESOURCE_USAGE_SHADER_RESOURCE_L1_NOT_CACHED)
 
 DEFINE_RESOURCE_USAGE(GMM_RESOURCE_USAGE_UMD_OCA_BUFFER)       
+
+// Usages for command streamer instructions
+DEFINE_RESOURCE_USAGE(GMM_RESOURCE_USAGE_DEFAULT)
+DEFINE_RESOURCE_USAGE(GMM_RESOURCE_USAGE_COARSE_GRAINED_COHERENT)
+DEFINE_RESOURCE_USAGE(GMM_RESOURCE_USAGE_FINE_GRAINED_COHERENT)
+DEFINE_RESOURCE_USAGE(GMM_RESOURCE_USAGE_FINE_GRAINED_COHERENT_MULTI_WRITE)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmGen10CachePolicy.h 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmGen10CachePolicy.h
--- 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmGen10CachePolicy.h  
    2025-09-08 15:17:27.000000000 +0200
+++ 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmGen10CachePolicy.h  
    2025-12-12 13:20:35.000000000 +0100
@@ -239,4 +239,10 @@
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COPY_SOURCE                            
              , 0   , 0    , 0  , 0  , 0 ,     0,       0,      0,   0,    0);
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COPY_DEST                              
              , 0   , 0    , 0  , 0  , 0 ,     0,       0,      0,   0,    0);
 
+//Usages for command streamer instructions
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DEFAULT                                
                                                                 , 0   , 0      
  , 1  , 0  , 0 ,     0,       0,      0,   0,    0);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COARSE_GRAINED_COHERENT                
                                             , 0   , 0    , 1  , 0  , 0 ,     
0,       0,      0,   0,    0);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_FINE_GRAINED_COHERENT                  
                                         , 0   , 0    , 0  , 0  , 0 ,     0,    
   0,      0,   0,    0);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_FINE_GRAINED_COHERENT_MULTI_WRITE      
                             , 0   , 0    , 0  , 0  , 0 ,     0,       0,      
0,   0,    0);
+
 #include "GmmCachePolicyUndefineConditionals.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmGen11CachePolicy.h 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmGen11CachePolicy.h
--- 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmGen11CachePolicy.h  
    2025-09-08 15:17:27.000000000 +0200
+++ 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmGen11CachePolicy.h  
    2025-12-12 13:20:35.000000000 +0100
@@ -289,4 +289,10 @@
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COPY_SOURCE                            
               , 0   , 0    , 0  , 0  , 0 ,    0,     0,       0,      0,    0, 
  0);
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COPY_DEST                              
               , 0   , 0    , 0  , 0  , 0 ,    0,     0,       0,      0,    0, 
  0);
 
+//Usages for command streamer instructions.
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DEFAULT                                
                                                                  , 0   , 0     
   , 1  , 0  , 0 ,    0,     0,       0,      0,    0,   0);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COARSE_GRAINED_COHERENT                
                                                  , 0   , 0    , 1  , 0  , 0 ,  
  0,     0,       0,      0,    0,   0);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_FINE_GRAINED_COHERENT                  
                                          , 0   , 0    , 0  , 0  , 0 ,    0,    
 0,       0,      0,    0,   0);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_FINE_GRAINED_COHERENT_MULTI_WRITE      
               , 0   , 0    , 0  , 0  , 0 ,    0,     0,       0,      0,    0, 
  0);
+
 #include "GmmCachePolicyUndefineConditionals.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmGen12CachePolicy.h 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmGen12CachePolicy.h
--- 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmGen12CachePolicy.h  
    2025-09-08 15:17:27.000000000 +0200
+++ 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmGen12CachePolicy.h  
    2025-12-12 13:20:35.000000000 +0100
@@ -310,5 +310,11 @@
 // Shader resource uncachable, needed for WA_18013889147
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_SHADER_RESOURCE_L1_NOT_CACHED          
               , 0   , 1    , 1  , 0  , 0 ,    0,     0,       0,      0,    0, 
  0,    0,    RO );
 
+//Usages for command streamer instructions.
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DEFAULT                                
                                                                  , 1   , 1    
, 1  , 0  , 3 ,    0,     0,       0,      0,    0,   0,    0,    RO);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COARSE_GRAINED_COHERENT                
                                                  , 1   , 1    , 1  , 0  , 3 ,  
  0,     0,       0,      0,    0,   0,    0,    RO);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_FINE_GRAINED_COHERENT                  
                                          , 1   , 0    , 0  , 0  , 3 ,    0,    
 0,       0,      0,    0,   0,    0,    NA);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_FINE_GRAINED_COHERENT_MULTI_WRITE      
                                  , 1   , 0    , 0  , 0  , 3 ,    0,     0,     
  0,      0,    0,   0,    0,    NA);
+
 #include "GmmCachePolicyUndefineConditionals.h"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmGen12dGPUCachePolicy.h
 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmGen12dGPUCachePolicy.h
--- 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmGen12dGPUCachePolicy.h
  2025-09-08 15:17:27.000000000 +0200
+++ 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmGen12dGPUCachePolicy.h
  2025-12-12 13:20:35.000000000 +0100
@@ -300,5 +300,11 @@
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COPY_SOURCE                            
               , 0   , 0    ,   0  ,  1 ,  0,   1);
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COPY_DEST                              
               , 0   , 0    ,   0  ,  1 ,  0,   1);
 
+//Usages for command streamer instructions
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DEFAULT                                
                                                                  , 1   , 0    
,   0  ,  0 ,  1,    1);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COARSE_GRAINED_COHERENT                
                                                  , 1   , 0    ,   0  ,  0 ,  
1,    1);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_FINE_GRAINED_COHERENT                  
                                          , 0   , 0    ,   0  ,  1 ,  0,    0);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_FINE_GRAINED_COHERENT_MULTI_WRITE      
                                  , 0   , 0    ,   0  ,  1 ,  0,    0);
+
 #include "GmmCachePolicyUndefineConditionals.h"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmGen9CachePolicy.h 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmGen9CachePolicy.h
--- 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmGen9CachePolicy.h   
    2025-09-08 15:17:27.000000000 +0200
+++ 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmGen9CachePolicy.h   
    2025-12-12 13:20:35.000000000 +0100
@@ -252,6 +252,12 @@
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COPY_SOURCE                            
               , 0   , 0    , 0  , 0  , UC);
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COPY_DEST                              
               , 0   , 0    , 0  , 0  , UC);
 
+//Usages for command streamer instructions
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DEFAULT                                
                                                              , 0   , 0    , 1  
, 0  , UC);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COARSE_GRAINED_COHERENT                
                                              , 0   , 0    , 1  , 0  , UC);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_FINE_GRAINED_COHERENT                  
                                          , 0   , 0    , 0  , 0  , UC);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_FINE_GRAINED_COHERENT_MULTI_WRITE      
                              , 0   , 0    , 0  , 0  , UC);
+
 #undef UC
 #undef WB
 #include "GmmCachePolicyUndefineConditionals.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmXe2_LPGCachePolicy.h
 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmXe2_LPGCachePolicy.h
--- 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmXe2_LPGCachePolicy.h
    2025-09-08 15:17:27.000000000 +0200
+++ 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmXe2_LPGCachePolicy.h
    2025-12-12 13:20:35.000000000 +0100
@@ -25,6 +25,8 @@
 #define _WT        0x2
 #define _L1_WB     0x2
 #define dGPU       SKU(FtrDiscrete)
+#define iGPU       (!dGPU)
+#define L4_IgPAT   (iGPU & 
(GFX_GET_CURRENT_PRODUCT((pGmmLibContext->GetPlatformInfo()).Platform) < 
IGFX_PTL)) // L4 Uncached and IgPAT = 0
 
 #if (_DEBUG || _RELEASE_INTERNAL)
 #define _WA_WB_Emu (WA(Wa_EmuMufasaSupportOnBmg))
@@ -240,33 +242,33 @@
 //                   USAGE TYPE                                                
         L3_CC,   L3_CLOS,L1CC,   L2CC,   L4CC,     Coherency,  IgPAT )
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_MEDIA_BATCH_BUFFERS                    
         ,  0,     0,      0,      0,           0,         0 ,        1,        
  NoP    );
 // DECODE
-DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_INPUT_BITSTREAM                 
         ,  dGPU,  0,     0,      0,                    1,         0  ,        
1,    NoP    );
-DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_INPUT_REFERENCE                 
         ,  dGPU,  0,     0,      1,                    1,         0  ,        
1,    NoP    );
-DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_INTERNAL_READ                   
         ,  dGPU,  0,     0,      0,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_INPUT_BITSTREAM                 
         ,  1,     0,     0,      0,  L4_IgPAT,         0  , L4_IgPAT,    NoP   
 );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_INPUT_REFERENCE                 
         ,  1,     0,     0,      1,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_INTERNAL_READ                   
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_INTERNAL_WRITE                  
         ,  0,     0,     0,      0,                    0,         0  ,        
1,    NoP    );
-DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_INTERNAL_READ_WRITE_CACHE       
         ,  dGPU,  0,     0,      0,                    1,         0  ,        
1,    NoP    ); 
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_INTERNAL_READ_WRITE_CACHE       
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP    ); 
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_INTERNAL_READ_WRITE_NOCACHE     
         ,  0,     0,     0,      0,                    0,         0  ,        
1,    NoP    );
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_OUTPUT_PICTURE                  
         ,  3,     0,     0,      0,                    2,         0  ,        
0,    NoP    );
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_OUTPUT_STATISTICS_WRITE         
         ,  0,     0,     0,      0,                    0,         1  ,        
1,    NoP    );  
-DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_OUTPUT_STATISTICS_READ_WRITE    
         ,  dGPU,  0,     0,      0,                    1,         0  ,        
1,    NoP         );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_OUTPUT_STATISTICS_READ_WRITE    
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP         );
 // ENCODE
-DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_INPUT_RAW                       
         ,  dGPU,  0,     0,      0,                    1,         0  ,        
1,    NoP    );
-DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_INPUT_RECON                     
         ,  dGPU,  0,     0,      1,                    1,         0  ,        
1,    NoP    );
-DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_INTERNAL_READ                   
         ,  dGPU,  0,     0,      0,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_INPUT_RAW                       
         ,  1,     0,     0,      0,  L4_IgPAT,         0  , L4_IgPAT,    NoP   
 );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_INPUT_RECON                     
         ,  1,     0,     0,      1,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_INTERNAL_READ                   
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_INTERNAL_WRITE                  
         ,  0,     0,     0,      0,                    0,         0  ,        
1,    NoP    );
-DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_INTERNAL_READ_WRITE_CACHE       
         ,  dGPU,  0,     0,      0,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_INTERNAL_READ_WRITE_CACHE       
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_INTERNAL_READ_WRITE_NOCACHE     
         ,  0,     0,     0,      0,                    0,         0  ,        
1,    NoP    );  
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_EXTERNAL_READ                   
         ,  0,     0,     0,      0,                    0,         0  ,        
1,    NoP    );
-DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_OUTPUT_PICTURE                  
         ,  dGPU,  0,     0,      0,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_OUTPUT_PICTURE                  
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_OUTPUT_BITSTREAM                
         ,  0,     0,     0,      0,                    0,         1  ,        
1,         NoP    ); 
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_OUTPUT_STATISTICS_WRITE         
         ,  0,     0,     0,      0,                    0,         1  ,        
1,         NoP    ); 
-DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_OUTPUT_STATISTICS_READ_WRITE    
         ,  dGPU,  0,     0,      0,                    1,         0  ,        
1,         NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_OUTPUT_STATISTICS_READ_WRITE    
         ,  1,     0,     0,      0,                    1,         0  ,        
1,         NoP    );
 // VP
-DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INPUT_PICTURE_FF                    
         ,  dGPU,  0,     0,      0,                    1,         0  ,        
1,    NoP    );
-DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INPUT_REFERENCE_FF                  
         ,  dGPU,  0,     0,      0,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INPUT_PICTURE_FF                    
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INPUT_REFERENCE_FF                  
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INTERNAL_READ_FF                    
         ,  0,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INTERNAL_WRITE_FF                   
         ,  0,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
-DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INTERNAL_READ_WRITE_FF              
         ,  dGPU,  0,     0,      0,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INTERNAL_READ_WRITE_FF              
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_OUTPUT_PICTURE_FF                   
         ,  3,     0,     0,      0,                    2,         0  ,        
0,    NoP    );
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INPUT_PICTURE_RENDER                
         ,  1,     0,     0,      0,                    0,         0  ,        
1,    NoP    );
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INPUT_REFERENCE_RENDER              
         ,  1,     0,     0,      0,                    0,         0  ,        
1,    NoP    );
@@ -288,8 +290,17 @@
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COPY_SOURCE                            
         , 0,         0,     0 ,      0,             0,       0,        1,      
  NoP);
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COPY_DEST                              
         , 0,         0,     0 ,      0,      0,       0,        1,       NoP);
 
+//Usages for command streamer instructions
+//                   USAGE TYPE                                                
        , L3_CC,   L3_CLOS, L1CC,   L2CC,   L4CC,   Coherency, IgPAT)
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DEFAULT                                
         , 1,         0,     0 ,      0,      0,       0,        1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COARSE_GRAINED_COHERENT                
         , 1,         0,     0 ,      0,      0,       1,        1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_FINE_GRAINED_COHERENT                  
         , 1,         0,     0 ,      0,      0,       2,        1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_FINE_GRAINED_COHERENT_MULTI_WRITE      
         , 1,         0,     0 ,      0,      0,       2,        1,    NoP);
+
 // clang-format on
 
 #undef _WT
+#undef iGPU
+#undef L4_IgPAT
 #include "GmmCachePolicyUndefineConditionals.h"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmXe3P_XPCCachePolicy.cpp
 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmXe3P_XPCCachePolicy.cpp
--- 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmXe3P_XPCCachePolicy.cpp
 1970-01-01 01:00:00.000000000 +0100
+++ 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmXe3P_XPCCachePolicy.cpp
 2025-12-12 13:20:35.000000000 +0100
@@ -0,0 +1,533 @@
+/*==============================================================================
+Copyright(c) 2025 Intel Corporation
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files(the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and / or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+============================================================================*/
+
+#include "Internal/Common/GmmLibInc.h"
+#include "External/Common/GmmCachePolicy.h"
+#include "External/Common/CachePolicy/GmmCachePolicyXe3P_XPC.h"
+
+//=============================================================================
+//
+// Function: __:GmmXe3P_XPCInitCachePolicy
+//
+// Desc: This function initializes the cache policy
+//
+// Parameters: pCachePolicy  -> Ptr to array to be populated with the
+//             mapping of usages -> cache settings.
+//
+// Return: GMM_STATUS
+//
+//-----------------------------------------------------------------------------
+GMM_STATUS GmmLib::GmmXe3P_XPCCachePolicy::InitCachePolicy()
+{
+    __GMM_ASSERTPTR(pCachePolicy, GMM_ERROR);
+#define DEFINE_CACHE_ELEMENT(usage, l3_cc, l3_clos, l1cc, l2cc, l4cc, 
coherency, igPAT, segov) DEFINE_CP_ELEMENT(usage, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, segov, 0, 0, l1cc, l2cc, l4cc, coherency, l3_cc, l3_clos, igPAT)
+
+#include "GmmXe3P_XPCCachePolicy.h"
+
+    SetUpMOCSTable();
+    SetupPAT();
+
+    // Define index of cache element
+    uint32_t Usage             = 0;
+    uint32_t ReservedPATIdx    = 11; /* Rsvd PAT section 11-22 */
+    uint32_t ReservedPATIdxEnd = 22;
+
+#if (_WIN32 && (_DEBUG || _RELEASE_INTERNAL))
+    void *pKmdGmmContext = NULL;
+#if (defined(__GMM_KMD__))
+    pKmdGmmContext = pGmmLibContext->GetGmmKmdContext();
+#endif
+    OverrideCachePolicy(pKmdGmmContext);
+#endif
+    // Process the cache policy and fill in the look up table
+    for (; Usage < GMM_RESOURCE_USAGE_MAX; Usage++)
+    {
+        bool                         CachePolicyError = false;
+        int32_t                      PATIdx = -1, CPTblIdx = -1, 
PATIdxCompressed = -1, CoherentPATIdx = -1;
+        uint32_t                     i, j;
+        GMM_XE3P_PRIVATE_PAT         UsagePATElement = {0};
+        GMM_CACHE_POLICY_TBL_ELEMENT UsageEle        = {0};
+        GMM_PTE_CACHE_CONTROL_BITS   PTE             = {0};
+
+        // MOCS data
+        {
+            // Get L3 ,L4 and Convert  GMM indicative values to actual regiser 
values.
+            GetL3L4(&UsageEle, &UsagePATElement, Usage);
+            // Convert L1  GMM indicative values to actual regiser values and 
store into pCachePolicy to return to UMD's.
+            SetL1CachePolicy(Usage);
+
+            /* If MOCS is not needed fall back to Defer to PAT i.e MOCS#0 */
+            if (false == UsageEle.L3.PhysicalL3.igPAT)
+            {
+                /* Set cache policy index to defered to PAT i.e. MOCS Index 0 
*/
+                CPTblIdx = 0;
+            }
+            else
+            {
+                /* MOCS Index 1-3 are valid */
+                for (j = 1; j <= CurrentMaxMocsIndex; j++)
+                {
+                    GMM_CACHE_POLICY_TBL_ELEMENT *TblEle = 
&pGmmLibContext->GetCachePolicyTlbElement()[j];
+                    if (UsageEle.L3.PhysicalL3.L4CC == 
TblEle->L3.PhysicalL3.L4CC &&
+                        UsageEle.L3.PhysicalL3.L3CC == 
TblEle->L3.PhysicalL3.L3CC &&
+                        UsageEle.L3.PhysicalL3.L3CLOS == 
TblEle->L3.PhysicalL3.L3CLOS &&
+                        UsageEle.L3.PhysicalL3.igPAT == true)
+                    {
+                        CPTblIdx = j;
+                        break;
+                    }
+                }
+            }
+
+            if (CPTblIdx == -1)
+            {
+                {
+                    /* Invalid MOCS setting Fail the GMM Initialzation */
+                    GMM_ASSERTDPF(false, "CRITICAL: Cache Policy Usage value 
for L3/L4 specified by Client is not defined in Fixed MOCS Table");
+                    CachePolicyError = true;
+                }
+            }
+        }
+
+
+        // PAT data
+        {
+
+            for (i = 0; i <= CurrentMaxPATIndex; i++)
+            {
+                GMM_PRIVATE_PAT PAT = GetPrivatePATEntry(i);
+                if (UsagePATElement.Xe3P.L4CC == PAT.Xe2.L4CC &&
+                    UsagePATElement.Xe3P.Coherency == PAT.Xe2.Coherency &&
+                    UsagePATElement.Xe3P.L3CC == PAT.Xe2.L3CC &&
+                    UsagePATElement.Xe3P.L3CLOS == PAT.Xe2.L3CLOS &&
+                    false == PAT.Xe2.LosslessCompressionEn)
+                {
+                    PATIdx = i;
+                    break;
+                }
+            }
+
+            // Compression is not supported in PAT table, compressed PAT to be 
same as uncompressed PAT
+            PATIdxCompressed = PATIdx;
+
+            if (PATIdx == -1)
+            {
+// Didn't find the caching settings in one of the already programmed PAT table 
entries.
+// Need to add a new lookup table entry.
+                    GMM_ASSERTDPF(
+                    "Cache Policy Init Error: Invalid Cache Programming, too 
many unique caching combinations"
+                    "(we only support NumPATRegisters = %d)",
+                    CurrentMaxPATIndex);
+                    CachePolicyError = true;
+
+                    PATIdx = GMM_PAT_ERROR;
+            }
+
+            /* Find a PATIndex for a coherent uncompressed case, if usage is 
2-way or 1-way already, take that, otherwise search for oneway*/
+            if ((UsagePATElement.Xe3P.Coherency == 
GMM_GFX_PHY_COHERENT_ONE_WAY_IA_SNOOP) ||
+                (UsagePATElement.Xe3P.Coherency == 
GMM_GFX_PHY_COHERENT_TWO_WAY_IA_GPU_SNOOP))
+            {
+                //Already coherent
+                CoherentPATIdx = PATIdx;
+            }
+            else
+            {
+                // search for equivalent one way coherent index
+                for (i = 0; i <= CurrentMaxPATIndex; i++)
+                {
+                    GMM_PRIVATE_PAT PAT = GetPrivatePATEntry(i);
+                    if (UsagePATElement.Xe3P.L4CC == PAT.Xe2.L4CC &&
+                        UsagePATElement.Xe3P.L3CC == PAT.Xe2.L3CC &&
+                        UsagePATElement.Xe3P.L3CLOS == PAT.Xe2.L3CLOS &&
+                        GMM_GFX_PHY_COHERENT_ONE_WAY_IA_SNOOP == 
PAT.Xe2.Coherency)
+                    {
+                        if ((false == PAT.Xe2.LosslessCompressionEn) && 
(CoherentPATIdx == -1))
+                        {
+                            CoherentPATIdx = i;
+                        }
+                        if (CoherentPATIdx != -1)
+                        {
+                            break;
+                        }
+                    }
+                }
+                if (CoherentPATIdx == -1)
+                {
+                    //redo matching based on L3:UC, L4:UC, we should find one
+                    for (i = 0; i <= CurrentMaxPATIndex; i++)
+                    {
+                        GMM_PRIVATE_PAT PAT = GetPrivatePATEntry(i);
+                        if (GMM_GFX_PHY_L4_MT_UC == PAT.Xe2.L4CC &&
+                            GMM_GFX_PHY_L3_MT_UC == PAT.Xe2.L3CC &&
+                            UsagePATElement.Xe3P.L3CLOS == PAT.Xe2.L3CLOS &&
+                            GMM_GFX_PHY_COHERENT_ONE_WAY_IA_SNOOP == 
PAT.Xe2.Coherency)
+                        {
+                            if ((false == PAT.Xe2.LosslessCompressionEn) && 
(CoherentPATIdx == -1))
+                            {
+                                CoherentPATIdx = i;
+                            }
+
+                            if (CoherentPATIdx != -1)
+                            {
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        pCachePolicy[Usage].PATIndex                                 = PATIdx;
+        pCachePolicy[Usage].CoherentPATIndex                         = 
GET_COHERENT_PATINDEX_LOWER_BITS(CoherentPATIdx); // Coherent uncompressed 
lower bits
+        pCachePolicy[Usage].CoherentPATIndexHigherBit                = 
GET_COHERENT_PATINDEX_HIGHER_BIT(CoherentPATIdx); // Coherent uncompressed 
higher bits
+        pCachePolicy[Usage].PATIndexCompressed                       = 
PATIdxCompressed;
+        pCachePolicy[Usage].PTE.DwordValue                           = 
GMM_GET_PTE_BITS_FROM_PAT_IDX(PATIdx) & 0xFFFFFFFF;
+        pCachePolicy[Usage].PTE.HighDwordValue                       = 
GMM_GET_PTE_BITS_FROM_PAT_IDX(PATIdx) >> 32;
+        pCachePolicy[Usage].MemoryObjectOverride.XE_HP.Index         = 
CPTblIdx;
+        pCachePolicy[Usage].MemoryObjectOverride.XE_HP.EncryptedData = 0;
+        pCachePolicy[Usage].Override                                 = 
ALWAYS_OVERRIDE;
+
+        //printf("Usage: [%d], PAT: [%d], Comp:[%d], MOCSIdx:[%d] \n", Usage, 
PATIdx, PATIdxCompressed, CPTblIdx);
+
+        if (CachePolicyError)
+        {
+            GMM_ASSERTDPF(false, "Cache Policy Init Error: Invalid Cache 
Programming ");
+            return GMM_INVALIDPARAM;
+        }
+    }
+    return GMM_SUCCESS;
+}
+
+//=============================================================================
+//
+// Function: __:GetL3L4
+//
+// Desc: This function converts GMM indicative values to actual register values
+//
+// Parameters:
+//
+// Return: GMM_STATUS
+//
+//-----------------------------------------------------------------------------
+void GmmLib::GmmXe3P_XPCCachePolicy::GetL3L4(GMM_CACHE_POLICY_TBL_ELEMENT 
*pUsageEle, GMM_XE3P_PRIVATE_PAT *pUsagePATElement, uint32_t Usage)
+{
+
+    //MOCS
+    pUsageEle->L3.PhysicalL3.Reserved0 = pUsageEle->L3.PhysicalL3.Reserved = 0;
+    //L3CLOS
+    pUsageEle->L3.PhysicalL3.L3CLOS = 0;
+    //IgPAT
+    pUsageEle->L3.PhysicalL3.igPAT = pCachePolicy[Usage].IgnorePAT;
+
+
+    //PAT
+    pUsagePATElement->Xe3P.Reserved1 = 0;
+    pUsagePATElement->Xe3P.Reserved2 = 0;
+
+    pUsagePATElement->Xe3P.L3CLOS = 0;
+    
+    switch (pCachePolicy[Usage].L3CC)
+    {
+    case GMM_UC:
+        pUsageEle->L3.PhysicalL3.L3CC = GMM_GFX_PHY_L3_MT_UC;
+        pUsagePATElement->Xe3P.L3CC   = GMM_GFX_PHY_L3_MT_UC;
+        break;
+    case GMM_WB:
+        pUsageEle->L3.PhysicalL3.L3CC = GMM_GFX_PHY_L3_MT_WB;
+        pUsagePATElement->Xe3P.L3CC   = GMM_GFX_PHY_L3_MT_WB;
+        break;
+    default:
+        pUsageEle->L3.PhysicalL3.L3CC = GMM_GFX_PHY_L3_MT_UC;
+        pUsagePATElement->Xe3P.L3CC   = GMM_GFX_PHY_L3_MT_UC;
+    }
+
+    switch (pCachePolicy[Usage].L4CC)
+    {
+    case GMM_UC:
+        pUsageEle->L3.PhysicalL3.L4CC = GMM_GFX_PHY_L4_MT_UC;
+        pUsagePATElement->Xe3P.L4CC   = GMM_GFX_PHY_L4_MT_UC;
+        break;
+    case GMM_WB:
+        pUsageEle->L3.PhysicalL3.L4CC = GMM_GFX_PHY_L4_MT_WB;
+        pUsagePATElement->Xe3P.L4CC   = GMM_GFX_PHY_L4_MT_WB;
+        break;
+    default:
+        pUsageEle->L3.PhysicalL3.L4CC = GMM_GFX_PHY_L4_MT_UC;
+        pUsagePATElement->Xe3P.L4CC   = GMM_GFX_PHY_L4_MT_UC;
+    }
+
+    switch (pCachePolicy[Usage].Coherency)
+    {
+    case GMM_NON_COHERENT_NO_SNOOP:
+        pUsagePATElement->Xe3P.Coherency = GMM_GFX_NON_COHERENT_NO_SNOOP;
+        break;
+    case GMM_COHERENT_ONE_WAY_IA_SNOOP:
+        pUsagePATElement->Xe3P.Coherency = GMM_GFX_COHERENT_ONE_WAY_IA_SNOOP;
+        break;
+    case GMM_COHERENT_TWO_WAY_IA_GPU_SNOOP:
+        pUsagePATElement->Xe3P.Coherency = 
GMM_GFX_COHERENT_TWO_WAY_IA_GPU_SNOOP;
+        break;
+    default:
+        pUsagePATElement->Xe3P.Coherency = GMM_GFX_NON_COHERENT_NO_SNOOP;
+        break;
+    }
+}
+
+/////////////////////////////////////////////////////////////////////////////////////
+///      A simple getter function returning the PAT (cache policy) for a given
+///      use Usage of the named resource pResInfo.
+///      Typically used to populate PPGTT/GGTT.
+///
+/// @param[in]     pResInfo: Resource info for resource, can be NULL.
+/// @param[in]     Usage: Current usage for resource.
+/// @param[Optional]    Usage: for Xe3P-XPC compression parameter
+///
+/// @return        PATIndex
+/////////////////////////////////////////////////////////////////////////////////////
+uint32_t GMM_STDCALL 
GmmLib::GmmXe3P_XPCCachePolicy::CachePolicyGetPATIndex(GMM_RESOURCE_INFO 
*pResInfo, GMM_RESOURCE_USAGE_TYPE Usage, bool *pCompressionEnable, bool 
IsCpuCacheable)
+{
+    __GMM_ASSERT(pGmmLibContext->GetCachePolicyElement(Usage).Initialized);
+
+    uint32_t                 PATIndex             = 
pGmmLibContext->GetCachePolicyElement(Usage).PATIndex;
+    GMM_CACHE_POLICY_ELEMENT TempElement          = 
pGmmLibContext->GetCachePolicyElement(Usage);
+    uint32_t                 TempCoherentPATIndex = 0;
+
+    // This is to check if PATIndexCompressed, CoherentPATIndex are valid
+    // Increment by 1 to have the rollover and value resets to 0 if the PAT in 
not valid.
+    TempElement.PATIndexCompressed += 1;
+    TempCoherentPATIndex = 
(uint32_t)GET_COHERENT_PATINDEX_VALUE(pGmmLibContext, Usage);
+
+    // Higher bit of CoherentPATIndex would tell us if its a valid or not.0--> 
valid, 1-->invalid
+    uint32_t CoherentPATIndex = 
(uint32_t)((GET_COHERENT_PATINDEX_HIGHER_BIT(TempCoherentPATIndex) == 1) ? 
GMM_PAT_ERROR : GET_COHERENT_PATINDEX_VALUE(pGmmLibContext, Usage));
+    //For PATIndexCompressed, rollover value would be 0 if its invalid
+    uint32_t PATIndexCompressed = (uint32_t)(TempElement.PATIndexCompressed == 
0 ? GMM_PAT_ERROR : 
pGmmLibContext->GetCachePolicyElement(Usage).PATIndexCompressed);
+    uint32_t ReturnPATIndex     = GMM_PAT_ERROR;
+    bool     CompressionEnable  = (pCompressionEnable) ? *pCompressionEnable : 
false;
+
+    // Prevent wrong Usage for XAdapter resources. UMD does not call 
GetMemoryObject on shader resources but,
+    // when they add it someone could call it without knowing the restriction.
+    if (pResInfo &&
+        pResInfo->GetResFlags().Info.XAdapter &&
+        (Usage != GMM_RESOURCE_USAGE_XADAPTER_SHARED_RESOURCE))
+    {
+        __GMM_ASSERT(false);
+    }
+
+    // requested compressed and coherent
+    if (CompressionEnable && IsCpuCacheable)
+    {
+        // return coherent uncompressed
+        ReturnPATIndex    = CoherentPATIndex;
+        CompressionEnable = false;
+        GMM_ASSERTDPF(false, "Coherent Compressed is not supported. However, 
respecting the coherency and returning CoherentPATIndex");
+    }
+    // requested compressed only
+    else if (CompressionEnable)
+    {
+
+        if (GMM_PAT_ERROR != PATIndexCompressed)
+        {
+            // return compresed, may or may not coherent which depends on 
orinigal usage
+            ReturnPATIndex    = PATIndexCompressed;
+            CompressionEnable = true;
+        }
+        else
+        {
+            // return original index
+            ReturnPATIndex    = PATIndex;
+            CompressionEnable = false;
+        }
+    }
+    // requested coherent only
+    else if (IsCpuCacheable)
+    {
+        //return coherent uncompressed
+        ReturnPATIndex    = CoherentPATIndex;
+        CompressionEnable = false;
+    }
+    /* Requested UnCompressed PAT */
+    else
+    {
+        if (GMM_PAT_ERROR != PATIndex)
+        {
+            ReturnPATIndex    = PATIndex;
+            CompressionEnable = false;
+        }
+    }
+
+    /* No valid PAT Index found */
+    if (GMM_PAT_ERROR == ReturnPATIndex)
+    {
+        ReturnPATIndex    = GMM_XE2_DEFAULT_PAT_INDEX; //default to uncached 
PAT index 2: GMM_CP_NON_COHERENT_UC
+        CompressionEnable = false;
+        __GMM_ASSERT(false);
+    }
+
+    if (pCompressionEnable)
+    {
+        *pCompressionEnable = CompressionEnable;
+    }
+
+    return ReturnPATIndex;
+}
+
+//=============================================================================
+//
+// Function: SetUpMOCSTable
+//
+// Desc:
+//
+// Parameters:
+//
+// Return: GMM_STATUS
+//
+//-----------------------------------------------------------------------------
+void GmmLib::GmmXe3P_XPCCachePolicy::SetUpMOCSTable()
+{
+    GMM_CACHE_POLICY_TBL_ELEMENT *pCachePolicyTlbElement = 
&(pGmmLibContext->GetCachePolicyTlbElement()[0]);
+
+#define L4_WB (0x0)
+#define L4_UC (0x3)
+
+#define L3_WB (0x0)
+#define L3_UC (0x3)
+
+#define GMM_DEFINE_MOCS(indx, L4Caching, L3Caching, L3ClassOfService, 
ignorePAT) \
+    {                                                                          
  \
+        pCachePolicyTlbElement[indx].L3.PhysicalL3.L4CC      = L4Caching;      
  \
+        pCachePolicyTlbElement[indx].L3.PhysicalL3.Reserved0 = 0;              
  \
+        pCachePolicyTlbElement[indx].L3.PhysicalL3.L3CC      = L3Caching;      
  \
+        pCachePolicyTlbElement[indx].L3.PhysicalL3.L3CLOS    = 
L3ClassOfService; \
+        pCachePolicyTlbElement[indx].L3.PhysicalL3.igPAT     = ignorePAT;      
  \
+    }
+
+    // clang-format off
+    // Default MOCS Table
+    for(uint32_t j = 0; j < GMM_XE3P_NUM_MOCS_ENTRIES; j++)
+    {   //               Index            CachingPolicy   L3Caching      
L3ClassOfService    ignorePAT
+        GMM_DEFINE_MOCS( j,               L4_UC,          L3_UC,             0 
         ,     0  )
+    }
+
+    //             Index    L4 CachingPolicy   L3 CachingPolicy   L3 CLOS   
ignorePAT
+    GMM_DEFINE_MOCS( 0      , L4_UC              , L3_WB           , 0     , 
0)   // Defer to PAT
+    GMM_DEFINE_MOCS( 1      , L4_UC              , L3_UC           , 0     , 
1)   // UC
+    GMM_DEFINE_MOCS( 2      , L4_UC              , L3_WB           , 0     , 
1)   // L3
+    GMM_DEFINE_MOCS( 3      , L4_WB              , L3_UC           , 0     , 
1)   // L4
+    GMM_DEFINE_MOCS( 4      , L4_WB              , L3_WB           , 0     , 
1)   // L3+L4
+
+    CurrentMaxMocsIndex = 4;
+    CurrentMaxL1HdcMocsIndex   = 0;
+    CurrentMaxSpecialMocsIndex = 0;
+    // clang-format on
+
+#undef GMM_DEFINE_MOCS
+#undef L4_WB
+#undef L4_UC
+
+#undef L3_WB
+#undef L3_UC
+}
+
+
+//=============================================================================
+//
+// Function: SetupPAT
+//
+// Desc:
+//
+// Parameters:
+//
+// Return: GMM_STATUS
+//
+//-----------------------------------------------------------------------------
+GMM_STATUS GmmLib::GmmXe3P_XPCCachePolicy::SetupPAT()
+{
+    GMM_PRIVATE_PAT *pPATTlbElement = 
&(pGmmLibContext->GetPrivatePATTable()[0]);
+
+#define L4_WB (0x0)
+#define L4_UC (0x3)
+
+#define L3_WB (0x0)
+#define L3_UC (0x3)
+
+#define GMM_DEFINE_PAT_ELEMENT(indx, Coh, L4Caching, L3Caching, 
L3ClassOfService, NoCachePromote) \
+    {                                                                          
                   \
+        pPATTlbElement[indx].Xe2.Coherency             = Coh;                  
                   \
+        pPATTlbElement[indx].Xe2.L4CC                  = L4Caching;            
                   \
+        pPATTlbElement[indx].Xe2.Reserved1             = 0;                    
                   \
+        pPATTlbElement[indx].Xe2.Reserved2             = 0;                    
                   \
+        pPATTlbElement[indx].Xe2.L3CC                  = L3Caching;            
                   \
+        pPATTlbElement[indx].Xe2.L3CLOS                = L3ClassOfService;     
                   \
+        pPATTlbElement[indx].Xe2.LosslessCompressionEn = 0;                    
                   \
+        pPATTlbElement[indx].Xe2.NoCachingPromote      = NoCachePromote;       
                   \
+    }
+
+    // clang-format off
+
+    // Default PAT Table
+    // 32 nos
+    for (uint32_t i = 0; i < (NumPATRegisters); i++)
+    {   //                      Index  Coherency  CachingPolicy  L3Caching  
L3ClassOfService  NoCachingPromote
+        GMM_DEFINE_PAT_ELEMENT( i,     3,         L4_UC,         L3_UC,     0, 
               0);
+    }
+
+    // Fixed PAT Table
+    //                      Index  Coherency  L4 CachingPolicy   L3 
CachingPolicy   L3 CLOS      NoCachingPromote
+    //Group: GGT/PPGTT[4]
+    GMM_DEFINE_PAT_ELEMENT( 0      , 0      , L4_WB              , L3_WB       
    , 0           , 0)    //          | L3_WB | L4_WB
+    GMM_DEFINE_PAT_ELEMENT( 1      , 2      , L4_WB              , L3_WB       
    , 0           , 0)    //          | L3_WB | L4_WB | 1 way coherent
+    GMM_DEFINE_PAT_ELEMENT( 2      , 3      , L4_WB              , L3_WB       
    , 0           , 0)    //          | L3_WB | L4_WB | 2 way coherent
+    GMM_DEFINE_PAT_ELEMENT( 3      , 0      , L4_UC              , L3_UC       
    , 0           , 0)    //          | UC   
+    //Group: Other UC
+    GMM_DEFINE_PAT_ELEMENT( 4      , 2      , L4_UC              , L3_UC       
    , 0           , 0)    //          | UC | 1 way coherent
+    //Group L4 only
+    GMM_DEFINE_PAT_ELEMENT( 5      , 0      , L4_WB              , L3_UC       
    , 0           , 0)    //          | L4_WB
+    GMM_DEFINE_PAT_ELEMENT( 6      , 2      , L4_WB              , L3_UC       
    , 0           , 0)    //          | L4_WB | 1 way coherent
+    GMM_DEFINE_PAT_ELEMENT( 7      , 3      , L4_WB              , L3_UC       
    , 0           , 0)    //          | L4_WB | 2 way coherent
+    //Group L3 only
+    GMM_DEFINE_PAT_ELEMENT( 8      , 0      , L4_UC              , L3_WB       
    , 0           , 0)    //          | L3_WB  
+    GMM_DEFINE_PAT_ELEMENT( 9      , 2      , L4_UC              , L3_WB       
    , 0           , 0)    //          | L3_WB | 1 way coherent 
+    GMM_DEFINE_PAT_ELEMENT( 10     , 3      , L4_UC              , L3_WB       
    , 0           , 0)    //          | L3_WB | 2 way coherent
+    // Reserved 11 - 22
+    //Group: CLOS1
+    GMM_DEFINE_PAT_ELEMENT( 23     , 0      , L4_WB              , L3_WB       
    , 1           , 0)    //          | L3_WB | L4_WB  
+    GMM_DEFINE_PAT_ELEMENT( 24     , 2      , L4_WB              , L3_WB       
    , 1           , 0)    //          | L3_WB | L4_WB | 1 way coherent  
+    GMM_DEFINE_PAT_ELEMENT( 25     , 3      , L4_WB              , L3_WB       
    , 1           , 0)    //          | L3_WB | L4_WB | 2 way coherent 
+    //Group: CLOS2
+    GMM_DEFINE_PAT_ELEMENT( 26     , 0      , L4_WB              , L3_WB       
    , 2           , 0)    //          | L3_WB | L4_WB  
+    GMM_DEFINE_PAT_ELEMENT( 27     , 2      , L4_WB              , L3_WB       
    , 2           , 0)    //          | L3_WB | L4_WB | 1 way coherent  
+    GMM_DEFINE_PAT_ELEMENT( 28     , 3      , L4_WB              , L3_WB       
    , 2           , 0)    //          | L3_WB | L4_WB | 2 way coherent
+    //Group: CLOS3
+    GMM_DEFINE_PAT_ELEMENT( 29     , 0      , L4_WB              , L3_WB       
    , 3           , 0)    //          | L3_WB | L4_WB  
+    GMM_DEFINE_PAT_ELEMENT( 30     , 2      , L4_WB              , L3_WB       
    , 3           , 0)    //          | L3_WB | L4_WB | 1 way coherent  
+    GMM_DEFINE_PAT_ELEMENT( 31     , 3      , L4_WB              , L3_WB       
    , 3           , 0)    //          | L3_WB | L4_WB | 2 way coherent
+    
+    CurrentMaxPATIndex = 31;
+
+// clang-format on
+#undef GMM_DEFINE_PAT
+#undef L4_WB
+#undef L4_UC
+
+#undef L3_WB
+#undef L3_UC
+    return GMM_SUCCESS;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmXe3P_XPCCachePolicy.h
 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmXe3P_XPCCachePolicy.h
--- 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmXe3P_XPCCachePolicy.h
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmXe3P_XPCCachePolicy.h
   2025-12-12 13:20:35.000000000 +0100
@@ -0,0 +1,303 @@
+/*==============================================================================
+Copyright(c) 2025 Intel Corporation
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files(the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and / or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+============================================================================*/
+
+#include "GmmCachePolicyConditionals.h"
+
+#define _SN        0x1
+#define _IA_GPU_SN 0x2
+#define _WT        0x2
+#define _L1_WB     0x2
+#define dGPU       SKU(FtrDiscrete)
+
+#if (_DEBUG || _RELEASE_INTERNAL)
+#define _WA_WB_Emu (WA(Wa_EmuMufasaSupportOnBmg))
+#else
+#define _WA_WB_Emu 0
+#endif
+
+
+// clang-format off
+//typedef enum GMM_CACHING_POLICY_REC
+//{
+//    GMM_UC   = 0x0, //uncached
+//    GMM_WB   = 0x1, // Write back
+//    GMM_WT   = 0x2, // write-through
+//    GMM_WBTD = 0x3, // WB_T_Display
+//    GMM_WBTA = 0x4, // WB_T_App
+//    GMM_WBP  = 0x5, // write bypass mode
+//    GMM_WS   = 0x6, // Write-Streaming
+//} GMM_CACHING_POLICY;
+//
+// typedef enum GMM_COHERENCY_TYPE_REC
+//{
+//GMM_NON_COHERENT_NO_SNOOP         = 0x0,
+//GMM_COHERENT_ONE_WAY_IA_SNOOP     = 0x1,
+//GMM_COHERENT_TWO_WAY_IA_GPU_SNOOP = 0x2
+//} GMM_COHERENCY_TYPE;
+// Cache Policy Definition
+// L3_CLOS      : L3 class of service (0,1,2,3)
+// IgPAT        : Ignore PAT 1 = Override by MOCS, 0 = Defer to PAT
+// 
+//Macros for segment-preference
+#define NoP                          0x0
+#define NonLocal_Only                0x1
+#define Local_Only                   0x2
+#define LMemBarOrNonLocal_Only       0x3
+#define SystemOverflowToLocal        0x4
+#define NonLocalOnlyOnLimitedLmemBar 0x5
+#define LMemBar_Preferred            0x6
+#define LMemBar_Indifferent          0x7
+
+#define ISWA_1401844305USAGE(usage)       ((Usage == GMM_USAGE_COPY_SOURCE) || 
             \
+                                           (Usage == GMM_USAGE_COPY_DEST) ||   
             \
+                                           (Usage == 
GMM_RESOURCE_USAGE_BLT_SOURCE) ||      \
+                                           (Usage == 
GMM_RESOURCE_USAGE_BLT_DESTINATION) || \
+                                           (Usage == 
GMM_RESOURCE_USAGE_COPY_SOURCE) ||     \
+                                           (Usage == 
GMM_RESOURCE_USAGE_COPY_DEST))
+
+// SegOv: Override segment preference : 0= Default ie no override, 
1=NonLocal_Only ie NonLocal Only, 2=Local_Only ie Local Only (NonCpuVisible Bar 
on Small Lmem Configs else CpuVisble Bar) 
+// SegOv: 3=LMemBarOrNonLocalOnly ie CpuVisible Bar but overflow to System, 
4=SystemOverflowToLocal ie System but overflow to Local,
+// SegOV: 5=NonLocalOnlyOnLimitedLmemBar ie System Only on Small Lmem Configs, 
+// SegOV: 6=LMemBarPreferred ie CpuVisible Bar overflow to NonCPUVisible bar 
overlow to System
+// SegOV: 7= LMemBarIndifferent ie NonCPUVisible Bar overflow to System)
+//******************************************************************************************************************************************************************/
+//                   USAGE TYPE                                                
               L3_CC, L3_CLOS, L1CC,   L2CC,   L4CC,     Coherency, IgPAT, 
SegOv)
+/*******************************************************************************************************************************************************************/
+// KMD Usages
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_BATCH_BUFFER                           
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COMP_FRAME_BUFFER                      
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_CONTEXT_SWITCH_BUFFER                  
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_CURSOR                                 
               ,  3,     0,     0,      0    ,  0                       ,  0    
 , 0,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DISPLAY_STATIC_IMG_FOR_SMOOTH_ROTATION_BUFFER
         ,  3,     0,     0,      0    ,  0                       ,  0     , 0, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DUMMY_PAGE                             
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_GDI_SURFACE                            
               ,  1,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_GENERIC_KMD_RESOURCE                   
               ,  0,        0,     0,      0    ,  0                    ,  0    
 , 1,    NoP);
+// GMM_RESOURCE_USAGE_GFX_RING is only used if WaEnableRingHostMapping is 
enabled .
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_GFX_RING                               
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,     NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_GTT_TRANSFER_REGION                    
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,     NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_HW_CONTEXT                             
               ,  0,     0,     0,         0    ,  0                    ,  0    
 , 1,     NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_STATE_MANAGER_KERNEL_STATE             
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_KMD_STAGING_SURFACE                    
               ,  1,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_MBM_BUFFER                             
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_NNDI_BUFFER                            
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OVERLAY_MBM                            
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_PRIMARY_SURFACE                        
               ,  3,     0,     0,      0    ,  0                       ,  0    
 , 0,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_SCREEN_PROTECTION_INTERMEDIATE_SURFACE 
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_SHADOW_SURFACE                         
               ,  1,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_SM_SCRATCH_STATE                       
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_STATUS_PAGE                            
               ,  1,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_TIMER_PERF_QUEUE                       
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_UNKNOWN                                
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_UNMAP_PAGING_RESERVED_GTT_DMA_BUFFER   
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VSC_BATCH_BUFFER                       
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_WA_BATCH_BUFFER                        
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_KMD_OCA_BUFFER                         
               ,  0,     0,     0,      0    ,  0                       ,  0    
 , 1,    NoP);
+
+//
+// 3D Usages
+//
+//                   USAGE TYPE                                                
               L3_CC, L3_CLOS,L1CC,   L2CC,   L4CC,     Coherency , IgPAT)
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_TILED_DEPTH_BUFFER                     
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_TILED_HIZ                              
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_UMD_BATCH_BUFFER                       
               ,  0,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_BINDING_TABLE_POOL                     
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_CCS                                    
               ,  0,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_CONSTANT_BUFFER_POOL                   
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DEPTH_BUFFER                           
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DISPLAYABLE_RENDER_TARGET              
               ,  3,     0,     0,      0    , 0                ,  0     ,   0, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_GATHER_POOL                            
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_HEAP_SURFACE_STATE                     
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_HEAP_DYNAMIC_STATE                     
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_HEAP_GENERAL_STATE                     
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_HEAP_GENERAL_STATE_UC                  
               ,  0,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_HEAP_STATELESS_DATA_PORT               
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_HEAP_STATELESS_DATA_PORT_L1_CACHED     
               ,  1,     0,     1,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_HEAP_INDIRECT_OBJECT                   
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_HEAP_INSTRUCTION                       
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_HIZ                                    
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_INDEX_BUFFER                           
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_INDEX_BUFFER_L3_COHERENT_UC            
               ,  0,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_INDEX_BUFFER_L3_CACHED                 
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_MCS                                    
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP); 
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_PUSH_CONSTANT_BUFFER                   
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_PULL_CONSTANT_BUFFER                   
               ,  1,     0,     5,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_QUERY                                  
               ,  _WA_WB_Emu,     0,     0,      0    , 0               ,  1    
 ,   1,    NoP); 
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_RENDER_TARGET                          
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_SHADER_RESOURCE                        
               ,  1,     0,     5,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_STAGING                                
               ,  _WA_WB_Emu,     0,     0,      0    , 0               ,  1    
 ,   1,    NoP);  
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_STENCIL_BUFFER                         
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_STREAM_OUTPUT_BUFFER                   
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_TILE_POOL                              
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_SHADER_RESOURCE_LLC_BYPASS             
               ,  1,     0,     5,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_MOCS_62                                
               ,  0,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP); 
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_L3_EVICTION                            
               ,  0,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP); 
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_L3_EVICTION_SPECIAL                    
               ,  0,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_UMD_OCA_BUFFER                         
               ,  0,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_PROCEDURAL_TEXTURE                     
               ,  1,     0,     0,      0    , 0                ,  0     ,   1, 
   NoP);
+
+// Tiled Resource
+//
+//                   USAGE TYPE                                                
               L3_CC, L3_CLOS,L1CC,   L2CC,   L4CC,     Coherency,  IgPAT)
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_TILED_DEPTH_BUFFER                     
               ,  1,     0,     0,      0    , 0      ,  0     ,    1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_TILED_HIZ                              
               ,  1,     0,     0,      0    , 0      ,  0     ,    1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_TILED_MCS                              
               ,  1,     0,     0,      0    , 0      ,  0     ,    1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_TILED_CCS                              
               ,  1,     0,     0,      0    , 0      ,  0     ,    1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_TILED_RENDER_TARGET                    
               ,  1,     0,     0,      0    , 0      ,  0     ,    1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_TILED_RENDER_TARGET_AND_SHADER_RESOURCE
               ,  1,     0,     5,      0    , 0      ,  0     ,    1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_TILED_SHADER_RESOURCE                  
               ,  1,     0,     5,      0    , 0      ,  0     ,    1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_TILED_UAV                              
               ,  1,     0,     0,      0    , 0      ,  0     ,    1,    NoP);
+
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_UAV                                    
               ,  1,     0,     0,      0    , 0      ,  0     ,    1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VERTEX_BUFFER                          
               ,  1,     0,     0,      0    , 0      ,  0     ,    1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VERTEX_BUFFER_L3_COHERENT_UC           
               ,  0,     0,     0,      0    , 0      ,  0     ,    1,    NoP); 
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VERTEX_BUFFER_L3_CACHED                
               ,  1,     0,     0,      0    , 0      ,  0     ,    1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OGL_WSTN_VERTEX_BUFFER                 
               ,  1,     0,     0,      0    , 0      ,  0     ,    1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_POSH_VERTEX_BUFFER                     
               ,  1,     0,     0,      0    , 0      ,  0     ,    1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_RENDER_TARGET_AND_SHADER_RESOURCE      
               ,  1,     0,     5,      0    , 0      ,  0     ,    1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_WDDM_HISTORY_BUFFER                    
               ,  1,     0,     0,      0    , 0      ,  0     ,    1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_CONTEXT_SAVE_RESTORE                   
               ,  1,     0,     0,      0    , 0      ,  0     ,    1,   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_PTBR_PAGE_POOL                         
               ,  1,     0,     0,      0    , 0      ,  0     ,    1,   NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_PTBR_BATCH_BUFFER                      
               ,  1,     0,     0,      0    , 0      ,  0     ,    1,   NoP);
+
+//
+// CM USAGES
+//
+//                   USAGE TYPE                                                
                L3_CC, L3_CLOS,L1CC,   L2CC,   L4CC,     Coherency, IgPAT)
+DEFINE_CACHE_ELEMENT(CM_RESOURCE_USAGE_SurfaceState,                           
                 1,     0,     0,      0    , 1      ,  0     ,     1,  NoP);
+DEFINE_CACHE_ELEMENT(CM_RESOURCE_USAGE_L1_Enabled_SurfaceState,                
                 1,     0,     1,      0    , 1      ,  0     ,     1,  NoP);
+DEFINE_CACHE_ELEMENT(CM_RESOURCE_USAGE_StateHeap,                              
                 1,     0,     0,      0    , 1      ,  0     ,     1,  NoP);
+DEFINE_CACHE_ELEMENT(CM_RESOURCE_USAGE_NO_L3_SurfaceState,                     
                 0,     0,     0,      0    , 1      ,  0     ,     1,  NoP);
+DEFINE_CACHE_ELEMENT(CM_RESOURCE_USAGE_NO_CACHE_SurfaceState,                  
                 0,     0,     0,      0    , 0      ,  0     ,     1,  NoP);
+
+//
+// MP USAGES
+//
+//                   USAGE TYPE                                                
               L3_CC, L3_CLOS,L1CC,   L2CC,   L4CC,     Coherency,  IgPAT )
+DEFINE_CACHE_ELEMENT(MP_RESOURCE_USAGE_BEGIN,                                  
                 0,     0,     0,      0    ,  0       ,  0     ,    1, NoP);
+DEFINE_CACHE_ELEMENT(MP_RESOURCE_USAGE_DEFAULT,                                
                 0,     0,     0,      0    ,  0       ,  0     ,    1, NoP);
+DEFINE_CACHE_ELEMENT(MP_RESOURCE_USAGE_DEFAULT_FF,                             
                 0,     0,     0,      0    ,  0       ,  0     ,    1, NoP);
+DEFINE_CACHE_ELEMENT(MP_RESOURCE_USAGE_DEFAULT_RCS,                            
                 0,     0,     0,      0    ,  0       ,  0     ,    1, NoP);
+DEFINE_CACHE_ELEMENT(MP_RESOURCE_USAGE_SurfaceState,                           
                 1,     0,     0,      0    ,  1       ,  0     ,    1, NoP);
+DEFINE_CACHE_ELEMENT(MP_RESOURCE_USAGE_SurfaceState_FF,                        
                 0,     0,     0,      0    ,  0       ,  0     ,    1, NoP);
+DEFINE_CACHE_ELEMENT(MP_RESOURCE_USAGE_SurfaceState_RCS,                       
                 1,     0,     0,      0    ,  1       ,  0     ,    1, NoP);
+DEFINE_CACHE_ELEMENT(MP_RESOURCE_USAGE_END,                                    
                 0,     0,     0,      0    ,  0       ,  0     ,    1, NoP); 
+
+// MHW - SFC
+//                   USAGE TYPE                                                
               , L3_CC, L3_CLOS,L1CC,   L2CC,   L4CC,     Coherency, IgPAT)
+DEFINE_CACHE_ELEMENT(MHW_RESOURCE_USAGE_Sfc_CurrentOutputSurface,              
                 0,     0,     0,      0    ,  0       ,  0     ,   1,    NoP);
+DEFINE_CACHE_ELEMENT(MHW_RESOURCE_USAGE_Sfc_AvsLineBufferSurface,              
                 0,     0,     0,      0    ,  0       ,  0     ,   1,    NoP);
+DEFINE_CACHE_ELEMENT(MHW_RESOURCE_USAGE_Sfc_IefLineBufferSurface,              
                 0,     0,     0,      0    ,  0       ,  0     ,   1,    NoP);
+
+
+
+/**********************************************************************************/
+
+//
+// OCL Usages
+//
+//                   USAGE TYPE                                                
               L3_CC, L3_CLOS,L1CC,   L2CC,   L4CC,     Coherency , IgPAT)
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_BUFFER                             
               ,  1,     0,      0,      0    , 0               ,  0       ,  
1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_BUFFER_CONST                       
               ,  1,     0,      5,      0    , 0               ,  0       ,  
1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_BUFFER_CSR_UC                      
               ,  0,     0,      0,      0    , 0               ,  0       ,  
1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED        
               ,  0,     0,      0,      0    , 0               ,  0       ,  
1,    NoP); 
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_IMAGE                              
               ,  1,     0,      0,      0    , 0               ,  0       ,  
1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_INLINE_CONST                       
               ,  1,     0,      0,      0    , 0               ,  0       ,  
1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_INLINE_CONST_HDC                   
               ,  1,     0,      5,      0    , 0               ,  0       ,  
1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_SCRATCH                            
               ,  1,     0,      0,      0    , 0               ,  0       ,  
1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_PRIVATE_MEM                        
               ,  1,     0,      0,      0    , 0               ,  0       ,  
1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_PRINTF_BUFFER                      
               ,  1,     0,      0,      0    , 0               ,  0       ,  
1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_STATE_HEAP_BUFFER                  
               ,  1,     0,      0,      0    , 0               ,  0       ,  
1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER               
               ,  1,     0,      0,      0    , 0               ,  1       ,  
1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER_CACHELINE_MISALIGNED
         ,  0,     0,      0,      0    , 0               ,  0       ,  1,    
NoP); 
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_ISH_HEAP_BUFFER                    
               ,  1,     0,      0,      0    , 0               ,  0       ,  
1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_TAG_MEMORY_BUFFER                  
               ,  1,     0,      0,      0    , 0               ,  0       ,  
1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_TEXTURE_BUFFER                     
               ,  1,     0,      0,      0    , 0               ,  0       ,  
1,    NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_OCL_SELF_SNOOP_BUFFER                  
               ,  1,     0,      0,      0    , 0               ,  0       ,  
1,    NoP);
+/**********************************************************************************/
+
+// Cross Adapter
+//                   USAGE TYPE                                                
               ,L3_CC, L3_CLOS,L1CC,   L2CC,   L4CC,     Coherency , IgPAT)
+DEFINE_CACHE_ELEMENT( GMM_RESOURCE_USAGE_XADAPTER_SHARED_RESOURCE              
               ,  1,     0,     1,      0    ,  0               ,  0       , 1, 
NoP);
+/**********************************************************************************/
+
+// BCS
+//                   USAGE TYPE                                                
                L3_CC,  L3_CLOS, L1CC,   L2CC,   L4CC,     Coherency, IgPAT)
+DEFINE_CACHE_ELEMENT( GMM_RESOURCE_USAGE_BLT_SOURCE                            
               ,  0,      0,      0,      0,      0,           0,       1, NoP);
+DEFINE_CACHE_ELEMENT( GMM_RESOURCE_USAGE_BLT_DESTINATION                       
               ,  0,      0,      0,      0,      0,           0,       1, NoP);
+
+/**********************************************************************************/
+//
+// MEDIA USAGES
+//                   USAGE TYPE                                                
         L3_CC,   L3_CLOS,L1CC,   L2CC,   L4CC,     Coherency,  IgPAT )
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_MEDIA_BATCH_BUFFERS                    
         ,  0,     0,      0,      0,           0,         0 ,        1,        
  NoP    );
+// DECODE
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_INPUT_BITSTREAM                 
         ,  1,     0,     0,      0,                    0,         0  ,        
0,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_INPUT_REFERENCE                 
         ,  1,     0,     0,      1,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_INTERNAL_READ                   
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_INTERNAL_WRITE                  
         ,  0,     0,     0,      0,                    0,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_INTERNAL_READ_WRITE_CACHE       
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP    ); 
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_INTERNAL_READ_WRITE_NOCACHE     
         ,  0,     0,     0,      0,                    0,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_OUTPUT_PICTURE                  
         ,  3,     0,     0,      0,                    2,         0  ,        
0,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_OUTPUT_STATISTICS_WRITE         
         ,  0,     0,     0,      0,                    0,         1  ,        
1,    NoP    );  
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DECODE_OUTPUT_STATISTICS_READ_WRITE    
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP         );
+// ENCODE
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_INPUT_RAW                       
         ,  1,     0,     0,      0,                    0,         0  ,        
0,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_INPUT_RECON                     
         ,  1,     0,     0,      1,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_INTERNAL_READ                   
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_INTERNAL_WRITE                  
         ,  0,     0,     0,      0,                    0,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_INTERNAL_READ_WRITE_CACHE       
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_INTERNAL_READ_WRITE_NOCACHE     
         ,  0,     0,     0,      0,                    0,         0  ,        
1,    NoP    );  
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_EXTERNAL_READ                   
         ,  0,     0,     0,      0,                    0,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_OUTPUT_PICTURE                  
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_OUTPUT_BITSTREAM                
         ,  0,     0,     0,      0,                    0,         1  ,        
1,         NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_OUTPUT_STATISTICS_WRITE         
         ,  0,     0,     0,      0,                    0,         1  ,        
1,         NoP    ); 
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_ENCODE_OUTPUT_STATISTICS_READ_WRITE    
         ,  1,     0,     0,      0,                    1,         0  ,        
1,         NoP    );
+// VP
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INPUT_PICTURE_FF                    
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INPUT_REFERENCE_FF                  
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INTERNAL_READ_FF                    
         ,  0,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INTERNAL_WRITE_FF                   
         ,  0,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INTERNAL_READ_WRITE_FF              
         ,  1,     0,     0,      0,                    1,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_OUTPUT_PICTURE_FF                   
         ,  3,     0,     0,      0,                    2,         0  ,        
0,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INPUT_PICTURE_RENDER                
         ,  1,     0,     0,      0,                    0,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INPUT_REFERENCE_RENDER              
         ,  1,     0,     0,      0,                    0,         0  ,        
1,    NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INTERNAL_READ_RENDER                
         ,  0,     0,     0,      0,                    0,         0  ,        
1,         NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INTERNAL_WRITE_RENDER               
         ,  0,     0,     0,      0,                    0,         0  ,        
1,         NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_INTERNAL_READ_WRITE_RENDER          
         ,  1,     0,     0,      0,                    0,         0  ,        
1,         NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_VP_OUTPUT_PICTURE_RENDER               
         ,  3,     0,     0,      0,                    0,         0  ,        
0,         NoP    );
+// CP
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_CP_EXTERNAL_READ                       
         ,  0,     0,     0,      0,                    0,         0  ,        
1,         NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_CP_INTERNAL_WRITE                      
         ,  0,     0,     0,      0,                    0,         0  ,        
1,         NoP    );
+
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_GSC_KMD_RESOURCE                       
         ,  0,     0,     0,      0,                    0,         0  ,        
1,         NoP    );
+
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_KMD_NULL_CONTEXT_BB                    
         ,  0,     0,     0,      0    ,                0,         0  ,        
1,         NoP    );
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COMMAND_STREAMER                       
         ,  0,     0,     0,      0    ,                0,         0  ,        
1,         NoP    );
+
+//                   USAGE TYPE                                                
        , L3_CC,   L3_CLOS, L1CC,   L2CC,   L4CC,   Coherency, IgPAT)
+// Uncacheable copies
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COPY_SOURCE                            
         , 0,         0,     0 ,      0,             0,       0,        1,      
  NoP);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COPY_DEST                              
         , 0,         0,     0 ,      0,      0,       0,        1,       NoP);
+
+// clang-format on
+
+#undef _WT
+#include "GmmCachePolicyUndefineConditionals.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmXe_LPGCachePolicy.h 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmXe_LPGCachePolicy.h
--- 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/CachePolicy/GmmXe_LPGCachePolicy.h 
    2025-09-08 15:17:27.000000000 +0200
+++ 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/CachePolicy/GmmXe_LPGCachePolicy.h 
    2025-12-12 13:20:35.000000000 +0100
@@ -252,5 +252,12 @@
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COPY_SOURCE                            
         , 0   , 0    ,   1  ,  0   ,       1 ,    0,     0,        0);
 DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COPY_DEST                              
         , 0   , 0    ,   1  ,  0   ,       1 ,    0,     0,        0);
 
+//Usages for command streamer instructions
+//                   USAGE TYPE                                                
        , L3, L3_SCC,     GO, UcLookup,   L1CC,   L2CC,   L4CC,     Coherency)
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_DEFAULT                                
                                                        , 1   , 0    ,   0  ,  
1   ,       0 ,    0,     1,        0);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_COARSE_GRAINED_COHERENT                
                                        , 1       , 0    ,   0  ,  1   ,       
0 ,    0,     1,        1);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_FINE_GRAINED_COHERENT                  
                            , 0   , 0    ,   1  ,  1   ,       0 ,    0,     1, 
       1);
+DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_FINE_GRAINED_COHERENT_MULTI_WRITE      
                    , 0   , 0    ,   1  ,  1   ,       0 ,    0,     1,        
0);
+
 
 #include "GmmCachePolicyUndefineConditionals.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/GlobalInfo/GmmInfo.cpp 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/GlobalInfo/GmmInfo.cpp
--- old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/GlobalInfo/GmmInfo.cpp 
2025-09-08 15:17:27.000000000 +0200
+++ new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/GlobalInfo/GmmInfo.cpp 
2025-12-12 13:20:35.000000000 +0100
@@ -1098,8 +1098,12 @@
     {
         return GetCachePolicyObj();
     }
-       
-    if(ProductFamily >= IGFX_BMG)
+
+    if (ProductFamily == IGFX_CRI)
+    {
+        pGmmCachePolicy = new GmmLib::GmmXe3P_XPCCachePolicy(CachePolicy, 
this);
+    }
+    else if(ProductFamily >= IGFX_BMG)
     {
         pGmmCachePolicy = new GmmLib::GmmXe2_LPGCachePolicy(CachePolicy, this);
     }
@@ -1113,6 +1117,7 @@
         {
             case IGFX_XE2_HPG_CORE:
             case IGFX_XE3_CORE:
+            case IGFX_XE3P_CORE:
                 pGmmCachePolicy = new 
GmmLib::GmmXe2_LPGCachePolicy(CachePolicy, this);
                 break;
             case IGFX_GEN12LP_CORE:
@@ -1194,7 +1199,8 @@
                                 break;
             case IGFX_XE2_HPG_CORE:
            case IGFX_XE3_CORE:
-            default:
+           case IGFX_XE3P_CORE:
+           default:
                 return new GmmXe_LPGTextureCalc(this);
                 break;
         }
@@ -1230,6 +1236,7 @@
         case IGFX_XE_HPC_CORE:
         case IGFX_XE2_HPG_CORE:
        case IGFX_XE3_CORE:
+       case IGFX_XE3P_CORE:
             return new GmmLib::PlatformInfoGen12(Platform, (GMM_LIB_CONTEXT 
*)this);
             break;
         case IGFX_GEN11_CORE:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/ULT/GmmAuxTableULT.h 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/ULT/GmmAuxTableULT.h
--- old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/ULT/GmmAuxTableULT.h   
2025-09-08 15:17:27.000000000 +0200
+++ new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/ULT/GmmAuxTableULT.h   
2025-12-12 13:20:35.000000000 +0100
@@ -87,13 +87,16 @@
 
             mResInfo = pGmmULTClientContext->CreateResInfoObject(&gmmParams);
 
+                       if (!mResInfo)
+                return false;
+
             size = mResInfo->GetSizeSurface();
 
             alignment = mResInfo->GetResFlags().Info.TiledYf ? GMM_KBYTE(16) : 
GMM_KBYTE(64);
 
             mBuf = aligned_alloc(alignment, ALIGN(size, alignment));
 
-            if(!mResInfo || !mBuf)
+            if(!mBuf)
                 return false;
 
             mYBase      = (GMM_GFX_ADDRESS)mBuf;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/ULT/GmmGen12ResourceULT.cpp 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/ULT/GmmGen12ResourceULT.cpp
--- old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/ULT/GmmGen12ResourceULT.cpp    
2025-09-08 15:17:27.000000000 +0200
+++ new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/ULT/GmmGen12ResourceULT.cpp    
2025-12-12 13:20:35.000000000 +0100
@@ -2839,17 +2839,6 @@
 /// @brief ULT for MSAA Resource - TODO adddepth MSAA, MCS surf param 
verificaton, compression case
 TEST_F(CTestGen12Resource, TestColorMSAA)
 {
-    //Tile dimensions in Bytes
-    const uint32_t MCSTileSize[1][2] = {128, 32}; //MCS is TileY
-
-    const uint32_t TestDimensions[4][2] = {
-    //Input dimensions in #Tiles
-    {15, 20}, //16 Tiles x 20 <Max Width: Depth MSS crosses Pitch limit beyond 
this>
-    {0, 0},   //1x1x1
-    {1, 0},   //2 Tilesx1
-    {1, 1},   //2 Tiles x 2
-    };
-
     uint32_t TestArraySize[2] = {1, 5};
     uint32_t MinPitch         = 32;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/ULT/GmmGen12dGPUResourceULT.cpp 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/ULT/GmmGen12dGPUResourceULT.cpp
--- 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/ULT/GmmGen12dGPUResourceULT.cpp    
    2025-09-08 15:17:27.000000000 +0200
+++ 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/ULT/GmmGen12dGPUResourceULT.cpp    
    2025-12-12 13:20:35.000000000 +0100
@@ -1461,9 +1461,6 @@
 TEST_F(CTestGen12dGPUResource, TestPlanarTile64CompressedResource)
 {
 
-    const uint32_t TileSize[TEST_BPP_MAX][2] = {
-    {256, 256}, {512, 128}, {512, 128}, {1024, 64}, {1024, 64}}; // TileYS
-
     GMM_RESCREATE_PARAMS gmmParams = {};
     gmmParams.Type                 = RESOURCE_2D;
     gmmParams.NoGfxMemory          = 1;
@@ -3124,17 +3121,6 @@
 /// @brief ULT for MSAA Resource - adddepth MSAA, MCS surf param verificaton, 
compression case
 TEST_F(CTestGen12dGPUResource, DISABLED_TestColorMSAA)
 {
-    //Tile dimensions in Bytes
-    const uint32_t MCSTileSize[1][2] = {128, 32}; //MCS is TileY
-
-    const uint32_t TestDimensions[4][2] = {
-    //Input dimensions in #Tiles
-    {15, 20}, //16 Tiles x 20 <Max Width: Depth MSS crosses Pitch limit beyond 
this>
-    {0, 0},   //1x1x1
-    {1, 0},   //2 Tilesx1
-    {1, 1},   //2 Tiles x 2
-    };
-
     uint32_t TestArraySize[2] = {1, 5};
     uint32_t MinPitch         = 32;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/ULT/GmmXe_LPGCachePolicyULT.cpp 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/ULT/GmmXe_LPGCachePolicyULT.cpp
--- 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/ULT/GmmXe_LPGCachePolicyULT.cpp    
    2025-09-08 15:17:27.000000000 +0200
+++ 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/ULT/GmmXe_LPGCachePolicyULT.cpp    
    2025-12-12 13:20:35.000000000 +0100
@@ -61,6 +61,11 @@
         GfxPlatform.eRenderCoreFamily = IGFX_XE_HPG_CORE;
     }
 
+    if (platform == IGFX_NVL_XE3G)
+    {
+        GfxPlatform.eRenderCoreFamily = IGFX_XE3_CORE;
+    }
+
     pGfxAdapterInfo = (ADAPTER_INFO *)malloc(sizeof(ADAPTER_INFO));
     if(pGfxAdapterInfo)
     {
@@ -128,6 +133,16 @@
 
     TearDownXe_LPGVariant();
 }
+
+TEST_F(CTestXe_LPGCachePolicy, TestXe3CachePolicy_FtrL4CacheEnabled)
+{
+    SetUpXe_LPGVariant(IGFX_NVL_XE3G);
+    CheckXe2_HPGVirtualL3CachePolicy();
+    CheckPAT(); // Has both L3 and PAT within
+    Check_Xe2_HPG_PATCompressed();
+    TearDownXe_LPGVariant();
+}
+
 void CTestXe_LPGCachePolicy::CheckVirtualL3CachePolicy()
 {
     const uint32_t L4_WB_CACHEABLE = 0x0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/inc/External/Common/CachePolicy/GmmCachePolicyXe3P_XPC.h
 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/inc/External/Common/CachePolicy/GmmCachePolicyXe3P_XPC.h
--- 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/inc/External/Common/CachePolicy/GmmCachePolicyXe3P_XPC.h
       1970-01-01 01:00:00.000000000 +0100
+++ 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/inc/External/Common/CachePolicy/GmmCachePolicyXe3P_XPC.h
       2025-12-12 13:20:35.000000000 +0100
@@ -0,0 +1,82 @@
+/*==============================================================================
+Copyright(c) 2025 Intel Corporation
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files(the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and / or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+============================================================================*/
+#pragma once
+
+#ifdef __cplusplus
+#include "../GmmCachePolicyCommon.h"
+
+#define GMM_XE3P_NUM_MOCS_ENTRIES  (16)
+#define GMM_XE3P_DEFAULT_PAT_INDEX (PAT2)
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif /*__cplusplus*/
+
+typedef union GMM_XE3P_PRIVATE_PAT_REC
+{
+    struct
+    {
+        uint32_t Coherency            : 2;
+        uint32_t L4CC                 : 2;
+        uint32_t L3CC                 : 2;
+        uint32_t L3CLOS               : 2;
+        uint32_t Reserved1            : 1;
+        uint32_t LosslessCompressionEn: 1;
+        uint32_t Reserved2            : 22;
+    } Xe3P;
+    uint32_t Value;
+} GMM_XE3P_PRIVATE_PAT;
+
+namespace GmmLib
+{
+    class NON_PAGED_SECTION GmmXe3P_XPCCachePolicy : public 
GmmXe2_LPGCachePolicy
+    {
+    protected:
+
+    public:
+        /* Constructors */
+        GmmXe3P_XPCCachePolicy(GMM_CACHE_POLICY_ELEMENT *pCachePolicyContext, 
Context *pGmmLibContext)
+            : GmmXe2_LPGCachePolicy(pCachePolicyContext, pGmmLibContext)
+        {
+            NumPATRegisters     = GMM_NUM_PAT_ENTRIES;
+            NumMOCSRegisters    = GMM_XE3P_NUM_MOCS_ENTRIES;
+            CurrentMaxPATIndex  = 0;
+            CurrentMaxMocsIndex = 0;
+        }
+        virtual ~GmmXe3P_XPCCachePolicy()
+        {
+        }
+
+        /* Function prototypes */
+        GMM_STATUS           InitCachePolicy();
+        GMM_STATUS           SetupPAT();
+        void                 SetUpMOCSTable();
+        void                 GetL3L4(GMM_CACHE_POLICY_TBL_ELEMENT *pUsageEle, 
GMM_XE3P_PRIVATE_PAT *pUsagePATElement, uint32_t Usage);
+        uint32_t GMM_STDCALL CachePolicyGetPATIndex(GMM_RESOURCE_INFO 
*pResInfo, GMM_RESOURCE_USAGE_TYPE Usage, bool *pCompressionEnable, bool 
IsCpuCacheable);
+    };
+} // namespace GmmLib
+#endif // #ifdef __cplusplus
+
+#ifdef __cplusplus
+}
+#endif /* end__cplusplus*/
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/inc/Internal/Common/GmmLibInc.h 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/inc/Internal/Common/GmmLibInc.h
--- 
old/gmmlib-intel-gmmlib-22.8.2/Source/GmmLib/inc/Internal/Common/GmmLibInc.h    
    2025-09-08 15:17:27.000000000 +0200
+++ 
new/gmmlib-intel-gmmlib-22.9.0/Source/GmmLib/inc/Internal/Common/GmmLibInc.h    
    2025-12-12 13:20:35.000000000 +0100
@@ -41,6 +41,7 @@
 #include "External/Common/CachePolicy/GmmCachePolicyGen12.h"
 #include "External/Common/CachePolicy/GmmCachePolicyXe_LPG.h"
 #include "External/Common/CachePolicy/GmmCachePolicyXe2_LPG.h"
+#include "External/Common/CachePolicy/GmmCachePolicyXe3P_XPC.h"
 #include "External/Common/CachePolicy/GmmCachePolicyGen12dGPU.h"
 #include "External/Common/GmmResourceInfoExt.h"
 #include "../Platform/GmmPlatforms.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/inc/common/igfxfmid.h 
new/gmmlib-intel-gmmlib-22.9.0/Source/inc/common/igfxfmid.h
--- old/gmmlib-intel-gmmlib-22.8.2/Source/inc/common/igfxfmid.h 2025-09-08 
15:17:27.000000000 +0200
+++ new/gmmlib-intel-gmmlib-22.9.0/Source/inc/common/igfxfmid.h 2025-12-12 
13:20:35.000000000 +0100
@@ -80,7 +80,9 @@
     IGFX_BMG = 1274,
     IGFX_LUNARLAKE = 1275,
     IGFX_PTL = 1300,
-    
+    IGFX_NVL_XE3G = 1340,
+    IGFX_CRI = 1380,
+
     IGFX_MAX_PRODUCT,
     IGFX_GENNEXT               = 0x7ffffffe,
     PRODUCT_FAMILY_FORCE_ULONG = 0x7fffffff
@@ -143,6 +145,8 @@
     IGFX_XE2_LPG_CORE    = 0x0c09,  // XE2_LPG Family
     IGFX_XE2_HPG_CORE    = IGFX_XE2_LPG_CORE,  //XE2_HPG Family
     IGFX_XE3_CORE        = 0x1e00,  // XE3 Family
+    IGFX_XE3P_CORE       = 0x2300,  // XE3P Family
+    IGFX_XE3P_HPM        = 0x2301,  // XE3P HPM Family
 
     //Please add new GENs BEFORE THIS !
     IGFX_MAX_CORE,
@@ -303,7 +307,8 @@
 #define GFX_IS_DISCRETE_PRODUCT(pf)    ( ( pf == IGFX_DG1 )             ||   \
                                          ( pf == IGFX_DG2 )             ||   \
                                          ( pf == IGFX_XE_HP_SDV )       ||   \
-                                         ( pf == IGFX_BMG ) )
+                                         ( pf == IGFX_BMG )             ||   \
+                                        ( pf == IGFX_CRI) )
 
 #define GFX_IS_DISCRETE_FAMILY(p)      
GFX_IS_DISCRETE_PRODUCT(GFX_GET_CURRENT_PRODUCT(p))
 
@@ -2021,7 +2026,18 @@
        
 // WCL
 #define DEV_ID_FD80                             0xFD80
-#define DEV_ID_FD81                             0xFD81 
+#define DEV_ID_FD81                             0xFD81
+
+// NVL
+#define DEV_ID_D740                             0xD740
+#define DEV_ID_D741                             0xD741
+#define DEV_ID_D742                             0xD742
+#define DEV_ID_D743                             0xD743
+#define DEV_ID_D744                             0xD744
+#define DEV_ID_D745                             0xD745
+
+// CRI
+#define DEV_ID_674C                             0x674C
 
 #define MGM_HAS     0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.8.2/Source/inc/common/sku_wa.h 
new/gmmlib-intel-gmmlib-22.9.0/Source/inc/common/sku_wa.h
--- old/gmmlib-intel-gmmlib-22.8.2/Source/inc/common/sku_wa.h   2025-09-08 
15:17:27.000000000 +0200
+++ new/gmmlib-intel-gmmlib-22.9.0/Source/inc/common/sku_wa.h   2025-12-12 
13:20:35.000000000 +0100
@@ -114,7 +114,9 @@
         unsigned int   FtrXe2Compression                : 1;  // Xe2 Stateless 
Compression
        unsigned int   FtrXe2PlusTiling                 : 1;  // Tile64 MSAA 
Layout
         unsigned int   FtrL4Cache                       : 1;  // L4 cache 
support
-        unsigned int   FtrPml5Support                   : 1;  // xe2 page 
tables               
+        unsigned int   FtrPml5Support                   : 1;  // xe2 page 
tables
+       unsigned int   Ftr3DSamplerRemoved              : 1;
+       unsigned int   FtrEfficient64BitAddressing      : 1;  //  Efficient 
64bit addressing (Xe3P) feature.    
                
     };
 

Reply via email to