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:
@@ -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);
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
@@ -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);
|
||||||
|
@@ -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" />
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user