isl: Finish tiling filtering for Gen6.

Gen6 only has one additional restriction over Gen7+, so we just add it
to the existing gen7 function (which actually covers later gens too).

This should stop FINISHME spew when running GL on Sandybridge.

v2: Fix bytes per block vs. bits per block confusion (Jason) and
    rename function to gen6_filter_tiling (Jason and Chad).

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Kenneth Graunke 2016-08-26 13:01:13 -07:00
parent 9fec15a7e0
commit 081f21f29b
3 changed files with 15 additions and 5 deletions

View file

@ -236,11 +236,11 @@ isl_surf_choose_tiling(const struct isl_device *dev,
{
isl_tiling_flags_t tiling_flags = info->tiling_flags;
if (ISL_DEV_GEN(dev) >= 7) {
gen7_filter_tiling(dev, info, &tiling_flags);
if (ISL_DEV_GEN(dev) >= 6) {
gen6_filter_tiling(dev, info, &tiling_flags);
} else {
isl_finishme("%s: gen%u", __func__, ISL_DEV_GEN(dev));
gen7_filter_tiling(dev, info, &tiling_flags);
gen6_filter_tiling(dev, info, &tiling_flags);
}
#define CHOOSE(__tiling) \

View file

@ -198,7 +198,7 @@ gen7_format_needs_valign2(const struct isl_device *dev,
* flags except ISL_TILING_X_BIT and ISL_TILING_LINEAR_BIT.
*/
void
gen7_filter_tiling(const struct isl_device *dev,
gen6_filter_tiling(const struct isl_device *dev,
const struct isl_surf_init_info *restrict info,
isl_tiling_flags_t *flags)
{
@ -297,6 +297,16 @@ gen7_filter_tiling(const struct isl_device *dev,
*/
*flags &= ~ISL_TILING_Y0_BIT;
}
/* From the Sandybridge PRM, Volume 1, Part 2, page 32:
*
* "NOTE: 128BPE Format Color Buffer ( render target ) MUST be either
* TileX or Linear."
*
* This is necessary all the way back to 965, but is permitted on Gen7+.
*/
if (ISL_DEV_GEN(dev) < 7 && isl_format_get_layout(info->format)->bpb >= 128)
*flags &= ~ISL_TILING_Y0_BIT;
}
/**

View file

@ -30,7 +30,7 @@ extern "C" {
#endif
void
gen7_filter_tiling(const struct isl_device *dev,
gen6_filter_tiling(const struct isl_device *dev,
const struct isl_surf_init_info *restrict info,
isl_tiling_flags_t *flags);