isl: Add support for multisample compression surfaces

Reviewed-by: Chad Versace <chad.versace@intel.com>
This commit is contained in:
Jason Ekstrand 2016-07-08 19:37:27 -07:00
parent 33dc8549fb
commit 219024b9a7
3 changed files with 15 additions and 0 deletions

View File

@ -352,6 +352,10 @@ enum isl_format {
/* Formats for color compression surfaces */
ISL_FORMAT_HIZ,
ISL_FORMAT_MCS_2X,
ISL_FORMAT_MCS_4X,
ISL_FORMAT_MCS_8X,
ISL_FORMAT_MCS_16X,
/* Hardware doesn't understand this out-of-band value */
ISL_FORMAT_UNSUPPORTED = UINT16_MAX,
@ -403,6 +407,7 @@ enum isl_txc {
/* Used for auxiliary surface formats */
ISL_TXC_HIZ,
ISL_TXC_MCS,
};
/**
@ -519,6 +524,7 @@ typedef uint64_t isl_surf_usage_flags_t;
#define ISL_SURF_USAGE_DISPLAY_FLIP_Y_BIT (1u << 11)
#define ISL_SURF_USAGE_STORAGE_BIT (1u << 12)
#define ISL_SURF_USAGE_HIZ_BIT (1u << 13)
#define ISL_SURF_USAGE_MCS_BIT (1u << 14)
/** @} */
/**
@ -984,6 +990,7 @@ isl_format_has_bc_compression(enum isl_format fmt)
return false;
case ISL_TXC_HIZ:
case ISL_TXC_MCS:
unreachable("Should not be called on an aux surface");
}

View File

@ -315,3 +315,7 @@ ASTC_LDR_2D_10X10_FLT16 , 128, 10, 10, 1, sf16, sf16, sf16, sf16, ,
ASTC_LDR_2D_12X10_FLT16 , 128, 12, 10, 1, sf16, sf16, sf16, sf16, , , , linear, astc
ASTC_LDR_2D_12X12_FLT16 , 128, 12, 12, 1, sf16, sf16, sf16, sf16, , , , linear, astc
HIZ , 128, 8, 4, 1, , , , , , , , , hiz
MCS_2X , 8, 1, 1, 1, , , , , , , , , mcs
MCS_4X , 8, 1, 1, 1, , , , , , , , , mcs
MCS_8X , 32, 1, 1, 1, , , , , , , , , mcs
MCS_16X , 64, 1, 1, 1, , , , , , , , , mcs

Can't render this file because it contains an unexpected character in line 4 and column 65.

View File

@ -238,6 +238,10 @@ gen7_filter_tiling(const struct isl_device *dev,
*flags &= ~ISL_TILING_HIZ_BIT;
}
/* MCS buffers are always Y-tiled */
if (isl_format_get_layout(info->format)->txc == ISL_TXC_MCS)
*flags &= ISL_TILING_Y0_BIT;
if (info->usage & (ISL_SURF_USAGE_DISPLAY_ROTATE_90_BIT |
ISL_SURF_USAGE_DISPLAY_ROTATE_180_BIT |
ISL_SURF_USAGE_DISPLAY_ROTATE_270_BIT)) {