radv: compile GS copy shader after geometry shader
This affects the pipeline feedback durations: GS copy shader compilation is now included in the GS compilation duration. Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Timur Kristóf <timur.kristof@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18898>
This commit is contained in:
@@ -3657,13 +3657,6 @@ radv_pipeline_nir_to_asm(struct radv_pipeline *pipeline, struct radv_pipeline_st
|
|||||||
bool pipeline_has_ngg = last_vgt_api_stage != MESA_SHADER_NONE &&
|
bool pipeline_has_ngg = last_vgt_api_stage != MESA_SHADER_NONE &&
|
||||||
stages[last_vgt_api_stage].info.is_ngg;
|
stages[last_vgt_api_stage].info.is_ngg;
|
||||||
|
|
||||||
if (stages[MESA_SHADER_GEOMETRY].nir && !pipeline_has_ngg) {
|
|
||||||
pipeline->gs_copy_shader =
|
|
||||||
radv_pipeline_create_gs_copy_shader(pipeline, stages, pipeline_key, pipeline_layout,
|
|
||||||
keep_executable_info, keep_statistic_info,
|
|
||||||
gs_copy_binary);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int s = MESA_VULKAN_SHADER_STAGES - 1; s >= 0; s--) {
|
for (int s = MESA_VULKAN_SHADER_STAGES - 1; s >= 0; s--) {
|
||||||
if (!(active_stages & (1 << s)) || pipeline->shaders[s])
|
if (!(active_stages & (1 << s)) || pipeline->shaders[s])
|
||||||
continue;
|
continue;
|
||||||
@@ -3693,6 +3686,12 @@ radv_pipeline_nir_to_asm(struct radv_pipeline *pipeline, struct radv_pipeline_st
|
|||||||
pipeline_key, keep_executable_info,
|
pipeline_key, keep_executable_info,
|
||||||
keep_statistic_info, &binaries[s]);
|
keep_statistic_info, &binaries[s]);
|
||||||
|
|
||||||
|
if (s == MESA_SHADER_GEOMETRY && !pipeline_has_ngg) {
|
||||||
|
pipeline->gs_copy_shader = radv_pipeline_create_gs_copy_shader(
|
||||||
|
pipeline, stages, pipeline_key, pipeline_layout, keep_executable_info,
|
||||||
|
keep_statistic_info, gs_copy_binary);
|
||||||
|
}
|
||||||
|
|
||||||
stages[s].feedback.duration += os_time_get_nano() - stage_start;
|
stages[s].feedback.duration += os_time_get_nano() - stage_start;
|
||||||
|
|
||||||
active_stages &= ~(1 << shaders[0]->info.stage);
|
active_stages &= ~(1 << shaders[0]->info.stage);
|
||||||
|
Reference in New Issue
Block a user