ac/nir: rename nir_to_llvm_context to radv_shader_context
There is still more to do in that area, but it's a good start. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
parent
141db61509
commit
ad4b58ea70
|
@ -63,7 +63,7 @@ struct ac_nir_context {
|
|||
LLVMValueRef *locals;
|
||||
};
|
||||
|
||||
struct nir_to_llvm_context {
|
||||
struct radv_shader_context {
|
||||
struct ac_llvm_context ac;
|
||||
const struct ac_nir_compiler_options *options;
|
||||
struct ac_shader_variant_info *shader_info;
|
||||
|
@ -129,10 +129,10 @@ struct nir_to_llvm_context {
|
|||
uint64_t tcs_outputs_read;
|
||||
};
|
||||
|
||||
static inline struct nir_to_llvm_context *
|
||||
nir_to_llvm_context_from_abi(struct ac_shader_abi *abi)
|
||||
static inline struct radv_shader_context *
|
||||
radv_shader_context_from_abi(struct ac_shader_abi *abi)
|
||||
{
|
||||
struct nir_to_llvm_context *ctx = NULL;
|
||||
struct radv_shader_context *ctx = NULL;
|
||||
return container_of(abi, ctx, abi);
|
||||
}
|
||||
|
||||
|
@ -330,7 +330,7 @@ static LLVMValueRef unpack_param(struct ac_llvm_context *ctx,
|
|||
return value;
|
||||
}
|
||||
|
||||
static LLVMValueRef get_rel_patch_id(struct nir_to_llvm_context *ctx)
|
||||
static LLVMValueRef get_rel_patch_id(struct radv_shader_context *ctx)
|
||||
{
|
||||
switch (ctx->stage) {
|
||||
case MESA_SHADER_TESS_CTRL:
|
||||
|
@ -364,7 +364,7 @@ static LLVMValueRef get_rel_patch_id(struct nir_to_llvm_context *ctx)
|
|||
* All three shaders VS(LS), TCS, TES share the same LDS space.
|
||||
*/
|
||||
static LLVMValueRef
|
||||
get_tcs_in_patch_stride(struct nir_to_llvm_context *ctx)
|
||||
get_tcs_in_patch_stride(struct radv_shader_context *ctx)
|
||||
{
|
||||
if (ctx->stage == MESA_SHADER_VERTEX)
|
||||
return unpack_param(&ctx->ac, ctx->ls_out_layout, 0, 13);
|
||||
|
@ -377,13 +377,13 @@ get_tcs_in_patch_stride(struct nir_to_llvm_context *ctx)
|
|||
}
|
||||
|
||||
static LLVMValueRef
|
||||
get_tcs_out_patch_stride(struct nir_to_llvm_context *ctx)
|
||||
get_tcs_out_patch_stride(struct radv_shader_context *ctx)
|
||||
{
|
||||
return unpack_param(&ctx->ac, ctx->tcs_out_layout, 0, 13);
|
||||
}
|
||||
|
||||
static LLVMValueRef
|
||||
get_tcs_out_patch0_offset(struct nir_to_llvm_context *ctx)
|
||||
get_tcs_out_patch0_offset(struct radv_shader_context *ctx)
|
||||
{
|
||||
return LLVMBuildMul(ctx->ac.builder,
|
||||
unpack_param(&ctx->ac, ctx->tcs_out_offsets, 0, 16),
|
||||
|
@ -391,7 +391,7 @@ get_tcs_out_patch0_offset(struct nir_to_llvm_context *ctx)
|
|||
}
|
||||
|
||||
static LLVMValueRef
|
||||
get_tcs_out_patch0_patch_data_offset(struct nir_to_llvm_context *ctx)
|
||||
get_tcs_out_patch0_patch_data_offset(struct radv_shader_context *ctx)
|
||||
{
|
||||
return LLVMBuildMul(ctx->ac.builder,
|
||||
unpack_param(&ctx->ac, ctx->tcs_out_offsets, 16, 16),
|
||||
|
@ -399,7 +399,7 @@ get_tcs_out_patch0_patch_data_offset(struct nir_to_llvm_context *ctx)
|
|||
}
|
||||
|
||||
static LLVMValueRef
|
||||
get_tcs_in_current_patch_offset(struct nir_to_llvm_context *ctx)
|
||||
get_tcs_in_current_patch_offset(struct radv_shader_context *ctx)
|
||||
{
|
||||
LLVMValueRef patch_stride = get_tcs_in_patch_stride(ctx);
|
||||
LLVMValueRef rel_patch_id = get_rel_patch_id(ctx);
|
||||
|
@ -408,7 +408,7 @@ get_tcs_in_current_patch_offset(struct nir_to_llvm_context *ctx)
|
|||
}
|
||||
|
||||
static LLVMValueRef
|
||||
get_tcs_out_current_patch_offset(struct nir_to_llvm_context *ctx)
|
||||
get_tcs_out_current_patch_offset(struct radv_shader_context *ctx)
|
||||
{
|
||||
LLVMValueRef patch0_offset = get_tcs_out_patch0_offset(ctx);
|
||||
LLVMValueRef patch_stride = get_tcs_out_patch_stride(ctx);
|
||||
|
@ -421,7 +421,7 @@ get_tcs_out_current_patch_offset(struct nir_to_llvm_context *ctx)
|
|||
}
|
||||
|
||||
static LLVMValueRef
|
||||
get_tcs_out_current_patch_data_offset(struct nir_to_llvm_context *ctx)
|
||||
get_tcs_out_current_patch_data_offset(struct radv_shader_context *ctx)
|
||||
{
|
||||
LLVMValueRef patch0_patch_data_offset =
|
||||
get_tcs_out_patch0_patch_data_offset(ctx);
|
||||
|
@ -446,7 +446,7 @@ set_loc(struct ac_userdata_info *ud_info, uint8_t *sgpr_idx, uint8_t num_sgprs,
|
|||
}
|
||||
|
||||
static void
|
||||
set_loc_shader(struct nir_to_llvm_context *ctx, int idx, uint8_t *sgpr_idx,
|
||||
set_loc_shader(struct radv_shader_context *ctx, int idx, uint8_t *sgpr_idx,
|
||||
uint8_t num_sgprs)
|
||||
{
|
||||
struct ac_userdata_info *ud_info =
|
||||
|
@ -457,7 +457,7 @@ set_loc_shader(struct nir_to_llvm_context *ctx, int idx, uint8_t *sgpr_idx,
|
|||
}
|
||||
|
||||
static void
|
||||
set_loc_desc(struct nir_to_llvm_context *ctx, int idx, uint8_t *sgpr_idx,
|
||||
set_loc_desc(struct radv_shader_context *ctx, int idx, uint8_t *sgpr_idx,
|
||||
uint32_t indirect_offset)
|
||||
{
|
||||
struct ac_userdata_info *ud_info =
|
||||
|
@ -473,7 +473,7 @@ struct user_sgpr_info {
|
|||
bool indirect_all_descriptor_sets;
|
||||
};
|
||||
|
||||
static bool needs_view_index_sgpr(struct nir_to_llvm_context *ctx,
|
||||
static bool needs_view_index_sgpr(struct radv_shader_context *ctx,
|
||||
gl_shader_stage stage)
|
||||
{
|
||||
switch (stage) {
|
||||
|
@ -498,7 +498,7 @@ static bool needs_view_index_sgpr(struct nir_to_llvm_context *ctx,
|
|||
}
|
||||
|
||||
static uint8_t
|
||||
count_vs_user_sgprs(struct nir_to_llvm_context *ctx)
|
||||
count_vs_user_sgprs(struct radv_shader_context *ctx)
|
||||
{
|
||||
uint8_t count = 0;
|
||||
|
||||
|
@ -508,7 +508,7 @@ count_vs_user_sgprs(struct nir_to_llvm_context *ctx)
|
|||
return count;
|
||||
}
|
||||
|
||||
static void allocate_user_sgprs(struct nir_to_llvm_context *ctx,
|
||||
static void allocate_user_sgprs(struct radv_shader_context *ctx,
|
||||
gl_shader_stage stage,
|
||||
bool has_previous_stage,
|
||||
gl_shader_stage previous_stage,
|
||||
|
@ -591,7 +591,7 @@ static void allocate_user_sgprs(struct nir_to_llvm_context *ctx,
|
|||
}
|
||||
|
||||
static void
|
||||
declare_global_input_sgprs(struct nir_to_llvm_context *ctx,
|
||||
declare_global_input_sgprs(struct radv_shader_context *ctx,
|
||||
gl_shader_stage stage,
|
||||
bool has_previous_stage,
|
||||
gl_shader_stage previous_stage,
|
||||
|
@ -626,7 +626,7 @@ declare_global_input_sgprs(struct nir_to_llvm_context *ctx,
|
|||
}
|
||||
|
||||
static void
|
||||
declare_vs_specific_input_sgprs(struct nir_to_llvm_context *ctx,
|
||||
declare_vs_specific_input_sgprs(struct radv_shader_context *ctx,
|
||||
gl_shader_stage stage,
|
||||
bool has_previous_stage,
|
||||
gl_shader_stage previous_stage,
|
||||
|
@ -648,7 +648,7 @@ declare_vs_specific_input_sgprs(struct nir_to_llvm_context *ctx,
|
|||
}
|
||||
|
||||
static void
|
||||
declare_vs_input_vgprs(struct nir_to_llvm_context *ctx, struct arg_info *args)
|
||||
declare_vs_input_vgprs(struct radv_shader_context *ctx, struct arg_info *args)
|
||||
{
|
||||
add_arg(args, ARG_VGPR, ctx->ac.i32, &ctx->abi.vertex_id);
|
||||
if (!ctx->is_gs_copy_shader) {
|
||||
|
@ -664,7 +664,7 @@ declare_vs_input_vgprs(struct nir_to_llvm_context *ctx, struct arg_info *args)
|
|||
}
|
||||
|
||||
static void
|
||||
declare_tes_input_vgprs(struct nir_to_llvm_context *ctx, struct arg_info *args)
|
||||
declare_tes_input_vgprs(struct radv_shader_context *ctx, struct arg_info *args)
|
||||
{
|
||||
add_arg(args, ARG_VGPR, ctx->ac.f32, &ctx->tes_u);
|
||||
add_arg(args, ARG_VGPR, ctx->ac.f32, &ctx->tes_v);
|
||||
|
@ -673,7 +673,7 @@ declare_tes_input_vgprs(struct nir_to_llvm_context *ctx, struct arg_info *args)
|
|||
}
|
||||
|
||||
static void
|
||||
set_global_input_locs(struct nir_to_llvm_context *ctx, gl_shader_stage stage,
|
||||
set_global_input_locs(struct radv_shader_context *ctx, gl_shader_stage stage,
|
||||
bool has_previous_stage, gl_shader_stage previous_stage,
|
||||
const struct user_sgpr_info *user_sgpr_info,
|
||||
LLVMValueRef desc_sets, uint8_t *user_sgpr_idx)
|
||||
|
@ -716,7 +716,7 @@ set_global_input_locs(struct nir_to_llvm_context *ctx, gl_shader_stage stage,
|
|||
}
|
||||
|
||||
static void
|
||||
set_vs_specific_input_locs(struct nir_to_llvm_context *ctx,
|
||||
set_vs_specific_input_locs(struct radv_shader_context *ctx,
|
||||
gl_shader_stage stage, bool has_previous_stage,
|
||||
gl_shader_stage previous_stage,
|
||||
uint8_t *user_sgpr_idx)
|
||||
|
@ -738,7 +738,7 @@ set_vs_specific_input_locs(struct nir_to_llvm_context *ctx,
|
|||
}
|
||||
}
|
||||
|
||||
static void create_function(struct nir_to_llvm_context *ctx,
|
||||
static void create_function(struct radv_shader_context *ctx,
|
||||
gl_shader_stage stage,
|
||||
bool has_previous_stage,
|
||||
gl_shader_stage previous_stage)
|
||||
|
@ -2354,7 +2354,7 @@ static LLVMValueRef
|
|||
radv_load_resource(struct ac_shader_abi *abi, LLVMValueRef index,
|
||||
unsigned desc_set, unsigned binding)
|
||||
{
|
||||
struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
|
||||
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
|
||||
LLVMValueRef desc_ptr = ctx->descriptor_sets[desc_set];
|
||||
struct radv_pipeline_layout *pipeline_layout = ctx->options->layout;
|
||||
struct radv_descriptor_set_layout *layout = pipeline_layout->set[desc_set].layout;
|
||||
|
@ -2761,7 +2761,7 @@ out:
|
|||
*
|
||||
* Note that every attribute has 4 components.
|
||||
*/
|
||||
static LLVMValueRef get_tcs_tes_buffer_address(struct nir_to_llvm_context *ctx,
|
||||
static LLVMValueRef get_tcs_tes_buffer_address(struct radv_shader_context *ctx,
|
||||
LLVMValueRef vertex_index,
|
||||
LLVMValueRef param_index)
|
||||
{
|
||||
|
@ -2804,7 +2804,7 @@ static LLVMValueRef get_tcs_tes_buffer_address(struct nir_to_llvm_context *ctx,
|
|||
return base_addr;
|
||||
}
|
||||
|
||||
static LLVMValueRef get_tcs_tes_buffer_address_params(struct nir_to_llvm_context *ctx,
|
||||
static LLVMValueRef get_tcs_tes_buffer_address_params(struct radv_shader_context *ctx,
|
||||
unsigned param,
|
||||
unsigned const_index,
|
||||
bool is_compact,
|
||||
|
@ -2825,7 +2825,7 @@ static LLVMValueRef get_tcs_tes_buffer_address_params(struct nir_to_llvm_context
|
|||
}
|
||||
|
||||
static void
|
||||
mark_tess_output(struct nir_to_llvm_context *ctx,
|
||||
mark_tess_output(struct radv_shader_context *ctx,
|
||||
bool is_patch, uint32_t param)
|
||||
|
||||
{
|
||||
|
@ -2836,7 +2836,7 @@ mark_tess_output(struct nir_to_llvm_context *ctx,
|
|||
}
|
||||
|
||||
static LLVMValueRef
|
||||
get_dw_address(struct nir_to_llvm_context *ctx,
|
||||
get_dw_address(struct radv_shader_context *ctx,
|
||||
LLVMValueRef dw_addr,
|
||||
unsigned param,
|
||||
unsigned const_index,
|
||||
|
@ -2884,7 +2884,7 @@ load_tcs_varyings(struct ac_shader_abi *abi,
|
|||
bool is_compact,
|
||||
bool load_input)
|
||||
{
|
||||
struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
|
||||
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
|
||||
LLVMValueRef dw_addr, stride;
|
||||
LLVMValueRef value[4], result;
|
||||
unsigned param = shader_io_get_unique_index(location);
|
||||
|
@ -2927,7 +2927,7 @@ store_tcs_output(struct ac_shader_abi *abi,
|
|||
bool is_compact,
|
||||
unsigned writemask)
|
||||
{
|
||||
struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
|
||||
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
|
||||
LLVMValueRef dw_addr;
|
||||
LLVMValueRef stride = NULL;
|
||||
LLVMValueRef buf_addr = NULL;
|
||||
|
@ -3007,7 +3007,7 @@ load_tes_input(struct ac_shader_abi *abi,
|
|||
bool is_compact,
|
||||
bool load_input)
|
||||
{
|
||||
struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
|
||||
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
|
||||
LLVMValueRef buf_addr;
|
||||
LLVMValueRef result;
|
||||
unsigned param = shader_io_get_unique_index(location);
|
||||
|
@ -3039,7 +3039,7 @@ load_gs_input(struct ac_shader_abi *abi,
|
|||
unsigned const_index,
|
||||
LLVMTypeRef type)
|
||||
{
|
||||
struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
|
||||
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
|
||||
LLVMValueRef vtx_offset;
|
||||
unsigned param, vtx_offset_param;
|
||||
LLVMValueRef value[4], result;
|
||||
|
@ -4018,7 +4018,7 @@ static LLVMValueRef visit_var_atomic(struct ac_nir_context *ctx,
|
|||
static LLVMValueRef lookup_interp_param(struct ac_shader_abi *abi,
|
||||
enum glsl_interp_mode interp, unsigned location)
|
||||
{
|
||||
struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
|
||||
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
|
||||
|
||||
switch (interp) {
|
||||
case INTERP_MODE_FLAT:
|
||||
|
@ -4048,7 +4048,7 @@ static LLVMValueRef lookup_interp_param(struct ac_shader_abi *abi,
|
|||
static LLVMValueRef load_sample_position(struct ac_shader_abi *abi,
|
||||
LLVMValueRef sample_id)
|
||||
{
|
||||
struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
|
||||
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
|
||||
|
||||
LLVMValueRef result;
|
||||
LLVMValueRef ptr = ac_build_gep0(&ctx->ac, ctx->ring_offsets, LLVMConstInt(ctx->ac.i32, RING_PS_SAMPLE_POSITIONS, false));
|
||||
|
@ -4073,7 +4073,7 @@ static LLVMValueRef load_sample_pos(struct ac_nir_context *ctx)
|
|||
|
||||
static LLVMValueRef load_sample_mask_in(struct ac_shader_abi *abi)
|
||||
{
|
||||
struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
|
||||
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
|
||||
uint8_t log2_ps_iter_samples = ctx->shader_info->info.ps.force_persample ?
|
||||
ctx->options->key.fs.log2_num_samples :
|
||||
ctx->options->key.fs.log2_ps_iter_samples;
|
||||
|
@ -4210,7 +4210,7 @@ visit_emit_vertex(struct ac_shader_abi *abi, unsigned stream, LLVMValueRef *addr
|
|||
LLVMValueRef gs_next_vertex;
|
||||
LLVMValueRef can_emit;
|
||||
int idx;
|
||||
struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
|
||||
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
|
||||
|
||||
assert(stream == 0);
|
||||
|
||||
|
@ -4272,14 +4272,14 @@ visit_emit_vertex(struct ac_shader_abi *abi, unsigned stream, LLVMValueRef *addr
|
|||
static void
|
||||
visit_end_primitive(struct ac_shader_abi *abi, unsigned stream)
|
||||
{
|
||||
struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
|
||||
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
|
||||
ac_build_sendmsg(&ctx->ac, AC_SENDMSG_GS_OP_CUT | AC_SENDMSG_GS | (stream << 8), ctx->gs_wave_id);
|
||||
}
|
||||
|
||||
static LLVMValueRef
|
||||
load_tess_coord(struct ac_shader_abi *abi)
|
||||
{
|
||||
struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
|
||||
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
|
||||
|
||||
LLVMValueRef coord[4] = {
|
||||
ctx->tes_u,
|
||||
|
@ -4298,7 +4298,7 @@ load_tess_coord(struct ac_shader_abi *abi)
|
|||
static LLVMValueRef
|
||||
load_patch_vertices_in(struct ac_shader_abi *abi)
|
||||
{
|
||||
struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
|
||||
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
|
||||
return LLVMConstInt(ctx->ac.i32, ctx->options->key.tcs.input_vertices, false);
|
||||
}
|
||||
|
||||
|
@ -4598,7 +4598,7 @@ static void visit_intrinsic(struct ac_nir_context *ctx,
|
|||
static LLVMValueRef radv_load_ssbo(struct ac_shader_abi *abi,
|
||||
LLVMValueRef buffer_ptr, bool write)
|
||||
{
|
||||
struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
|
||||
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
|
||||
LLVMValueRef result;
|
||||
|
||||
LLVMSetMetadata(buffer_ptr, ctx->ac.uniform_md_kind, ctx->ac.empty_md);
|
||||
|
@ -4611,7 +4611,7 @@ static LLVMValueRef radv_load_ssbo(struct ac_shader_abi *abi,
|
|||
|
||||
static LLVMValueRef radv_load_ubo(struct ac_shader_abi *abi, LLVMValueRef buffer_ptr)
|
||||
{
|
||||
struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
|
||||
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
|
||||
LLVMValueRef result;
|
||||
|
||||
LLVMSetMetadata(buffer_ptr, ctx->ac.uniform_md_kind, ctx->ac.empty_md);
|
||||
|
@ -4630,7 +4630,7 @@ static LLVMValueRef radv_get_sampler_desc(struct ac_shader_abi *abi,
|
|||
enum ac_descriptor_type desc_type,
|
||||
bool image, bool write)
|
||||
{
|
||||
struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
|
||||
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
|
||||
LLVMValueRef list = ctx->descriptor_sets[descriptor_set];
|
||||
struct radv_descriptor_set_layout *layout = ctx->options->layout->set[descriptor_set].layout;
|
||||
struct radv_descriptor_set_binding_layout *binding = layout->binding + base_index;
|
||||
|
@ -5380,7 +5380,7 @@ static void visit_cf_list(struct ac_nir_context *ctx,
|
|||
}
|
||||
|
||||
static void
|
||||
handle_vs_input_decl(struct nir_to_llvm_context *ctx,
|
||||
handle_vs_input_decl(struct radv_shader_context *ctx,
|
||||
struct nir_variable *variable)
|
||||
{
|
||||
LLVMValueRef t_list_ptr = ctx->vertex_buffers;
|
||||
|
@ -5431,7 +5431,7 @@ handle_vs_input_decl(struct nir_to_llvm_context *ctx,
|
|||
}
|
||||
}
|
||||
|
||||
static void interp_fs_input(struct nir_to_llvm_context *ctx,
|
||||
static void interp_fs_input(struct radv_shader_context *ctx,
|
||||
unsigned attr,
|
||||
LLVMValueRef interp_param,
|
||||
LLVMValueRef prim_mask,
|
||||
|
@ -5483,7 +5483,7 @@ static void interp_fs_input(struct nir_to_llvm_context *ctx,
|
|||
}
|
||||
|
||||
static void
|
||||
handle_fs_input_decl(struct nir_to_llvm_context *ctx,
|
||||
handle_fs_input_decl(struct radv_shader_context *ctx,
|
||||
struct nir_variable *variable)
|
||||
{
|
||||
int idx = variable->data.location;
|
||||
|
@ -5512,14 +5512,14 @@ handle_fs_input_decl(struct nir_to_llvm_context *ctx,
|
|||
}
|
||||
|
||||
static void
|
||||
handle_vs_inputs(struct nir_to_llvm_context *ctx,
|
||||
handle_vs_inputs(struct radv_shader_context *ctx,
|
||||
struct nir_shader *nir) {
|
||||
nir_foreach_variable(variable, &nir->inputs)
|
||||
handle_vs_input_decl(ctx, variable);
|
||||
}
|
||||
|
||||
static void
|
||||
prepare_interp_optimize(struct nir_to_llvm_context *ctx,
|
||||
prepare_interp_optimize(struct radv_shader_context *ctx,
|
||||
struct nir_shader *nir)
|
||||
{
|
||||
if (!ctx->options->key.fs.multisample)
|
||||
|
@ -5546,7 +5546,7 @@ prepare_interp_optimize(struct nir_to_llvm_context *ctx,
|
|||
}
|
||||
|
||||
static void
|
||||
handle_fs_inputs(struct nir_to_llvm_context *ctx,
|
||||
handle_fs_inputs(struct radv_shader_context *ctx,
|
||||
struct nir_shader *nir)
|
||||
{
|
||||
prepare_interp_optimize(ctx, nir);
|
||||
|
@ -5634,7 +5634,7 @@ static LLVMValueRef si_build_alloca_undef(struct ac_llvm_context *ac,
|
|||
}
|
||||
|
||||
static void
|
||||
scan_shader_output_decl(struct nir_to_llvm_context *ctx,
|
||||
scan_shader_output_decl(struct radv_shader_context *ctx,
|
||||
struct nir_variable *variable,
|
||||
struct nir_shader *shader,
|
||||
gl_shader_stage stage)
|
||||
|
@ -5813,7 +5813,7 @@ setup_shared(struct ac_nir_context *ctx,
|
|||
|
||||
/* Initialize arguments for the shader export intrinsic */
|
||||
static void
|
||||
si_llvm_init_export_args(struct nir_to_llvm_context *ctx,
|
||||
si_llvm_init_export_args(struct radv_shader_context *ctx,
|
||||
LLVMValueRef *values,
|
||||
unsigned target,
|
||||
struct ac_export_args *args)
|
||||
|
@ -5937,7 +5937,7 @@ si_llvm_init_export_args(struct nir_to_llvm_context *ctx,
|
|||
}
|
||||
|
||||
static void
|
||||
radv_export_param(struct nir_to_llvm_context *ctx, unsigned index,
|
||||
radv_export_param(struct radv_shader_context *ctx, unsigned index,
|
||||
LLVMValueRef *values)
|
||||
{
|
||||
struct ac_export_args args;
|
||||
|
@ -5948,7 +5948,7 @@ radv_export_param(struct nir_to_llvm_context *ctx, unsigned index,
|
|||
}
|
||||
|
||||
static LLVMValueRef
|
||||
radv_load_output(struct nir_to_llvm_context *ctx, unsigned index, unsigned chan)
|
||||
radv_load_output(struct radv_shader_context *ctx, unsigned index, unsigned chan)
|
||||
{
|
||||
LLVMValueRef output =
|
||||
ctx->abi.outputs[radeon_llvm_reg_index_soa(index, chan)];
|
||||
|
@ -5957,7 +5957,7 @@ radv_load_output(struct nir_to_llvm_context *ctx, unsigned index, unsigned chan)
|
|||
}
|
||||
|
||||
static void
|
||||
handle_vs_outputs_post(struct nir_to_llvm_context *ctx,
|
||||
handle_vs_outputs_post(struct radv_shader_context *ctx,
|
||||
bool export_prim_id,
|
||||
struct ac_vs_output_info *outinfo)
|
||||
{
|
||||
|
@ -6127,7 +6127,7 @@ handle_vs_outputs_post(struct nir_to_llvm_context *ctx,
|
|||
}
|
||||
|
||||
static void
|
||||
handle_es_outputs_post(struct nir_to_llvm_context *ctx,
|
||||
handle_es_outputs_post(struct radv_shader_context *ctx,
|
||||
struct ac_es_output_info *outinfo)
|
||||
{
|
||||
int j;
|
||||
|
@ -6204,7 +6204,7 @@ handle_es_outputs_post(struct nir_to_llvm_context *ctx,
|
|||
}
|
||||
|
||||
static void
|
||||
handle_ls_outputs_post(struct nir_to_llvm_context *ctx)
|
||||
handle_ls_outputs_post(struct radv_shader_context *ctx)
|
||||
{
|
||||
LLVMValueRef vertex_id = ctx->rel_auto_id;
|
||||
LLVMValueRef vertex_dw_stride = unpack_param(&ctx->ac, ctx->ls_out_layout, 13, 8);
|
||||
|
@ -6237,7 +6237,7 @@ handle_ls_outputs_post(struct nir_to_llvm_context *ctx)
|
|||
|
||||
struct ac_build_if_state
|
||||
{
|
||||
struct nir_to_llvm_context *ctx;
|
||||
struct radv_shader_context *ctx;
|
||||
LLVMValueRef condition;
|
||||
LLVMBasicBlockRef entry_block;
|
||||
LLVMBasicBlockRef true_block;
|
||||
|
@ -6246,7 +6246,7 @@ struct ac_build_if_state
|
|||
};
|
||||
|
||||
static LLVMBasicBlockRef
|
||||
ac_build_insert_new_block(struct nir_to_llvm_context *ctx, const char *name)
|
||||
ac_build_insert_new_block(struct radv_shader_context *ctx, const char *name)
|
||||
{
|
||||
LLVMBasicBlockRef current_block;
|
||||
LLVMBasicBlockRef next_block;
|
||||
|
@ -6271,7 +6271,7 @@ ac_build_insert_new_block(struct nir_to_llvm_context *ctx, const char *name)
|
|||
|
||||
static void
|
||||
ac_nir_build_if(struct ac_build_if_state *ifthen,
|
||||
struct nir_to_llvm_context *ctx,
|
||||
struct radv_shader_context *ctx,
|
||||
LLVMValueRef condition)
|
||||
{
|
||||
LLVMBasicBlockRef block = LLVMGetInsertBlock(ctx->ac.builder);
|
||||
|
@ -6327,7 +6327,7 @@ ac_nir_build_endif(struct ac_build_if_state *ifthen)
|
|||
}
|
||||
|
||||
static void
|
||||
write_tess_factors(struct nir_to_llvm_context *ctx)
|
||||
write_tess_factors(struct radv_shader_context *ctx)
|
||||
{
|
||||
unsigned stride, outer_comps, inner_comps;
|
||||
struct ac_build_if_state if_ctx, inner_if_ctx;
|
||||
|
@ -6470,13 +6470,13 @@ write_tess_factors(struct nir_to_llvm_context *ctx)
|
|||
}
|
||||
|
||||
static void
|
||||
handle_tcs_outputs_post(struct nir_to_llvm_context *ctx)
|
||||
handle_tcs_outputs_post(struct radv_shader_context *ctx)
|
||||
{
|
||||
write_tess_factors(ctx);
|
||||
}
|
||||
|
||||
static bool
|
||||
si_export_mrt_color(struct nir_to_llvm_context *ctx,
|
||||
si_export_mrt_color(struct radv_shader_context *ctx,
|
||||
LLVMValueRef *color, unsigned index, bool is_last,
|
||||
struct ac_export_args *args)
|
||||
{
|
||||
|
@ -6494,7 +6494,7 @@ si_export_mrt_color(struct nir_to_llvm_context *ctx,
|
|||
}
|
||||
|
||||
static void
|
||||
radv_export_mrt_z(struct nir_to_llvm_context *ctx,
|
||||
radv_export_mrt_z(struct radv_shader_context *ctx,
|
||||
LLVMValueRef depth, LLVMValueRef stencil,
|
||||
LLVMValueRef samplemask)
|
||||
{
|
||||
|
@ -6506,7 +6506,7 @@ radv_export_mrt_z(struct nir_to_llvm_context *ctx,
|
|||
}
|
||||
|
||||
static void
|
||||
handle_fs_outputs_post(struct nir_to_llvm_context *ctx)
|
||||
handle_fs_outputs_post(struct radv_shader_context *ctx)
|
||||
{
|
||||
unsigned index = 0;
|
||||
LLVMValueRef depth = NULL, stencil = NULL, samplemask = NULL;
|
||||
|
@ -6563,7 +6563,7 @@ handle_fs_outputs_post(struct nir_to_llvm_context *ctx)
|
|||
}
|
||||
|
||||
static void
|
||||
emit_gs_epilogue(struct nir_to_llvm_context *ctx)
|
||||
emit_gs_epilogue(struct radv_shader_context *ctx)
|
||||
{
|
||||
ac_build_sendmsg(&ctx->ac, AC_SENDMSG_GS_OP_NOP | AC_SENDMSG_GS_DONE, ctx->gs_wave_id);
|
||||
}
|
||||
|
@ -6572,7 +6572,7 @@ static void
|
|||
handle_shader_outputs_post(struct ac_shader_abi *abi, unsigned max_outputs,
|
||||
LLVMValueRef *addrs)
|
||||
{
|
||||
struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
|
||||
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
|
||||
|
||||
switch (ctx->stage) {
|
||||
case MESA_SHADER_VERTEX:
|
||||
|
@ -6605,7 +6605,7 @@ handle_shader_outputs_post(struct ac_shader_abi *abi, unsigned max_outputs,
|
|||
}
|
||||
}
|
||||
|
||||
static void ac_llvm_finalize_module(struct nir_to_llvm_context * ctx)
|
||||
static void ac_llvm_finalize_module(struct radv_shader_context *ctx)
|
||||
{
|
||||
LLVMPassManagerRef passmgr;
|
||||
/* Create the pass manager */
|
||||
|
@ -6632,7 +6632,7 @@ static void ac_llvm_finalize_module(struct nir_to_llvm_context * ctx)
|
|||
}
|
||||
|
||||
static void
|
||||
ac_nir_eliminate_const_vs_outputs(struct nir_to_llvm_context *ctx)
|
||||
ac_nir_eliminate_const_vs_outputs(struct radv_shader_context *ctx)
|
||||
{
|
||||
struct ac_vs_output_info *outinfo;
|
||||
|
||||
|
@ -6665,7 +6665,7 @@ ac_nir_eliminate_const_vs_outputs(struct nir_to_llvm_context *ctx)
|
|||
}
|
||||
|
||||
static void
|
||||
ac_setup_rings(struct nir_to_llvm_context *ctx)
|
||||
ac_setup_rings(struct radv_shader_context *ctx)
|
||||
{
|
||||
if ((ctx->stage == MESA_SHADER_VERTEX && ctx->options->key.vs.as_es) ||
|
||||
(ctx->stage == MESA_SHADER_TESS_EVAL && ctx->options->key.tes.as_es)) {
|
||||
|
@ -6717,7 +6717,7 @@ ac_nir_get_max_workgroup_size(enum chip_class chip_class,
|
|||
}
|
||||
|
||||
/* Fixup the HW not emitting the TCS regs if there are no HS threads. */
|
||||
static void ac_nir_fixup_ls_hs_input_vgprs(struct nir_to_llvm_context *ctx)
|
||||
static void ac_nir_fixup_ls_hs_input_vgprs(struct radv_shader_context *ctx)
|
||||
{
|
||||
LLVMValueRef count = ac_build_bfe(&ctx->ac, ctx->merged_wave_info,
|
||||
LLVMConstInt(ctx->ac.i32, 8, false),
|
||||
|
@ -6730,7 +6730,7 @@ static void ac_nir_fixup_ls_hs_input_vgprs(struct nir_to_llvm_context *ctx)
|
|||
ctx->abi.vertex_id = LLVMBuildSelect(ctx->ac.builder, hs_empty, ctx->abi.tcs_patch_id, ctx->abi.vertex_id, "");
|
||||
}
|
||||
|
||||
static void prepare_gs_input_vgprs(struct nir_to_llvm_context *ctx)
|
||||
static void prepare_gs_input_vgprs(struct radv_shader_context *ctx)
|
||||
{
|
||||
for(int i = 5; i >= 0; --i) {
|
||||
ctx->gs_vtx_offset[i] = ac_build_bfe(&ctx->ac, ctx->gs_vtx_offset[i & ~1],
|
||||
|
@ -6793,7 +6793,7 @@ LLVMModuleRef ac_translate_nir_to_llvm(LLVMTargetMachineRef tm,
|
|||
struct ac_shader_variant_info *shader_info,
|
||||
const struct ac_nir_compiler_options *options)
|
||||
{
|
||||
struct nir_to_llvm_context ctx = {0};
|
||||
struct radv_shader_context ctx = {0};
|
||||
unsigned i;
|
||||
ctx.options = options;
|
||||
ctx.shader_info = shader_info;
|
||||
|
@ -7164,7 +7164,7 @@ void ac_compile_nir_shader(LLVMTargetMachineRef tm,
|
|||
}
|
||||
|
||||
static void
|
||||
ac_gs_copy_shader_emit(struct nir_to_llvm_context *ctx)
|
||||
ac_gs_copy_shader_emit(struct radv_shader_context *ctx)
|
||||
{
|
||||
LLVMValueRef vtx_offset =
|
||||
LLVMBuildMul(ctx->ac.builder, ctx->abi.vertex_id,
|
||||
|
@ -7213,7 +7213,7 @@ void ac_create_gs_copy_shader(LLVMTargetMachineRef tm,
|
|||
const struct ac_nir_compiler_options *options,
|
||||
bool dump_shader)
|
||||
{
|
||||
struct nir_to_llvm_context ctx = {0};
|
||||
struct radv_shader_context ctx = {0};
|
||||
ctx.context = LLVMContextCreate();
|
||||
ctx.options = options;
|
||||
ctx.shader_info = shader_info;
|
||||
|
|
Loading…
Reference in New Issue