Mesa (master): ac/nir: Support vulkan_resource_reindex.

Bas Nieuwenhuizen bnieuwenhuizen at kemper.freedesktop.org
Mon Dec 11 23:19:46 UTC 2017


Module: Mesa
Branch: master
Commit: 3342a432fa1452459ac4b6a0b20e634437791cee
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3342a432fa1452459ac4b6a0b20e634437791cee

Author: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Date:   Sun Dec 10 23:31:45 2017 +0100

ac/nir: Support vulkan_resource_reindex.

Fixes: 93b4cb61eb2 "spirv: Allow OpPtrAccessChain for block indices"
Reviewed-by: Dave Airlie <airlied at redhat.com>

---

 src/amd/common/ac_nir_to_llvm.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 2016a5d067..3d26dd3752 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -2230,6 +2230,17 @@ static LLVMValueRef visit_vulkan_resource_index(struct nir_to_llvm_context *ctx,
 	return desc_ptr;
 }
 
+static LLVMValueRef visit_vulkan_resource_reindex(struct nir_to_llvm_context *ctx,
+                                                  nir_intrinsic_instr *instr)
+{
+	LLVMValueRef ptr = get_src(ctx->nir, instr->src[0]);
+	LLVMValueRef index = get_src(ctx->nir, instr->src[1]);
+
+	LLVMValueRef result = LLVMBuildGEP(ctx->builder, ptr, &index, 1, "");
+	LLVMSetMetadata(result, ctx->ac.uniform_md_kind, ctx->ac.empty_md);
+	return result;
+}
+
 static LLVMValueRef visit_load_push_constant(struct nir_to_llvm_context *ctx,
                                              nir_intrinsic_instr *instr)
 {
@@ -4123,6 +4134,9 @@ static void visit_intrinsic(struct ac_nir_context *ctx,
 	case nir_intrinsic_vulkan_resource_index:
 		result = visit_vulkan_resource_index(ctx->nctx, instr);
 		break;
+	case nir_intrinsic_vulkan_resource_reindex:
+		result = visit_vulkan_resource_reindex(ctx->nctx, instr);
+		break;
 	case nir_intrinsic_store_ssbo:
 		visit_store_ssbo(ctx, instr);
 		break;




More information about the mesa-commit mailing list