LLVMValueRef push_constants;
LLVMValueRef view_index;
LLVMValueRef num_work_groups;
- LLVMValueRef workgroup_ids[3];
LLVMValueRef local_invocation_ids;
LLVMValueRef tg_size;
}
for (int i = 0; i < 3; i++) {
- ctx->workgroup_ids[i] = NULL;
+ ctx->abi.workgroup_ids[i] = NULL;
if (ctx->shader_info->info.cs.uses_block_id[i]) {
add_arg(&args, ARG_SGPR, ctx->ac.i32,
- &ctx->workgroup_ids[i]);
+ &ctx->abi.workgroup_ids[i]);
}
}
LLVMValueRef values[3];
for (int i = 0; i < 3; i++) {
- values[i] = ctx->nctx->workgroup_ids[i] ?
- ctx->nctx->workgroup_ids[i] : ctx->ac.i32_0;
+ values[i] = ctx->abi->workgroup_ids[i] ?
+ ctx->abi->workgroup_ids[i] : ctx->ac.i32_0;
}
result = ac_build_gather_values(&ctx->ac, values, 3);
for (int i = 0; i < 3; i++) {
values[i] = ctx->i32_0;
- if (ctx->param_block_id[i] >= 0) {
- values[i] = LLVMGetParam(ctx->main_fn,
- ctx->param_block_id[i]);
+ if (ctx->abi.workgroup_ids[i]) {
+ values[i] = ctx->abi.workgroup_ids[i];
}
}
value = lp_build_gather_values(&ctx->gallivm, values, 3);
ctx->param_block_size = add_arg(&fninfo, ARG_SGPR, v3i32);
for (i = 0; i < 3; i++) {
- ctx->param_block_id[i] = -1;
+ ctx->abi.workgroup_ids[i] = NULL;
if (shader->selector->info.uses_block_id[i])
- ctx->param_block_id[i] = add_arg(&fninfo, ARG_SGPR, ctx->i32);
+ add_arg_assign(&fninfo, ARG_SGPR, ctx->i32, &ctx->abi.workgroup_ids[i]);
}
ctx->param_thread_id = add_arg(&fninfo, ARG_VGPR, v3i32);