mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-12 00:20:43 +01:00
intel/isl: Reduce scope of Yf-disabling workaround
The missing bits for correct operation with compressed textures and multisampled textures were added in previous commits. The issues with lossless compression and higher miptail slots seem to affect 128bpb formats as well. However, we're only failing tests which use compression (even if those tests never actually use the compression format, just blorp_copy() up and down). Limit the workaround only to compressed formats until we get more information/testing. Tests: dEQP-VK.api.copy_and_blit.core.image_to_buffer.3d_images.mip_copies_etc2_r8g8b8a8_unorm_block_16x8x24 dEQP-VK.pipeline.monolithic.sampler.view_type.3d.format.astc_10x6_unorm_block.mipmap.linear.lod.select_bias_3_1 dEQP-VK.api.copy_and_blit.core.image_to_buffer.2d_images.mip_copies_astc_12x12_unorm_block_64x192 Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38063>
This commit is contained in:
parent
ec37a06d93
commit
78e24605db
2 changed files with 31 additions and 10 deletions
|
|
@ -2348,6 +2348,22 @@ isl_choose_miptail_start_level(const struct isl_device *dev,
|
|||
}
|
||||
}
|
||||
|
||||
if (isl_tiling_is_std_y(tile_info->tiling) &&
|
||||
info->dim == ISL_SURF_DIM_3D &&
|
||||
fmtl->txc != ISL_TXC_NONE &&
|
||||
(fmtl->bpb == 128 || (fmtl->bpb == 64 && ISL_GFX_VER(dev) == 9))) {
|
||||
/* Although the note above is for lossless compression, this seems to
|
||||
* affect 64bpb and 128bpb formats as well. At the moment, only
|
||||
* block-compressed texture tests are affected, so limit the workaround
|
||||
* to those for now.
|
||||
*/
|
||||
if (tile_info->tiling == ISL_TILING_SKL_Yf ||
|
||||
tile_info->tiling == ISL_TILING_ICL_Yf) {
|
||||
max_miptail_levels = MIN2(max_miptail_levels, 2);
|
||||
} else {
|
||||
max_miptail_levels = MIN2(max_miptail_levels, 6);
|
||||
}
|
||||
}
|
||||
|
||||
if (info->dim != ISL_SURF_DIM_3D &&
|
||||
_isl_surf_info_supports_ccs(dev, info->format, info->usage)) {
|
||||
|
|
@ -2367,6 +2383,21 @@ isl_choose_miptail_start_level(const struct isl_device *dev,
|
|||
}
|
||||
}
|
||||
|
||||
if (isl_tiling_is_std_y(tile_info->tiling) &&
|
||||
info->dim == ISL_SURF_DIM_2D &&
|
||||
fmtl->txc != ISL_TXC_NONE && fmtl->bpb == 128) {
|
||||
/* Although the note above is for lossless compression, this seems to
|
||||
* affect 128bpb formats as well. At the moment, only block-compressed
|
||||
* texture tests are affected, so limit the workaround to those for now.
|
||||
*/
|
||||
if (tile_info->tiling == ISL_TILING_SKL_Yf ||
|
||||
tile_info->tiling == ISL_TILING_ICL_Yf) {
|
||||
max_miptail_levels = MIN2(max_miptail_levels, 7);
|
||||
} else {
|
||||
max_miptail_levels = MIN2(max_miptail_levels, 11);
|
||||
}
|
||||
}
|
||||
|
||||
/* Start with the minimum number of levels that will fit in the tile */
|
||||
uint32_t min_miptail_start =
|
||||
info->levels > max_miptail_levels ? info->levels - max_miptail_levels : 0;
|
||||
|
|
|
|||
|
|
@ -204,16 +204,6 @@ isl_gfx6_filter_tiling(const struct isl_device *dev,
|
|||
if (info->usage & ISL_SURF_USAGE_SOFTWARE_DETILING)
|
||||
*flags &= (1 << dev->shader_tiling) | ISL_TILING_LINEAR_BIT;
|
||||
|
||||
/* TODO: Investigate Yf failures (~5000 VK CTS failures at the time of this
|
||||
* writing).
|
||||
*/
|
||||
if (isl_format_is_compressed(info->format) ||
|
||||
info->samples > 1 ||
|
||||
info->dim == ISL_SURF_DIM_3D) {
|
||||
*flags &= ~ISL_TILING_SKL_Yf_BIT; /* FINISHME[SKL]: Support Yf */
|
||||
*flags &= ~ISL_TILING_ICL_Yf_BIT; /* FINISHME[ICL]: Support Yf */
|
||||
}
|
||||
|
||||
if (isl_surf_usage_is_depth(info->usage)) {
|
||||
/* Depth requires Y. */
|
||||
*flags &= ISL_TILING_ANY_Y_MASK;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue