diff --git a/src/amd/compiler/aco_assembler.cpp b/src/amd/compiler/aco_assembler.cpp index c27e084645c..a50d4b95e44 100644 --- a/src/amd/compiler/aco_assembler.cpp +++ b/src/amd/compiler/aco_assembler.cpp @@ -1291,8 +1291,10 @@ emit_program(Program* program, std::vector& code, std::vectorstage.hw == AC_HW_VERTEX_SHADER || program->stage.hw == AC_HW_PIXEL_SHADER || - program->stage.hw == AC_HW_NEXT_GEN_GEOMETRY_SHADER) + /* Prolog has no exports. */ + if (!program->is_prolog && + (program->stage.hw == AC_HW_VERTEX_SHADER || program->stage.hw == AC_HW_PIXEL_SHADER || + program->stage.hw == AC_HW_NEXT_GEN_GEOMETRY_SHADER)) fix_exports(ctx, code, program); for (Block& block : program->blocks) { diff --git a/src/amd/compiler/aco_interface.cpp b/src/amd/compiler/aco_interface.cpp index 51f0cbdcfc2..08274ea2bc3 100644 --- a/src/amd/compiler/aco_interface.cpp +++ b/src/amd/compiler/aco_interface.cpp @@ -363,6 +363,8 @@ aco_compile_shader_part(const struct aco_compiler_options* options, program->debug.func = options->debug.func; program->debug.private_data = options->debug.private_data; + program->is_prolog = is_prolog; + /* Instruction selection */ select_shader_part(program.get(), pinfo, &config, options, info, args); diff --git a/src/amd/compiler/aco_ir.h b/src/amd/compiler/aco_ir.h index 6de37e5ba1e..df902cbedf0 100644 --- a/src/amd/compiler/aco_ir.h +++ b/src/amd/compiler/aco_ir.h @@ -2121,6 +2121,7 @@ public: bool has_smem_buffer_or_global_loads = false; bool has_pops_overlapped_waves_wait = false; bool has_color_exports = false; + bool is_prolog = false; std::vector constant_data; Temp private_segment_buffer;