summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2020-01-23 17:17:21 +1000
committerMarge Bot <eric+marge@anholt.net>2020-02-07 00:54:42 +0000
commit7e6690b1a62ff3b8e2576bd35d5f9bc530464032 (patch)
tree6b3ef65ab85466859872a631b10c4c2187e717f9 /src
parent72154c9075269d2022ede04f233a08bb9751f104 (diff)
draw: don't emit vertex to streams with no outputs
Reviewed-by: Roland Scheidegger <sroland@vmware.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3530>
Diffstat (limited to 'src')
-rw-r--r--src/gallium/auxiliary/draw/draw_llvm.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c
index 0960124bafe..0701082850f 100644
--- a/src/gallium/auxiliary/draw/draw_llvm.c
+++ b/src/gallium/auxiliary/draw/draw_llvm.c
@@ -1557,12 +1557,17 @@ draw_gs_llvm_emit_vertex(const struct lp_build_gs_iface *gs_base,
indices[i] = LLVMBuildAdd(builder, indices[i], currently_emitted, "");
}
+ LLVMValueRef stream_idx = LLVMBuildExtractElement(builder, stream_id, lp_build_const_int32(gallivm, 0), "");
+ LLVMValueRef cnd = LLVMBuildICmp(builder, LLVMIntULT, stream_idx, lp_build_const_int32(gallivm, variant->shader->base.num_vertex_streams), "");
+ struct lp_build_if_state if_ctx;
+ lp_build_if(&if_ctx, gallivm, cnd);
io = lp_build_pointer_get(builder, io, LLVMBuildExtractElement(builder, stream_id, lp_build_const_int32(gallivm, 0), ""));
convert_to_aos(gallivm, io, indices,
outputs, clipmask,
gs_info->num_outputs, gs_type,
FALSE);
+ lp_build_endif(&if_ctx);
}
static void