Revert "anv: Add driconf option to disable compression for 16bpp format"

This reverts commit bcfec61d1e.

The previous patch fixed the underlying issue that the above commit was
actually working around. It turns out that the previously observed
performance regression was due to invalid aux-map entries for
multi-layer HiZ+CCS buffers.

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7046>
This commit is contained in:
Nanley Chery
2020-10-07 14:27:57 -07:00
committed by Marge Bot
parent cce6fc3b5c
commit 290f3fe897
5 changed files with 1 additions and 31 deletions

View File

@@ -54,7 +54,6 @@ static const driOptionDescription anv_dri_options[] = {
DRI_CONF_SECTION_PERFORMANCE DRI_CONF_SECTION_PERFORMANCE
DRI_CONF_VK_X11_OVERRIDE_MIN_IMAGE_COUNT(0) DRI_CONF_VK_X11_OVERRIDE_MIN_IMAGE_COUNT(0)
DRI_CONF_VK_X11_STRICT_IMAGE_COUNT(false) DRI_CONF_VK_X11_STRICT_IMAGE_COUNT(false)
DRI_CONF_DISABLE_D16UNORM_COMPRESSION(false)
DRI_CONF_SECTION_END DRI_CONF_SECTION_END
DRI_CONF_SECTION_DEBUG DRI_CONF_SECTION_DEBUG
@@ -766,8 +765,6 @@ VkResult anv_CreateInstance(
VG(VALGRIND_CREATE_MEMPOOL(instance, 0, false)); VG(VALGRIND_CREATE_MEMPOOL(instance, 0, false));
anv_init_dri_options(instance); anv_init_dri_options(instance);
instance->disable_d16unorm_compression =
driQueryOptionb(&instance->dri_options, "disable_d16unorm_compression");
*pInstance = anv_instance_to_handle(instance); *pInstance = anv_instance_to_handle(instance);

View File

@@ -420,20 +420,7 @@ add_aux_surface_if_supported(struct anv_device *device,
* TODO: This is a heuristic trade-off; we haven't tuned it at all. * TODO: This is a heuristic trade-off; we haven't tuned it at all.
*/ */
assert(device->info.gen >= 12); assert(device->info.gen >= 12);
/* The experiment showed that running the benchmark with HIZ performs image->planes[plane].aux_usage = ISL_AUX_USAGE_HIZ_CCS_WT;
* better than HIZ_CCS and HIZ_CCS_WT. Because the benchmark uses the
* depth pass with D16_UNORM surfaces format which fills the L3 cache
* and next pass doesn't make use of it where we end up clearing cache
* which results in performance regression.
*
* In order to avoid perf regression, disable HIZ_CCS_WT compression
* for D16_UNORM surface format on Fallout4 via driconf option.
*/
if (plane_format.isl_format == ISL_FORMAT_R16_UNORM &&
device->physical->instance->disable_d16unorm_compression)
image->planes[plane].aux_usage = ISL_AUX_USAGE_HIZ;
else
image->planes[plane].aux_usage = ISL_AUX_USAGE_HIZ_CCS_WT;
} else { } else {
assert(device->info.gen >= 12); assert(device->info.gen >= 12);
image->planes[plane].aux_usage = ISL_AUX_USAGE_HIZ_CCS; image->planes[plane].aux_usage = ISL_AUX_USAGE_HIZ_CCS;

View File

@@ -1171,7 +1171,6 @@ struct anv_instance {
struct driOptionCache dri_options; struct driOptionCache dri_options;
struct driOptionCache available_dri_options; struct driOptionCache available_dri_options;
bool disable_d16unorm_compression;
}; };
VkResult anv_init_wsi(struct anv_physical_device *physical_device); VkResult anv_init_wsi(struct anv_physical_device *physical_device);

View File

@@ -733,11 +733,6 @@ TODO: document the other workarounds.
<option name="vs_position_always_invariant" value="true" /> <option name="vs_position_always_invariant" value="true" />
</application> </application>
</device> </device>
<device driver="anv">
<application name="Fallout 4" executable="Fallout4.exe">
<option name="disable_d16unorm_compression" value="true" />
</application>
</device>
<device driver="radv"> <device driver="radv">
<application name="Shadow Of The Tomb Raider" executable="ShadowOfTheTombRaider"> <application name="Shadow Of The Tomb Raider" executable="ShadowOfTheTombRaider">
<option name="radv_report_llvm9_version_string" value="true" /> <option name="radv_report_llvm9_version_string" value="true" />

View File

@@ -451,12 +451,4 @@
DRI_CONF_OPT_I(radv_override_uniform_offset_alignment, def, 0, 128, \ DRI_CONF_OPT_I(radv_override_uniform_offset_alignment, def, 0, 128, \
"Override the minUniformBufferOffsetAlignment exposed to the application. (0 = default)") "Override the minUniformBufferOffsetAlignment exposed to the application. (0 = default)")
/**
* \brief ANV specific configuration options
*/
#define DRI_CONF_DISABLE_D16UNORM_COMPRESSION(def) \
DRI_CONF_OPT_B(disable_d16unorm_compression, def, \
"Disable HIZ_CCS_WT compression for D16_UNORM surface format")
#endif #endif