[Media Common] ADLP OPEN SOURCE

ADLP open source
GMM has open upstreamed: commit aae48c9ca
diff --git a/README.md b/README.md
index d7856d0..893dd6d 100755
--- a/README.md
+++ b/README.md
@@ -106,7 +106,7 @@
 ### Decoding/Encoding Features
 
 
-|CODEC | Build Types | BDW | SKL | BXT/APL | KBLx | ICL | EHL/JSL | TGL/RKL/ADL-S | DG1/SG1 |
+|CODEC | Build Types | BDW | SKL | BXT/APL | KBLx | ICL | EHL/JSL | TGL/RKL/ADL-S/ADL-P| DG1/SG1 |
 |---|---|---|---|---|---|---|---|---|---|
 | AVC | <u>Full-Feature</u><br><i>Free-Kernel</i> | <u>D/Es</u><br><i>D<i> | <u>D/E/Es</u><br><i>D/E<i> | <u>D/E/Es</u><br><i>D/E<i> | <u>D/E/Es</u><br><i>D/E<i> | <u>D/E/Es</u><br><i>D/E<i> | <u>D/E</u><br><i>D/E<i> | <u>D/E/Es</u><br><i>D/E<i> | <u>D/E/Es</u><br><i>D/E<i> |
 | MPEG-2 | <u>Full-Feature</u><br><i>Free-Kernel</i> | <u>D/Es</u><br><i>D<i> | <u>D/Es</u><br><i>D<i> | <u>D</u><br><i>D<i> | <u>D/Es</u><br><i>D<i> | <u>D/Es</u><br><i>D<i> | <u>D</u><br><i>D<i> | <u>D/Es</u><br><i>D<i> | <u>D/Es</u><br><i>D<i> |
@@ -147,7 +147,7 @@
 ### Video Processing Features
 
 
-| Features | Build Types | BDW | SKL | BXT/APL | KBLx | ICL | EHL/JSL | TGL/RKL/ADL-S | DG1/SG1 |
+| Features | Build Types | BDW | SKL | BXT/APL | KBLx | ICL | EHL/JSL | TGL/RKL/ADL-S/ADL-P  | DG1/SG1 |
 |---|---|---|---|---|----|---|---|---|---|
 | Blending | <u>Full-Feature</u><br><i>Free-Kernel</i> | <u>Yes</u><br><i>&nbsp;</i> | <u>Yes</u><br><i>&nbsp;</i> | <u>Yes</u><br><i>&nbsp;</i> | <u>Yes</u><br><i>&nbsp;</i> | <u>Yes</u><br><i>Yes</i> | <u>Yes</u><br><i>Yes</i> | <u>Yes</u><br><i>Yes</i> | <u>Yes</u><br><i>Yes</i> |
 | CSC<br>(Color Space Conversion) | <u>Full-Feature</u><br><i>Free-Kernel</i> | <u>Yes</u><br><i>&nbsp;</i> | <u>Yes</u><br><i>&nbsp;</i> | <u>Yes</u><br><i>&nbsp;</i> | <u>Yes</u><br><i>&nbsp;</i> | <u>Yes</u><br><i>Yes</i> | <u>Yes</u><br><i>Yes</i> | <u>Yes</u><br><i>Yes</i> | <u>Yes</u><br><i>Yes</i> |
diff --git a/docs/media_features.md b/docs/media_features.md
index 6d40f9f..7e5ffa4 100644
--- a/docs/media_features.md
+++ b/docs/media_features.md
@@ -5,7 +5,7 @@
 (2k=2048x2048, 4k=4096x4096, 8k=8192x8192, 16k=16384x16384)
 
 
-| Codec | Type | BDW | SKL | BXT/APL | KBLx | ICL | TGL/RKL/ADL-S | DG1/SG1 |
+| Codec | Type | BDW | SKL | BXT/APL | KBLx | ICL | TGL/RKL/ADL-S/ADL-P | DG1/SG1 |
 |---|---|---|---|---|---|---|---|---|
 | AVC | Output | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 |
 |  | Max Res. | 4k | 4k | 4k | 4k | 4k | 4k | 4k |
@@ -43,7 +43,7 @@
 (4k=4096x4096, 16k=16384x16384)
 
 
-| Codec | Type | BDW | SKL | BXT/APL | KBLx | ICL | TGL/RKL/ADL-S  | DG1/SG1 |
+| Codec | Type | BDW | SKL | BXT/APL | KBLx | ICL | TGL/RKL/ADL-S/ADL-P  | DG1/SG1 |
 |---|---|---|---|---|---|---|---|---|
 | AVC | Input |  | NV12 | NV12 | More* | More* | More* | More* |
 |  | Max Res. |  | 4k | 4k | 4k | 4k | 4k | 4k |
@@ -67,7 +67,7 @@
 (2k=2048x2048, 4k=4096x4096, 8k=8192x8192)
 
 
-| Codec | Type | BDW | SKL | BXT/APL | KBLx | ICL | TGL/RKL/ADL-S | DG1/SG1 |
+| Codec | Type | BDW | SKL | BXT/APL | KBLx | ICL | TGL/RKL/ADL-S/ADL-P | DG1/SG1 |
 |---|---|---|---|---|---|---|---|---|
 | AVC | Input | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 |
 |  | Max Res. | 4k | 4k | 4k | 4k | 4k | 4k | 4k |
@@ -93,7 +93,7 @@
 |                       | Output |  Y   |  Y   |  Y   |  Y   |  Y   |      |  Y   |  Y   |  Y   |      |      |      |
 |      JSL/EHL          | Input  |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |      |      |      |
 |                       | Output |  Y   |  Y   |  Y   |  Y   |  Y   |      |  Y   |  Y   |  Y   |      |      |      |
-|   TGL/RKL/ADL-S       | Input  |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |
+|   TGL/RKL/ADL-S/ADL-P | Input  |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |
 |                       | Output |  Y   |  Y   |  Y   |  Y   |  Y   |      |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |
 |      DG1/SG1          | Input  |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |
 |                       | Output |  Y   |  Y   |  Y   |  Y   |  Y   |      |  Y   |  Y   |  Y   |  Y   |  Y   |  Y   |
diff --git a/media_driver/cmake/linux/media_gen_flags_linux.cmake b/media_driver/cmake/linux/media_gen_flags_linux.cmake
index 747c7ce..d0ae902 100644
--- a/media_driver/cmake/linux/media_gen_flags_linux.cmake
+++ b/media_driver/cmake/linux/media_gen_flags_linux.cmake
@@ -77,6 +77,10 @@
     "Enabled ADLS support (Gen12)" ON
     "GEN12_TGLLP" OFF)
 
+cmake_dependent_option(GEN12_ADLP
+    "Enabled ADLP support (Gen12)" ON
+    "GEN12_TGLLP" OFF)
+
 if(GEN8)
     add_definitions(-DIGFX_GEN8_SUPPORTED)
 endif()
@@ -160,4 +164,8 @@
     add_definitions(-DIGFX_GEN12_ADLS_SUPPORTED)
 endif()
 
+if(GEN12_ADLP)
+    add_definitions(-DIGFX_GEN12_ADLP_SUPPORTED)
+endif()
+
 include(${MEDIA_EXT_CMAKE}/ext/linux/media_gen_flags_linux_ext.cmake OPTIONAL)
diff --git a/media_driver/linux/gen12/ddi/media_libva_caps_g12.cpp b/media_driver/linux/gen12/ddi/media_libva_caps_g12.cpp
index 18187ac..6a245aa 100644
--- a/media_driver/linux/gen12/ddi/media_libva_caps_g12.cpp
+++ b/media_driver/linux/gen12/ddi/media_libva_caps_g12.cpp
@@ -2537,4 +2537,8 @@
     RegisterCaps<MediaLibvaCapsG12>((uint32_t)IGFX_DG1);
 #endif
 
+#ifdef IGFX_GEN12_ADLP_SUPPORTED
+static bool adlpRegistered = MediaLibvaCapsFactory<MediaLibvaCaps, DDI_MEDIA_CONTEXT>::
+    RegisterCaps<MediaLibvaCapsG12>((uint32_t)IGFX_ALDERLAKE_P);
+#endif
 
diff --git a/media_driver/linux/gen12/ddi/media_sku_wa_g12.cpp b/media_driver/linux/gen12/ddi/media_sku_wa_g12.cpp
index eb9fd6c..e23e898 100644
--- a/media_driver/linux/gen12/ddi/media_sku_wa_g12.cpp
+++ b/media_driver/linux/gen12/ddi/media_sku_wa_g12.cpp
@@ -527,6 +527,54 @@
 #endif
 
 
+#ifdef IGFX_GEN12_ADLP_SUPPORTED
+static bool InitAdlpMediaSku(struct GfxDeviceInfo *devInfo,
+    MediaFeatureTable *                            skuTable,
+    struct LinuxDriverInfo *                       drvInfo)
+{
+    if (!InitTglMediaSku(devInfo, skuTable, drvInfo))
+    {
+        return false;
+    }
+
+    if (devInfo->eGTType == GTTYPE_GT0_5)
+    {
+        MEDIA_WR_SKU(skuTable, FtrGT0_5, 1);
+    }
+
+    MEDIA_WR_SKU(skuTable, FtrAV1VLDLSTDecoding, 1);
+
+    return true;
+}
+
+static bool InitAdlpMediaWa(struct GfxDeviceInfo *devInfo,
+    MediaWaTable *                                waTable,
+    struct LinuxDriverInfo *                      drvInfo)
+{
+    if (!InitTglMediaWa(devInfo, waTable, drvInfo))
+    {
+        return false;
+    }
+
+    //ADL-P not need this
+    MEDIA_WR_WA(waTable, Wa_1409820462, 0);
+
+    return true;
+}
+
+static struct LinuxDeviceInit adlpDeviceInit =
+    {
+        .productFamily    = IGFX_ALDERLAKE_P,
+        .InitMediaFeature = InitAdlpMediaSku,
+        .InitMediaWa      = InitAdlpMediaWa,
+};
+
+static bool adlpDeviceRegister = DeviceInfoFactory<LinuxDeviceInit>::
+    RegisterDevice(IGFX_ALDERLAKE_P, &adlpDeviceInit);
+
+#endif
+
+
 static struct LinuxDeviceInit tgllpDeviceInit =
 {
     .productFamily    = IGFX_TIGERLAKE_LP,
diff --git a/media_driver/linux/gen12/ddi/media_sysinfo_g12.cpp b/media_driver/linux/gen12/ddi/media_sysinfo_g12.cpp
index b55fa37..259a533 100644
--- a/media_driver/linux/gen12/ddi/media_sysinfo_g12.cpp
+++ b/media_driver/linux/gen12/ddi/media_sysinfo_g12.cpp
@@ -380,6 +380,83 @@
 
 #endif
 
+
+#ifdef IGFX_GEN12_ADLP_SUPPORTED
+static struct GfxDeviceInfo adlpGt2Info = {
+    .platformType     = PLATFORM_MOBILE,
+    .productFamily    = IGFX_ALDERLAKE_P,
+    .displayFamily    = IGFX_GEN12_CORE,
+    .renderFamily     = IGFX_GEN12_CORE,
+    .eGTType          = GTTYPE_GT2,
+    .L3CacheSizeInKb  = 0,
+    .L3BankCount      = 0,
+    .EUCount          = 0,
+    .SliceCount       = 0,
+    .SubSliceCount    = 0,
+    .MaxEuPerSubSlice = 0,
+    .isLCIA           = 0,
+    .hasLLC           = 0,
+    .hasERAM          = 0,
+    .InitMediaSysInfo = InitTglMediaSysInfo,
+    .InitShadowSku    = InitTglShadowSku,
+    .InitShadowWa     = InitTglShadowWa,
+};
+
+static bool adlpGt2Device46A0 = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x46A0, &adlpGt2Info);
+
+static bool adlpGt2Device46A1 = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x46A1, &adlpGt2Info);
+
+static bool adlpGt2Device46A2 = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x46A2, &adlpGt2Info);
+
+static bool adlpGt2Device46A3 = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x46A3, &adlpGt2Info);
+    
+static bool adlpGt2Device46A6 = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x46A6, &adlpGt2Info);
+    
+static bool adlpGt2Device46A8 = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x46A8, &adlpGt2Info);
+    
+static bool adlpGt2Device4628 = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x4628, &adlpGt2Info);
+    
+    
+static bool adlpGt2Device46B0 = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x46B0, &adlpGt2Info);
+
+static bool adlpGt2Device46B1 = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x46B1, &adlpGt2Info);
+
+static bool adlpGt2Device46B2 = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x46B2, &adlpGt2Info);
+
+static bool adlpGt2Device46B3 = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x46B3, &adlpGt2Info);
+    
+
+static bool adlpGt2Device46C0 = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x46C0, &adlpGt2Info);
+
+static bool adlpGt2Device46C1 = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x46C1, &adlpGt2Info);
+
+static bool adlpGt2Device46C2 = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x46C2, &adlpGt2Info);
+
+static bool adlpGt2Device46C3 = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x46C3, &adlpGt2Info);
+    
+static bool adlpGt2Device46AA = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x46AA, &adlpGt2Info);
+    
+static bool adlpGt2Device462A = DeviceInfoFactory<GfxDeviceInfo>::
+    RegisterDevice(0x462A, &adlpGt2Info);
+
+#endif
+
 static bool tgllpGt2Device9a40 = DeviceInfoFactory<GfxDeviceInfo>::
     RegisterDevice(0x9A40, &tgllpGt2Info);
 
diff --git a/media_driver/media_interface/media_interfaces_m12_adlp/media_interfaces_g12_adlp.cpp b/media_driver/media_interface/media_interfaces_m12_adlp/media_interfaces_g12_adlp.cpp
new file mode 100644
index 0000000..5b6eccf
--- /dev/null
+++ b/media_driver/media_interface/media_interfaces_m12_adlp/media_interfaces_g12_adlp.cpp
@@ -0,0 +1,103 @@
+/*
+* Copyright (c) 2011-2021, 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.
+*/
+//!
+//! \file     media_interfaces_g12_adlp.cpp
+//! \brief    Helps with Gen12 ADLP factory creation.
+//!
+
+#include "media_interfaces_g12_adlp.h"
+
+extern template class MediaInterfacesFactory<MhwInterfaces>;
+extern template class MediaInterfacesFactory<MmdDevice>;
+extern template class MediaInterfacesFactory<MosUtilDevice>;
+extern template class MediaInterfacesFactory<CodechalDevice>;
+extern template class MediaInterfacesFactory<CMHalDevice>;
+extern template class MediaInterfacesFactory<VphalDevice>;
+extern template class MediaInterfacesFactory<RenderHalDevice>;
+extern template class MediaInterfacesFactory<Nv12ToP010Device>;
+extern template class MediaInterfacesFactory<DecodeHistogramDevice>;
+
+static bool adlpRegisteredVphal =
+MediaInterfacesFactory<VphalDevice>::
+RegisterHal<VphalInterfacesG12Tgllp>((uint32_t)IGFX_ALDERLAKE_P);
+
+static bool adlpRegisteredMhw =
+    MediaInterfacesFactory<MhwInterfaces>::
+    RegisterHal<MhwInterfacesG12Tgllp>((uint32_t)IGFX_ALDERLAKE_P);
+
+#ifdef _MMC_SUPPORTED
+static bool adlsRegisteredMmd =
+    MediaInterfacesFactory<MmdDevice>::
+    RegisterHal<MmdDeviceG12Tgllp>((uint32_t)IGFX_TIGERLAKE_LP);
+#endif
+
+#define PLATFORM_INTEL_ADLP   23
+#define GENX_TGLLP            12
+
+static bool adlsRegisteredNv12ToP010 =
+    MediaInterfacesFactory<Nv12ToP010Device>::
+    RegisterHal<Nv12ToP010DeviceG12Tgllp>((uint32_t)IGFX_ALDERLAKE_P);
+
+static bool adlsRegisteredCodecHal =
+    MediaInterfacesFactory<CodechalDevice>::
+    RegisterHal<CodechalInterfacesG12Tgllp>((uint32_t)IGFX_ALDERLAKE_P);
+
+static bool adlsRegisteredCMHal =
+    MediaInterfacesFactory<CMHalDevice>::
+    RegisterHal<CMHalInterfacesG12Adlp>((uint32_t)IGFX_ALDERLAKE_P);
+
+
+MOS_STATUS CMHalInterfacesG12Adlp::Initialize(CM_HAL_STATE *pCmState)
+{
+    if (pCmState == nullptr)
+    {
+        MHW_ASSERTMESSAGE("pCmState is nullptr.")
+        return MOS_STATUS_INVALID_PARAMETER;
+    }
+
+    m_cmhalDevice = MOS_New(CMHal, pCmState);
+    if (m_cmhalDevice == nullptr)
+    {
+        MHW_ASSERTMESSAGE("Create CM Hal interfaces failed.")
+        return MOS_STATUS_NO_SPACE;
+    }
+
+    m_cmhalDevice->SetGenPlatformInfo(PLATFORM_INTEL_ADLP, PLATFORM_INTEL_GT2, "TGLLP");
+    uint32_t cisaIDs[] = { GENX_TGLLP };
+    m_cmhalDevice->AddSupportedCisaIDs(cisaIDs, sizeof(cisaIDs)/sizeof(uint32_t));
+    m_cmhalDevice->m_l3Plane = TGL_L3_PLANE;
+    m_cmhalDevice->m_l3ConfigCount = TGL_L3_CONFIG_NUM;
+    return MOS_STATUS_SUCCESS;
+}
+
+static bool adlpRegisteredMosUtil =
+    MediaInterfacesFactory<MosUtilDevice>::
+    RegisterHal<MosUtilDeviceG12Tgllp>((uint32_t)IGFX_ALDERLAKE_P);
+
+
+static bool adlpRegisteredRenderHal =
+    MediaInterfacesFactory<RenderHalDevice>::
+    RegisterHal<RenderHalInterfacesG12Tgllp>((uint32_t)IGFX_ALDERLAKE_P);
+
+static bool adlpRegisteredDecodeHistogram =
+    MediaInterfacesFactory<DecodeHistogramDevice>::
+    RegisterHal<DecodeHistogramDeviceG12Tgllp>((uint32_t)IGFX_ALDERLAKE_P);
diff --git a/media_driver/media_interface/media_interfaces_m12_adlp/media_interfaces_g12_adlp.h b/media_driver/media_interface/media_interfaces_m12_adlp/media_interfaces_g12_adlp.h
new file mode 100644
index 0000000..4c2a36d
--- /dev/null
+++ b/media_driver/media_interface/media_interfaces_m12_adlp/media_interfaces_g12_adlp.h
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2011-2021, 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.
+*/
+//!
+//! \file     media_interfaces_g12_adlp.h
+//! \brief    All interfaces used for adls that require factory creation
+//!
+
+#ifndef __MEDIA_INTERFACES_G12_adlp_H__
+#define __MEDIA_INTERFACES_G12_adlp_H__
+
+
+#include "media_interfaces_g12_tgllp.h"
+#include "renderhal_g12.h"
+
+
+class CMHalInterfacesG12Adlp : public CMHalDevice
+{
+protected:
+    using CMHal = CM_HAL_G12_X;
+    MOS_STATUS Initialize(
+        CM_HAL_STATE *pCmState);
+};
+
+#endif // __MEDIA_INTERFACES_G12_rkl_H__
diff --git a/media_driver/media_interface/media_interfaces_m12_adlp/media_srcs.cmake b/media_driver/media_interface/media_interfaces_m12_adlp/media_srcs.cmake
new file mode 100644
index 0000000..be22a5b
--- /dev/null
+++ b/media_driver/media_interface/media_interfaces_m12_adlp/media_srcs.cmake
@@ -0,0 +1,49 @@
+# Copyright (c) 2021, 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.
+
+set(TMP_SOURCES_
+    ${CMAKE_CURRENT_LIST_DIR}/media_interfaces_g12_adlp.cpp
+)
+
+set(TMP_HEADERS_
+    ${CMAKE_CURRENT_LIST_DIR}/media_interfaces_g12_adlp.h
+)
+
+set(SOURCES_
+    ${SOURCES_}
+    ${TMP_SOURCES_}
+)
+
+set(HEADERS_
+    ${HEADERS_}
+    ${TMP_HEADERS_}
+)
+
+set(COMMON_SOURCES_
+    ${COMMON_SOURCES_}
+    ${TMP_SOURCES_}
+)
+
+set(COMMON_HEADERS_
+    ${COMMON_HEADERS_}
+    ${TMP_HEADERS_}
+)
+
+media_add_curr_to_include_path()
diff --git a/media_driver/media_interface/media_srcs.cmake b/media_driver/media_interface/media_srcs.cmake
index b3bf03d..d854f1f 100644
--- a/media_driver/media_interface/media_srcs.cmake
+++ b/media_driver/media_interface/media_srcs.cmake
@@ -71,4 +71,8 @@
     media_include_subdirectory(media_interfaces_m12_adls)
 endif()
 
+if(GEN12_ADLP)
+    media_include_subdirectory(media_interfaces_m12_adlp)
+endif()
+
 include(${MEDIA_EXT}/media_interface/media_srcs.cmake OPTIONAL)