Mesa (master): radv/gfx10: use the component mask when storing/loading NGG stream outputs

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Oct 2 17:17:20 UTC 2019


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

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Tue Sep 17 10:51:46 2019 +0200

radv/gfx10: use the component mask when storing/loading NGG stream outputs

It's unnecessary to store/load more components that needed.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

---

 src/amd/vulkan/radv_nir_to_llvm.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/amd/vulkan/radv_nir_to_llvm.c b/src/amd/vulkan/radv_nir_to_llvm.c
index 8339bc02326..69a5e0bb9f9 100644
--- a/src/amd/vulkan/radv_nir_to_llvm.c
+++ b/src/amd/vulkan/radv_nir_to_llvm.c
@@ -3205,6 +3205,9 @@ static void build_streamout_vertex(struct radv_shader_context *ctx,
 		struct radv_shader_output_values out = {};
 
 		for (unsigned comp = 0; comp < 4; comp++) {
+			if (!(output->component_mask & (1 << comp)))
+				continue;
+
 			tmp = ac_build_gep0(&ctx->ac, vertexptr,
 					    LLVMConstInt(ctx->ac.i32, 4 * i + comp, false));
 			out.values[comp] = LLVMBuildLoad(builder, tmp, "");
@@ -3595,6 +3598,9 @@ handle_ngg_outputs_post_1(struct radv_shader_context *ctx)
 		unsigned loc = output->location;
 
 		for (unsigned comp = 0; comp < 4; comp++) {
+			if (!(output->component_mask & (1 << comp)))
+				continue;
+
 			tmp = ac_build_gep0(&ctx->ac, vertex_ptr,
 					    LLVMConstInt(ctx->ac.i32, 4 * i + comp, false));
 			tmp2 = LLVMBuildLoad(builder,




More information about the mesa-commit mailing list