On Fri, Nov 10, 2017 at 4:13 AM, Timothy Arceri <tarc...@itsqueeze.com> wrote: > --- > src/gallium/drivers/radeonsi/si_shader.c | 21 +++++++++++++++++++-- > 1 file changed, 19 insertions(+), 2 deletions(-) > > diff --git a/src/gallium/drivers/radeonsi/si_shader.c > b/src/gallium/drivers/radeonsi/si_shader.c > index 10b1890b4f..efaab0a7a1 100644 > --- a/src/gallium/drivers/radeonsi/si_shader.c > +++ b/src/gallium/drivers/radeonsi/si_shader.c > @@ -3257,21 +3257,37 @@ static void si_tgsi_emit_es_epilogue(struct > lp_build_tgsi_context *bld_base) > } > > static LLVMValueRef si_get_gs_wave_id(struct si_shader_context *ctx) > { > if (ctx->screen->b.chip_class >= GFX9) > return unpack_param(ctx, ctx->param_merged_wave_info, 16, 8); > else > return LLVMGetParam(ctx->main_fn, ctx->param_gs_wave_id); > } > > -static void si_llvm_emit_gs_epilogue(struct lp_build_tgsi_context *bld_base) > +static void si_llvm_emit_gs_epilogue(struct ac_shader_abi *abi, > + unsigned max_outputs, > + LLVMValueRef *addrs) > +{ > + struct si_shader_context *ctx = si_shader_context_from_abi(abi); > + struct tgsi_shader_info UNUSED *info = &ctx->shader->selector->info; > + > + assert(info->num_outputs <= max_outputs); > + > + ac_build_sendmsg(&ctx->ac, AC_SENDMSG_GS_OP_NOP | AC_SENDMSG_GS_DONE, > + si_get_gs_wave_id(ctx)); > + > + if (ctx->screen->b.chip_class >= GFX9) > + lp_build_endif(&ctx->merged_wrap_if_state); > +}
This is an exact duplication of the function below. Marek > + > +static void si_tgsi_emit_gs_epilogue(struct lp_build_tgsi_context *bld_base) > { > struct si_shader_context *ctx = si_shader_context(bld_base); > > ac_build_sendmsg(&ctx->ac, AC_SENDMSG_GS_OP_NOP | AC_SENDMSG_GS_DONE, > si_get_gs_wave_id(ctx)); > > if (ctx->screen->b.chip_class >= GFX9) > lp_build_endif(&ctx->merged_wrap_if_state); > } > > @@ -5772,21 +5788,22 @@ static bool si_compile_tgsi_main(struct > si_shader_context *ctx, > ctx->abi.emit_outputs = si_llvm_emit_es_epilogue; > bld_base->emit_epilogue = si_tgsi_emit_es_epilogue; > } else { > ctx->abi.emit_outputs = si_llvm_emit_vs_epilogue; > bld_base->emit_epilogue = si_tgsi_emit_epilogue; > } > break; > case PIPE_SHADER_GEOMETRY: > bld_base->emit_fetch_funcs[TGSI_FILE_INPUT] = fetch_input_gs; > ctx->abi.emit_vertex = si_llvm_emit_vertex; > - bld_base->emit_epilogue = si_llvm_emit_gs_epilogue; > + ctx->abi.emit_outputs = si_llvm_emit_gs_epilogue; > + bld_base->emit_epilogue = si_tgsi_emit_gs_epilogue; > break; > case PIPE_SHADER_FRAGMENT: > ctx->load_input = declare_input_fs; > ctx->abi.emit_outputs = si_llvm_return_fs_outputs; > bld_base->emit_epilogue = si_tgsi_emit_epilogue; > break; > case PIPE_SHADER_COMPUTE: > break; > default: > assert(!"Unsupported shader type"); > -- > 2.14.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev