diff --git a/src/panfrost/compiler/pan_compiler.c b/src/panfrost/compiler/pan_compiler.c index fe0584d9e3e..29111a3b035 100644 --- a/src/panfrost/compiler/pan_compiler.c +++ b/src/panfrost/compiler/pan_compiler.c @@ -163,21 +163,11 @@ pan_lookup_pushed_ubo(struct pan_ubo_push *push, unsigned ubo, unsigned offs) } void -pan_shader_compile(nir_shader *s, struct pan_compile_inputs *inputs, - struct util_dynarray *binary, struct pan_shader_info *info) +pan_shader_update_info(struct pan_shader_info *info, nir_shader *s, + struct pan_compile_inputs *inputs) { unsigned arch = pan_arch(inputs->gpu_id); - memset(info, 0, sizeof(*info)); - - NIR_PASS(_, s, nir_inline_sysval, nir_intrinsic_load_printf_buffer_size, - PAN_PRINTF_BUFFER_SIZE - 8); - - if (arch >= 6) - bifrost_compile_shader_nir(s, inputs, binary, info); - else - midgard_compile_shader_nir(s, inputs, binary, info); - info->stage = s->info.stage; info->contains_barrier = s->info.uses_memory_barrier || s->info.uses_control_barrier; @@ -305,6 +295,25 @@ pan_shader_compile(nir_shader *s, struct pan_compile_inputs *inputs, } } +void +pan_shader_compile(nir_shader *s, struct pan_compile_inputs *inputs, + struct util_dynarray *binary, struct pan_shader_info *info) +{ + unsigned arch = pan_arch(inputs->gpu_id); + + memset(info, 0, sizeof(*info)); + + NIR_PASS(_, s, nir_inline_sysval, nir_intrinsic_load_printf_buffer_size, + PAN_PRINTF_BUFFER_SIZE - 8); + + if (arch >= 6) + bifrost_compile_shader_nir(s, inputs, binary, info); + else + midgard_compile_shader_nir(s, inputs, binary, info); + + pan_shader_update_info(info, s, inputs); +} + void pan_disassemble(FILE *fp, const void *code, size_t size, unsigned gpu_id, bool verbose) diff --git a/src/panfrost/compiler/pan_compiler.h b/src/panfrost/compiler/pan_compiler.h index e29c9158474..24b0096cf9f 100644 --- a/src/panfrost/compiler/pan_compiler.h +++ b/src/panfrost/compiler/pan_compiler.h @@ -366,6 +366,9 @@ struct pan_shader_info { }; }; +void pan_shader_update_info(struct pan_shader_info *info, nir_shader *s, + struct pan_compile_inputs *inputs); + void pan_shader_compile(nir_shader *nir, struct pan_compile_inputs *inputs, struct util_dynarray *binary, struct pan_shader_info *info);