radv: Use new, NIR-based I/O lowering.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9201>
This commit is contained in:
Timur Kristóf
2021-03-11 17:45:10 +01:00
committed by Marge Bot
parent 1958381c9a
commit 540168fd15
5 changed files with 112 additions and 4 deletions

View File

@@ -860,6 +860,35 @@ load_patch_vertices_in(struct ac_shader_abi *abi)
return LLVMConstInt(ctx->ac.i32, ctx->args->options->key.tcs.input_vertices, false);
}
static LLVMValueRef
load_ring_tess_factors(struct ac_shader_abi *abi)
{
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
assert(ctx->stage == MESA_SHADER_TESS_CTRL);
return ctx->hs_ring_tess_factor;
}
static LLVMValueRef
load_ring_tess_offchip(struct ac_shader_abi *abi)
{
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
assert(ctx->stage == MESA_SHADER_TESS_CTRL ||
ctx->stage == MESA_SHADER_TESS_EVAL);
return ctx->hs_ring_tess_offchip;
}
static LLVMValueRef
load_ring_esgs(struct ac_shader_abi *abi)
{
struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
assert(ctx->stage == MESA_SHADER_VERTEX ||
ctx->stage == MESA_SHADER_TESS_EVAL ||
ctx->stage == MESA_SHADER_GEOMETRY);
return ctx->esgs_ring;
}
static LLVMValueRef radv_load_base_vertex(struct ac_shader_abi *abi, bool non_indexed_is_zero)
{
@@ -3498,7 +3527,6 @@ write_tess_factors(struct radv_shader_context *ctx)
static void
handle_tcs_outputs_post(struct radv_shader_context *ctx)
{
write_tess_factors(ctx);
}
static bool
@@ -3902,6 +3930,9 @@ LLVMModuleRef ac_translate_nir_to_llvm(struct ac_llvm_compiler *ac_llvm,
ctx.abi.load_ssbo = radv_load_ssbo;
ctx.abi.load_sampler_desc = radv_get_sampler_desc;
ctx.abi.load_resource = radv_load_resource;
ctx.abi.load_ring_tess_factors = load_ring_tess_factors;
ctx.abi.load_ring_tess_offchip = load_ring_tess_offchip;
ctx.abi.load_ring_esgs = load_ring_esgs;
ctx.abi.clamp_shadow_reference = false;
ctx.abi.adjust_frag_coord_z = args->options->adjust_frag_coord_z;
ctx.abi.robust_buffer_access = args->options->robust_buffer_access;