summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2018-02-09 13:54:20 +0100
committerSamuel Pitoiset <[email protected]>2018-02-12 11:54:07 +0100
commit0efbede949bc08303331bc8a7843c83cdabd166d (patch)
treebd9e89f954739f3aba657683cf5da276198c600e
parent460d3ce7264f0da6db537fe8f99f6872d33ed269 (diff)
ac: move push_constants to the ABI
Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]>
-rw-r--r--src/amd/common/ac_nir_to_llvm.c7
-rw-r--r--src/amd/common/ac_shader_abi.h2
2 files changed, 5 insertions, 4 deletions
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 9d149b49eab..c0b873498d2 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -85,7 +85,6 @@ struct nir_to_llvm_context {
LLVMValueRef descriptor_sets[AC_UD_MAX_SETS];
LLVMValueRef ring_offsets;
- LLVMValueRef push_constants;
LLVMValueRef view_index;
LLVMValueRef vertex_buffers;
@@ -633,7 +632,7 @@ declare_global_input_sgprs(struct nir_to_llvm_context *ctx,
if (ctx->shader_info->info.loads_push_constants) {
/* 1 for push constants and dynamic descriptors */
- add_array_arg(args, type, &ctx->push_constants);
+ add_array_arg(args, type, &ctx->abi.push_constants);
}
}
@@ -2367,7 +2366,7 @@ static LLVMValueRef visit_vulkan_resource_index(struct nir_to_llvm_context *ctx,
layout->binding[binding].type == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC) {
unsigned idx = pipeline_layout->set[desc_set].dynamic_offset_start +
layout->binding[binding].dynamic_offset_offset;
- desc_ptr = ctx->push_constants;
+ desc_ptr = ctx->abi.push_constants;
base_offset = pipeline_layout->push_constant_size + 16 * idx;
stride = LLVMConstInt(ctx->ac.i32, 16, false);
} else
@@ -2403,7 +2402,7 @@ static LLVMValueRef visit_load_push_constant(struct nir_to_llvm_context *ctx,
addr = LLVMConstInt(ctx->ac.i32, nir_intrinsic_base(instr), 0);
addr = LLVMBuildAdd(ctx->builder, addr, get_src(ctx->nir, instr->src[0]), "");
- ptr = ac_build_gep0(&ctx->ac, ctx->push_constants, addr);
+ ptr = ac_build_gep0(&ctx->ac, ctx->abi.push_constants, addr);
ptr = cast_ptr(ctx, ptr, get_def_type(ctx->nir, &instr->dest.ssa));
return LLVMBuildLoad(ctx->builder, ptr, "");
diff --git a/src/amd/common/ac_shader_abi.h b/src/amd/common/ac_shader_abi.h
index 5d525849966..02b3cb9e067 100644
--- a/src/amd/common/ac_shader_abi.h
+++ b/src/amd/common/ac_shader_abi.h
@@ -60,6 +60,8 @@ struct ac_shader_abi {
LLVMValueRef workgroup_ids[3];
LLVMValueRef tg_size;
+ LLVMValueRef push_constants; /* Vulkan only */
+
/* For VS and PS: pre-loaded shader inputs.
*
* Currently only used for NIR shaders; indexed by variables'