On 18 April 2017 at 15:07, Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> wrote: > On Tue, Apr 18, 2017 at 5:57 AM, Dave Airlie <airl...@gmail.com> wrote: >> From: Dave Airlie <airl...@redhat.com> >> >> In practice this will probably just drop draw id in a few places. >> >> Signed-off-by: Dave Airlie <airl...@redhat.com> >> --- >> src/amd/common/ac_nir_to_llvm.c | 42 +++++++++++++++++++++++++++----------- >> src/amd/common/ac_shader_info.c | 26 ++++++++++++++++++++++++ >> src/amd/common/ac_shader_info.h | 5 +++++ >> src/amd/vulkan/radv_cmd_buffer.c | 44 >> +++++++++++++++++++++++++++++++--------- >> 4 files changed, 95 insertions(+), 22 deletions(-) >> >> diff --git a/src/amd/common/ac_nir_to_llvm.c >> b/src/amd/common/ac_nir_to_llvm.c >> index dbb3b67..7161caf 100644 >> --- a/src/amd/common/ac_nir_to_llvm.c >> +++ b/src/amd/common/ac_nir_to_llvm.c >> @@ -614,10 +614,15 @@ static void create_function(struct nir_to_llvm_context >> *ctx) >> break; >> case MESA_SHADER_VERTEX: >> if (!ctx->is_gs_copy_shader) { >> - arg_types[arg_idx++] = const_array(ctx->v16i8, 16); >> /* vertex buffers */ >> - arg_types[arg_idx++] = ctx->i32; // base vertex >> - arg_types[arg_idx++] = ctx->i32; // start instance >> - arg_types[arg_idx++] = ctx->i32; // draw index >> + if (ctx->shader_info->info.vs.has_vertex_buffers) >> + arg_types[arg_idx++] = >> const_array(ctx->v16i8, 16); /* vertex buffers */ >> + if >> (ctx->shader_info->info.vs.needs_base_vertex_start_instance || >> + ctx->shader_info->info.vs.needs_draw_id) { >> + arg_types[arg_idx++] = ctx->i32; // base >> vertex >> + arg_types[arg_idx++] = ctx->i32; // start >> instance > > I'm not sure we can avoid having the CP write these two to some user > SGPRs for indirect draws? If so, we cannot skip them.
Yeah I did wonder this, it's a pity but you are probably right, I'll rework this patch to always allocate those two. Dave. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev