return si_unpack_param(ctx, ctx->args.merged_wave_info, 28, 4);
}
-static LLVMValueRef get_thread_id_in_tg(struct si_shader_context *ctx)
+LLVMValueRef gfx10_get_thread_id_in_tg(struct si_shader_context *ctx)
{
LLVMBuilderRef builder = ctx->ac.builder;
LLVMValueRef tmp;
struct pipe_stream_output_info *so = &ctx->shader->selector->so;
LLVMBuilderRef builder = ctx->ac.builder;
LLVMValueRef buf_ptr = ac_get_arg(&ctx->ac, ctx->internal_bindings);
- LLVMValueRef tid = get_thread_id_in_tg(ctx);
+ LLVMValueRef tid = gfx10_get_thread_id_in_tg(ctx);
LLVMValueRef tmp, tmp2;
LLVMValueRef i32_2 = LLVMConstInt(ctx->ac.i32, 2, false);
LLVMValueRef i32_4 = LLVMConstInt(ctx->ac.i32, 4, false);
assert(sel->info.stage == MESA_SHADER_VERTEX ||
(sel->info.stage == MESA_SHADER_TESS_EVAL && !shader->key.ge.as_es));
- LLVMValueRef es_vtxptr = ngg_nogs_vertex_ptr(ctx, get_thread_id_in_tg(ctx));
+ LLVMValueRef es_vtxptr = ngg_nogs_vertex_ptr(ctx, gfx10_get_thread_id_in_tg(ctx));
LLVMValueRef packed_data = ctx->ac.i32_0;
LLVMValueRef position[4] = {};
unsigned pos_index = 0;
for (unsigned i = 0; i < num_vertices; i++)
gs_vtxptr[i] = ngg_nogs_vertex_ptr(ctx, vtxindex[i]);
- es_vtxptr = ngg_nogs_vertex_ptr(ctx, get_thread_id_in_tg(ctx));
+ es_vtxptr = ngg_nogs_vertex_ptr(ctx, gfx10_get_thread_id_in_tg(ctx));
/* Adding these optimization barriers improves the generated code as follows. Crazy right?
*
LLVMValueRef vertex_ptr = NULL;
if (sel->so.num_outputs || gfx10_ngg_writes_user_edgeflags(ctx->shader))
- vertex_ptr = ngg_nogs_vertex_ptr(ctx, get_thread_id_in_tg(ctx));
+ vertex_ptr = ngg_nogs_vertex_ptr(ctx, gfx10_get_thread_id_in_tg(ctx));
for (unsigned i = 0; i < info->num_outputs; i++) {
outputs[i].semantic = info->output_semantic[i];
*/
if (info->output_semantic[i] == VARYING_SLOT_POS &&
ctx->shader->key.ge.opt.ngg_culling) {
- vertex_ptr = ngg_nogs_vertex_ptr(ctx, get_thread_id_in_tg(ctx));
+ vertex_ptr = ngg_nogs_vertex_ptr(ctx, gfx10_get_thread_id_in_tg(ctx));
for (unsigned j = 0; j < 4; j++) {
tmp = LLVMConstInt(ctx->ac.i32, lds_pos_x + j, 0);
/* Wait for GS stores to finish. */
ac_build_s_barrier(&ctx->ac);
- tmp = ngg_nogs_vertex_ptr(ctx, get_thread_id_in_tg(ctx));
+ tmp = ngg_nogs_vertex_ptr(ctx, gfx10_get_thread_id_in_tg(ctx));
tmp = ac_build_gep0(&ctx->ac, tmp, ctx->ac.i32_0);
outputs[i].values[0] = LLVMBuildLoad(builder, tmp, "");
} else {
ac_build_ifcc(&ctx->ac, can_emit, 9001);
- const LLVMValueRef vertexptr = ngg_gs_emit_vertex_ptr(ctx, get_thread_id_in_tg(ctx), vertexidx);
+ const LLVMValueRef vertexptr = ngg_gs_emit_vertex_ptr(ctx, gfx10_get_thread_id_in_tg(ctx), vertexidx);
unsigned out_idx = 0;
for (unsigned i = 0; i < info->num_outputs; i++) {
for (unsigned chan = 0; chan < 4; chan++, out_idx++) {
*/
LLVMBuilderRef builder = ctx->ac.builder;
LLVMValueRef scratchptr = ctx->gs_ngg_scratch;
- LLVMValueRef tid = get_thread_id_in_tg(ctx);
+ LLVMValueRef tid = gfx10_get_thread_id_in_tg(ctx);
LLVMValueRef tmp;
tmp = LLVMBuildICmp(builder, LLVMIntULT, tid, LLVMConstInt(ctx->ac.i32, 4, false), "");
if (!info->num_stream_output_components[stream])
continue;
- const LLVMValueRef gsthread = get_thread_id_in_tg(ctx);
+ const LLVMValueRef gsthread = gfx10_get_thread_id_in_tg(ctx);
ac_build_bgnloop(&ctx->ac, 5100);
ac_build_s_barrier(&ctx->ac);
- const LLVMValueRef tid = get_thread_id_in_tg(ctx);
+ const LLVMValueRef tid = gfx10_get_thread_id_in_tg(ctx);
LLVMValueRef num_emit_threads = ngg_get_prim_cnt(ctx);
/* Streamout */