radv/ac: setup function parameters for vs as es and copy shader.
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
e1e9301b2a
commit
09cd037ca4
|
@ -87,6 +87,8 @@ struct nir_to_llvm_context {
|
|||
LLVMValueRef vs_prim_id;
|
||||
LLVMValueRef instance_id;
|
||||
|
||||
LLVMValueRef es2gs_offset;
|
||||
|
||||
LLVMValueRef gsvs_ring_stride;
|
||||
LLVMValueRef gsvs_num_entries;
|
||||
LLVMValueRef gs2vs_offset;
|
||||
|
@ -452,14 +454,21 @@ static void create_function(struct nir_to_llvm_context *ctx)
|
|||
arg_types[arg_idx++] = LLVMVectorType(ctx->i32, 3);
|
||||
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
|
||||
user_sgpr_count = sgpr_count = arg_idx;
|
||||
}
|
||||
user_sgpr_count = arg_idx;
|
||||
if (ctx->options->key.vs.as_es)
|
||||
arg_types[arg_idx++] = ctx->i32; //es2gs offset
|
||||
sgpr_count = arg_idx;
|
||||
arg_types[arg_idx++] = ctx->i32; // vertex id
|
||||
if (!ctx->is_gs_copy_shader) {
|
||||
arg_types[arg_idx++] = ctx->i32; // rel auto id
|
||||
arg_types[arg_idx++] = ctx->i32; // vs prim id
|
||||
arg_types[arg_idx++] = ctx->i32; // instance id
|
||||
}
|
||||
break;
|
||||
case MESA_SHADER_GEOMETRY:
|
||||
arg_types[arg_idx++] = ctx->i32; // gsvs stride
|
||||
|
@ -569,6 +578,7 @@ static void create_function(struct nir_to_llvm_context *ctx)
|
|||
LLVMGetParam(ctx->main_function, arg_idx++);
|
||||
break;
|
||||
case MESA_SHADER_VERTEX:
|
||||
if (!ctx->is_gs_copy_shader) {
|
||||
set_userdata_location_shader(ctx, AC_UD_VS_VERTEX_BUFFERS, user_sgpr_idx, 2);
|
||||
user_sgpr_idx += 2;
|
||||
ctx->vertex_buffers = LLVMGetParam(ctx->main_function, arg_idx++);
|
||||
|
@ -576,10 +586,15 @@ static void create_function(struct nir_to_llvm_context *ctx)
|
|||
user_sgpr_idx += 2;
|
||||
ctx->base_vertex = LLVMGetParam(ctx->main_function, arg_idx++);
|
||||
ctx->start_instance = LLVMGetParam(ctx->main_function, arg_idx++);
|
||||
}
|
||||
if (ctx->options->key.vs.as_es)
|
||||
ctx->es2gs_offset = LLVMGetParam(ctx->main_function, arg_idx++);
|
||||
ctx->vertex_id = LLVMGetParam(ctx->main_function, arg_idx++);
|
||||
if (!ctx->is_gs_copy_shader) {
|
||||
ctx->rel_auto_id = LLVMGetParam(ctx->main_function, arg_idx++);
|
||||
ctx->vs_prim_id = LLVMGetParam(ctx->main_function, arg_idx++);
|
||||
ctx->instance_id = LLVMGetParam(ctx->main_function, arg_idx++);
|
||||
}
|
||||
break;
|
||||
case MESA_SHADER_GEOMETRY:
|
||||
set_userdata_location_shader(ctx, AC_UD_GS_VS_RING_STRIDE_ENTRIES, user_sgpr_idx, 2);
|
||||
|
|
Loading…
Reference in New Issue