2021-12-14 23:37:23 +08:00
|
|
|
/*
|
2025-01-03 20:50:18 +08:00
|
|
|
* Copyright (C) 2021-2025 Intel Corporation
|
2021-12-14 23:37:23 +08:00
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: MIT
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
using IsGen12LP = IsGfxCore<IGFX_GEN12LP_CORE>;
|
2025-03-18 08:28:35 +08:00
|
|
|
using IsAtLeastGen12LP = IsAtLeastGfxCore<IGFX_GEN12LP_CORE>;
|
2021-12-14 23:37:23 +08:00
|
|
|
using IsXeHpgCore = IsGfxCore<IGFX_XE_HPG_CORE>;
|
|
|
|
using IsXeHpcCore = IsGfxCore<IGFX_XE_HPC_CORE>;
|
2022-01-12 03:41:57 +08:00
|
|
|
using IsNotXeHpcCore = IsNotGfxCore<IGFX_XE_HPC_CORE>;
|
2022-05-13 20:04:24 +08:00
|
|
|
using IsNotXeHpgCore = IsNotGfxCore<IGFX_XE_HPG_CORE>;
|
2024-07-09 17:29:17 +08:00
|
|
|
using IsXe2HpgCore = IsGfxCore<IGFX_XE2_HPG_CORE>;
|
|
|
|
using IsNotXe2HpgCore = IsNotGfxCore<IGFX_XE2_HPG_CORE>;
|
2021-12-14 23:37:23 +08:00
|
|
|
|
|
|
|
using IsWithinXeGfxFamily = IsWithinGfxCore<IGFX_XE_HP_CORE, IGFX_XE_HPC_CORE>;
|
2023-03-14 21:18:34 +08:00
|
|
|
using IsNotWithinXeGfxFamily = IsNotAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPG_CORE, IGFX_XE_HPC_CORE>;
|
2021-12-14 23:37:23 +08:00
|
|
|
|
|
|
|
using IsAtLeastXeHpCore = IsAtLeastGfxCore<IGFX_XE_HP_CORE>;
|
|
|
|
using IsAtMostXeHpCore = IsAtMostGfxCore<IGFX_XE_HP_CORE>;
|
2023-03-13 18:34:05 +08:00
|
|
|
using IsBeforeXeHpCore = IsBeforeGfxCore<IGFX_XE_HP_CORE>;
|
2021-12-14 23:37:23 +08:00
|
|
|
|
|
|
|
using IsAtLeastXeHpgCore = IsAtLeastGfxCore<IGFX_XE_HPG_CORE>;
|
|
|
|
using IsAtMostXeHpgCore = IsAtMostGfxCore<IGFX_XE_HPG_CORE>;
|
2024-02-17 00:26:30 +08:00
|
|
|
using IsBeforeXeHpgCore = IsBeforeGfxCore<IGFX_XE_HPG_CORE>;
|
2021-12-14 23:37:23 +08:00
|
|
|
|
|
|
|
using IsAtLeastXeHpcCore = IsAtLeastGfxCore<IGFX_XE_HPC_CORE>;
|
2022-04-14 01:20:59 +08:00
|
|
|
using IsAtMostXeHpcCore = IsAtMostGfxCore<IGFX_XE_HPC_CORE>;
|
2024-04-16 01:02:54 +08:00
|
|
|
using IsBeforeXeHpcCore = IsBeforeGfxCore<IGFX_XE_HPC_CORE>;
|
2025-05-01 03:11:36 +08:00
|
|
|
using IsWithinXeHpcCoreAndXe3Core = IsWithinGfxCore<IGFX_XE_HPC_CORE, IGFX_XE3_CORE>;
|
2025-05-01 03:16:48 +08:00
|
|
|
using IsWithinXeHpgCoreAndXe3Core = IsWithinGfxCore<IGFX_XE_HPG_CORE, IGFX_XE3_CORE>;
|
2021-12-14 23:37:23 +08:00
|
|
|
|
2024-07-09 17:29:17 +08:00
|
|
|
using IsAtLeastXe2HpgCore = IsAtLeastGfxCore<IGFX_XE2_HPG_CORE>;
|
2024-10-07 21:44:54 +08:00
|
|
|
using IsAtMostXe2HpgCore = IsAtMostGfxCore<IGFX_XE2_HPG_CORE>;
|
2025-04-03 21:20:54 +08:00
|
|
|
using IsBeforeXe2HpgCore = IsBeforeGfxCore<IGFX_XE2_HPG_CORE>;
|
2024-12-18 22:42:14 +08:00
|
|
|
using IsWithinXeHpCoreAndXe2HpgCore = IsWithinGfxCore<IGFX_XE_HP_CORE, IGFX_XE2_HPG_CORE>;
|
2025-01-22 05:06:09 +08:00
|
|
|
using IsXeHpcCoreOrXe2HpgCore = IsAnyGfxCores<IGFX_XE_HPC_CORE, IGFX_XE2_HPG_CORE>;
|
2025-01-10 18:59:46 +08:00
|
|
|
using IsWithinXeHpCoreAndXe3Core = IsWithinGfxCore<IGFX_XE_HP_CORE, IGFX_XE3_CORE>;
|
2024-07-09 17:29:17 +08:00
|
|
|
|
2022-08-09 18:15:08 +08:00
|
|
|
using IsXeHpOrXeHpgCore = IsAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPG_CORE>;
|
|
|
|
using IsXeHpOrXeHpcCore = IsAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPC_CORE>;
|
|
|
|
using IsXeHpcOrXeHpgCore = IsAnyGfxCores<IGFX_XE_HPC_CORE, IGFX_XE_HPG_CORE>;
|
2023-08-23 01:53:27 +08:00
|
|
|
using IsXeHpOrXeHpcOrXeHpgCore = IsAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPC_CORE, IGFX_XE_HPG_CORE>;
|
2022-01-17 23:00:06 +08:00
|
|
|
|
2022-08-09 18:15:08 +08:00
|
|
|
using IsNotXeHpOrXeHpgCore = IsNotAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPG_CORE>;
|
|
|
|
using IsNotXeHpOrXeHpcCore = IsNotAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPC_CORE>;
|
2022-11-09 21:01:21 +08:00
|
|
|
using IsNotXeHpgOrXeHpcCore = IsNotAnyGfxCores<IGFX_XE_HPG_CORE, IGFX_XE_HPC_CORE>;
|
2022-04-21 00:50:37 +08:00
|
|
|
|
2025-01-03 20:50:18 +08:00
|
|
|
using IsXe2HpgCoreOrXe3Core = IsAnyGfxCores<IGFX_XE2_HPG_CORE, IGFX_XE3_CORE>;
|
|
|
|
|
|
|
|
using IsXe3Core = IsGfxCore<IGFX_XE3_CORE>;
|
|
|
|
using IsAtLeastXe3Core = IsAtLeastGfxCore<IGFX_XE3_CORE>;
|
2025-02-06 21:02:04 +08:00
|
|
|
using IsAtMostXe3Core = IsAtMostGfxCore<IGFX_XE3_CORE>;
|
2025-01-03 20:50:18 +08:00
|
|
|
|
2021-12-14 23:37:23 +08:00
|
|
|
using IsTGLLP = IsProduct<IGFX_TIGERLAKE_LP>;
|
|
|
|
using IsDG1 = IsProduct<IGFX_DG1>;
|
|
|
|
using IsADLS = IsProduct<IGFX_ALDERLAKE_S>;
|
|
|
|
using IsADLP = IsProduct<IGFX_ALDERLAKE_P>;
|
|
|
|
using IsRKL = IsProduct<IGFX_ROCKETLAKE>;
|
|
|
|
|
2022-12-01 20:50:08 +08:00
|
|
|
using IsMTL = IsProduct<IGFX_METEORLAKE>;
|
2023-10-11 01:12:45 +08:00
|
|
|
using IsARL = IsProduct<IGFX_ARROWLAKE>;
|
2021-12-14 23:37:23 +08:00
|
|
|
using IsDG2 = IsProduct<IGFX_DG2>;
|
|
|
|
|
|
|
|
using IsPVC = IsProduct<IGFX_PVC>;
|
2021-12-16 01:45:30 +08:00
|
|
|
|
2024-07-09 17:29:17 +08:00
|
|
|
using IsBMG = IsProduct<IGFX_BMG>;
|
2024-08-22 20:09:17 +08:00
|
|
|
using IsNotBMG = IsNotWithinProducts<IGFX_BMG, IGFX_BMG>;
|
|
|
|
|
2024-07-09 17:29:17 +08:00
|
|
|
using IsLNL = IsProduct<IGFX_LUNARLAKE>;
|
|
|
|
|
2025-01-03 20:50:18 +08:00
|
|
|
using IsPTL = IsProduct<IGFX_PTL>;
|
|
|
|
|
2022-12-01 20:50:08 +08:00
|
|
|
using IsAtLeastMtl = IsAtLeastProduct<IGFX_METEORLAKE>;
|
2022-07-08 19:29:59 +08:00
|
|
|
using IsAtMostDg2 = IsAtMostProduct<IGFX_DG2>;
|
|
|
|
|
2024-11-21 22:45:37 +08:00
|
|
|
using IsNotDG1 = IsNotWithinProducts<IGFX_DG1, IGFX_DG1>;
|
2024-08-03 07:29:15 +08:00
|
|
|
using IsAtLeastPVC = IsAtLeastProduct<IGFX_PVC>;
|
2024-05-22 21:31:31 +08:00
|
|
|
using IsAtMostPVC = IsAtMostProduct<IGFX_PVC>;
|
2022-05-10 17:07:18 +08:00
|
|
|
using IsNotPVC = IsNotWithinProducts<IGFX_PVC, IGFX_PVC>;
|
2025-01-29 04:58:22 +08:00
|
|
|
using IsNotDG2 = IsNotWithinProducts<IGFX_DG2, IGFX_DG2>;
|
2025-04-02 07:47:02 +08:00
|
|
|
using IsNotMTL = IsNotWithinProducts<IGFX_METEORLAKE, IGFX_METEORLAKE>;
|
2023-04-24 22:08:59 +08:00
|
|
|
using IsNotPvcOrDg2 = IsNotWithinProducts<IGFX_DG2, IGFX_PVC>;
|
2022-08-22 22:53:48 +08:00
|
|
|
|
2024-07-24 19:27:35 +08:00
|
|
|
using IsAtMostArl = IsAtMostProduct<IGFX_ARROWLAKE>;
|
2024-07-18 19:32:45 +08:00
|
|
|
using IsAtLeastBmg = IsAtLeastProduct<IGFX_BMG>;
|
|
|
|
|
2022-08-22 22:53:48 +08:00
|
|
|
using HasStatefulSupport = IsNotAnyGfxCores<IGFX_XE_HPC_CORE>;
|
|
|
|
|
|
|
|
using HasNoStatefulSupport = IsAnyGfxCores<IGFX_XE_HPC_CORE>;
|
2023-08-31 22:46:02 +08:00
|
|
|
|
2024-09-17 16:33:56 +08:00
|
|
|
using HasOclocZebinFormatEnforced = IsAnyProducts<IGFX_TIGERLAKE_LP,
|
2023-09-07 21:31:57 +08:00
|
|
|
IGFX_ROCKETLAKE,
|
|
|
|
IGFX_ALDERLAKE_S,
|
|
|
|
IGFX_ALDERLAKE_P,
|
|
|
|
IGFX_ALDERLAKE_N>;
|
|
|
|
|
2025-04-22 21:11:27 +08:00
|
|
|
struct HasDispatchAllSupport {
|
|
|
|
template <PRODUCT_FAMILY productFamily>
|
|
|
|
static constexpr bool isMatched() {
|
|
|
|
return IsPVC::isMatched<productFamily>() || IsAtLeastBmg::isMatched<productFamily>();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DoesNotHaveDispatchAllSupport {
|
|
|
|
template <PRODUCT_FAMILY productFamily>
|
|
|
|
static constexpr bool isMatched() {
|
|
|
|
return !IsPVC::isMatched<productFamily>() && IsAtMostArl::isMatched<productFamily>();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-08-31 22:46:02 +08:00
|
|
|
struct IsXeLpg {
|
|
|
|
template <PRODUCT_FAMILY productFamily>
|
|
|
|
static constexpr bool isMatched() {
|
|
|
|
return IsXeHpgCore::isMatched<productFamily>() && !IsDG2::isMatched<productFamily>();
|
|
|
|
}
|
|
|
|
};
|
2024-09-23 23:12:25 +08:00
|
|
|
|
|
|
|
struct IsStatefulBufferPreferredForProduct {
|
|
|
|
template <PRODUCT_FAMILY productFamily>
|
|
|
|
static constexpr bool isMatched() {
|
|
|
|
return IsGen12LP::isMatched<productFamily>() ||
|
|
|
|
IsXeHpgCore::isMatched<productFamily>();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
struct IsStatelessBufferPreferredForProduct {
|
|
|
|
template <PRODUCT_FAMILY productFamily>
|
|
|
|
static constexpr bool isMatched() {
|
|
|
|
return !IsStatefulBufferPreferredForProduct::isMatched<productFamily>();
|
|
|
|
}
|
|
|
|
};
|