Push constants on Intel hardware are significantly more performant than pull constants. Since most Vulkan applications don't actively use push constants on Vulkan or at least don't use it heavily, we're pulling way more than we should be. By enabling pushing chunks of UBOs we can get rid of a lot of those pulls.
On my SKL GT4e, this improves the performance of Dota 2 and Talos by around 2.5% and improves Aztec Ruins by around 2%. Reviewed-by: Jordan Justen <jordan.l.jus...@intel.com> --- src/intel/vulkan/anv_device.c | 1 + src/intel/vulkan/anv_pipeline.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index 013823e..a9364b5 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -419,6 +419,7 @@ anv_physical_device_init(struct anv_physical_device *device, device->compiler->shader_debug_log = compiler_debug_log; device->compiler->shader_perf_log = compiler_perf_log; device->compiler->supports_pull_constants = false; + device->compiler->constant_buffer_0_is_relative = true; isl_device_init(&device->isl_dev, &device->info, swizzled); diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c index cf2079d..f2d4d113 100644 --- a/src/intel/vulkan/anv_pipeline.c +++ b/src/intel/vulkan/anv_pipeline.c @@ -389,6 +389,9 @@ anv_pipeline_compile(struct anv_pipeline *pipeline, struct brw_stage_prog_data *prog_data, struct anv_pipeline_bind_map *map) { + const struct brw_compiler *compiler = + pipeline->device->instance->physicalDevice.compiler; + nir_shader *nir = anv_shader_compile_to_nir(pipeline, mem_ctx, module, entrypoint, stage, spec_info); @@ -438,6 +441,9 @@ anv_pipeline_compile(struct anv_pipeline *pipeline, if (pipeline->layout) anv_nir_apply_pipeline_layout(pipeline, nir, prog_data, map); + if (stage != MESA_SHADER_COMPUTE) + brw_nir_analyze_ubo_ranges(compiler, nir, prog_data->ubo_ranges); + assert(nir->num_uniforms == prog_data->nr_params * 4); return nir; -- 2.5.0.400.gff86faf _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev