anv,intel: Enable nir_opt_large_constants for Vulkan
According to RenderDoc, this shaves 99.6% of the run time off of the ambient occlusion pass in Skyrim Special Edition when running under DXVK and shaves 92% off the runtime for a reasonably representative frame. When running the actual game, Skyrim goes from being a slide-show to a very stable and playable framerate on my SKL GT4e machine. Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -112,6 +112,12 @@ struct brw_compiler {
|
||||
* will attempt to push everything.
|
||||
*/
|
||||
bool supports_pull_constants;
|
||||
|
||||
/**
|
||||
* Whether or not the driver supports NIR shader constants. This controls
|
||||
* whether nir_opt_large_constants will be run.
|
||||
*/
|
||||
bool supports_shader_constants;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -664,6 +664,13 @@ brw_preprocess_nir(const struct brw_compiler *compiler, nir_shader *nir)
|
||||
|
||||
nir = brw_nir_optimize(nir, compiler, is_scalar);
|
||||
|
||||
/* This needs to be run after the first optimization pass but before we
|
||||
* lower indirect derefs away
|
||||
*/
|
||||
if (compiler->supports_shader_constants) {
|
||||
OPT(nir_opt_large_constants, NULL, 32);
|
||||
}
|
||||
|
||||
nir_lower_bit_size(nir, lower_bit_size_callback, NULL);
|
||||
|
||||
if (is_scalar) {
|
||||
|
Reference in New Issue
Block a user