break;
case ISL_TILING_SKL_Yf:
- case ISL_TILING_SKL_Ys: {
- bool is_Ys = tiling == ISL_TILING_SKL_Ys;
+ case ISL_TILING_SKL_Ys:
+ case ISL_TILING_ICL_Yf:
+ case ISL_TILING_ICL_Ys: {
+ bool is_Ys = tiling == ISL_TILING_SKL_Ys ||
+ tiling == ISL_TILING_ICL_Ys;
assert(bs > 0);
unsigned width = 1 << (6 + (ffs(bs) / 2) + (2 * is_Ys));
CHOOSE(ISL_TILING_4);
CHOOSE(ISL_TILING_64);
+ CHOOSE(ISL_TILING_ICL_Ys);
CHOOSE(ISL_TILING_SKL_Ys);
+ CHOOSE(ISL_TILING_ICL_Yf);
CHOOSE(ISL_TILING_SKL_Yf);
CHOOSE(ISL_TILING_Y0);
CHOOSE(ISL_TILING_X);
assert(dim_layout == ISL_DIM_LAYOUT_GFX4_2D ||
dim_layout == ISL_DIM_LAYOUT_GFX6_STENCIL_HIZ);
- if (tiling == ISL_TILING_SKL_Ys && info->samples > 1)
+ if ((tiling == ISL_TILING_SKL_Ys ||
+ tiling == ISL_TILING_ICL_Ys) && info->samples > 1)
isl_finishme("%s:%s: multisample TileYs layout", __FILE__, __func__);
switch (msaa_layout) {
snprintf(msg + ret, sizeof(msg) - ret,
" extent=%ux%ux%u dim=%s msaa=%ux levels=%u rpitch=%u fmt=%s "
"usages=%s%s%s%s%s%s%s%s%s%s%s%s%s%s "
- "tiling_flags=%s%s%s%s%s%s%s%s%s%s%s",
+ "tiling_flags=%s%s%s%s%s%s%s%s%s%s%s%s%s",
surf_info->width, surf_info->height,
surf_info->dim == ISL_SURF_DIM_3D ?
surf_info->depth : surf_info->array_len,
PRINT_TILING(Y0, "Y0"),
PRINT_TILING(SKL_Yf, "skl-Yf"),
PRINT_TILING(SKL_Ys, "skl-Ys"),
+ PRINT_TILING(ICL_Yf, "icl-Yf"),
+ PRINT_TILING(ICL_Ys, "icl-Ys"),
PRINT_TILING(4, "4"),
PRINT_TILING(64, "64"),
PRINT_TILING(HIZ, "hiz"),
[ISL_TILING_Y0] = "Y0",
[ISL_TILING_SKL_Yf] = "SKL-Yf",
[ISL_TILING_SKL_Ys] = "SKL-Ys",
+ [ISL_TILING_ICL_Yf] = "ICL-Yf",
+ [ISL_TILING_ICL_Ys] = "ICL-Ys",
[ISL_TILING_4] = "4",
[ISL_TILING_64] = "64",
[ISL_TILING_HIZ] = "hiz",
ISL_TILING_Y0, /**< Legacy Y tiling */
ISL_TILING_SKL_Yf, /**< Standard 4K tiling. The 'f' means "four". */
ISL_TILING_SKL_Ys, /**< Standard 64K tiling. The 's' means "sixty-four". */
+ ISL_TILING_ICL_Yf, /**< Standard 4K tiling. The 'f' means "four". */
+ ISL_TILING_ICL_Ys, /**< Standard 64K tiling. The 's' means "sixty-four". */
ISL_TILING_4, /**< 4K tiling. */
ISL_TILING_64, /**< 64K tiling.*/
ISL_TILING_HIZ, /**< Tiling format for HiZ surfaces */
#define ISL_TILING_Y0_BIT (1u << ISL_TILING_Y0)
#define ISL_TILING_SKL_Yf_BIT (1u << ISL_TILING_SKL_Yf)
#define ISL_TILING_SKL_Ys_BIT (1u << ISL_TILING_SKL_Ys)
+#define ISL_TILING_ICL_Yf_BIT (1u << ISL_TILING_ICL_Yf)
+#define ISL_TILING_ICL_Ys_BIT (1u << ISL_TILING_ICL_Ys)
#define ISL_TILING_4_BIT (1u << ISL_TILING_4)
#define ISL_TILING_64_BIT (1u << ISL_TILING_64)
#define ISL_TILING_HIZ_BIT (1u << ISL_TILING_HIZ)
/** Any Y tiling, including legacy Y tiling. */
#define ISL_TILING_ANY_Y_MASK (ISL_TILING_Y0_BIT | \
ISL_TILING_SKL_Yf_BIT | \
- ISL_TILING_SKL_Ys_BIT)
+ ISL_TILING_SKL_Ys_BIT | \
+ ISL_TILING_ICL_Yf_BIT | \
+ ISL_TILING_ICL_Ys_BIT)
/** The Skylake BSpec refers to Yf and Ys as "standard tiling formats". */
#define ISL_TILING_STD_Y_MASK (ISL_TILING_SKL_Yf_BIT | \
- ISL_TILING_SKL_Ys_BIT)
+ ISL_TILING_SKL_Ys_BIT | \
+ ISL_TILING_ICL_Yf_BIT | \
+ ISL_TILING_ICL_Ys_BIT)
/** @} */
/**
case ISL_TILING_W:
case ISL_TILING_SKL_Yf:
case ISL_TILING_SKL_Ys:
+ case ISL_TILING_ICL_Yf:
+ case ISL_TILING_ICL_Ys:
case ISL_TILING_4:
case ISL_TILING_64:
case ISL_TILING_GFX12_CCS:
if (ISL_GFX_VER(dev) >= 12) {
*flags &= ISL_TILING_LINEAR_BIT |
ISL_TILING_X_BIT |
- ISL_TILING_ANY_Y_MASK;
+ ISL_TILING_Y0_BIT |
+ ISL_TILING_ICL_Yf_BIT |
+ ISL_TILING_ICL_Ys_BIT;
+ } else if (ISL_GFX_VER(dev) >= 11) {
+ *flags &= ISL_TILING_LINEAR_BIT |
+ ISL_TILING_X_BIT |
+ ISL_TILING_W_BIT |
+ ISL_TILING_Y0_BIT |
+ ISL_TILING_ICL_Yf_BIT |
+ ISL_TILING_ICL_Ys_BIT;
} else if (ISL_GFX_VER(dev) >= 9) {
*flags &= ISL_TILING_LINEAR_BIT |
ISL_TILING_X_BIT |
ISL_TILING_W_BIT |
- ISL_TILING_ANY_Y_MASK;
+ ISL_TILING_Y0_BIT |
+ ISL_TILING_SKL_Yf_BIT |
+ ISL_TILING_SKL_Ys_BIT;
} else {
*flags &= ISL_TILING_LINEAR_BIT |
ISL_TILING_X_BIT |
*/
*flags &= ~ISL_TILING_SKL_Yf_BIT; /* FINISHME[SKL]: Support Yf */
*flags &= ~ISL_TILING_SKL_Ys_BIT; /* FINISHME[SKL]: Support Ys */
+ *flags &= ~ISL_TILING_ICL_Yf_BIT; /* FINISHME[ICL]: Support Yf */
+ *flags &= ~ISL_TILING_ICL_Ys_BIT; /* FINISHME[ICL]: Support Ys */
if (isl_surf_usage_is_depth(info->usage)) {
/* Depth requires Y. */
* completeness.
*/
*flags &= (ISL_TILING_LINEAR_BIT | ISL_TILING_X_BIT |
- ISL_TILING_Y0_BIT | ISL_TILING_SKL_Yf_BIT);
+ ISL_TILING_Y0_BIT |
+ ISL_TILING_SKL_Yf_BIT | ISL_TILING_ICL_Yf_BIT);
} else {
/* Before Skylake, the display engine does not accept Y */
*flags &= (ISL_TILING_LINEAR_BIT | ISL_TILING_X_BIT);
assert(isl_tiling_is_std_y(tiling));
const uint32_t bpb = fmtl->bpb;
- const uint32_t is_Ys = tiling == ISL_TILING_SKL_Ys;
+ const uint32_t is_Ys = tiling == ISL_TILING_SKL_Ys ||
+ tiling == ISL_TILING_ICL_Ys;
switch (info->dim) {
case ISL_SURF_DIM_1D:
[ISL_TILING_64] = TILE64,
#else
[ISL_TILING_Y0] = YMAJOR,
+ [ISL_TILING_ICL_Yf] = YMAJOR,
+ [ISL_TILING_ICL_Ys] = YMAJOR,
[ISL_TILING_SKL_Yf] = YMAJOR,
[ISL_TILING_SKL_Ys] = YMAJOR,
-#endif
+#endif /* GFX_VERx10 < 125 */
#if GFX_VER <= 11
[ISL_TILING_W] = WMAJOR,
#endif