From: Dave Airlie Date: Thu, 23 Jan 2020 07:17:21 +0000 (+1000) Subject: draw: don't emit vertex to streams with no outputs X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7e6690b1a62ff3b8e2576bd35d5f9bc530464032;p=mesa.git draw: don't emit vertex to streams with no outputs Reviewed-by: Roland Scheidegger Part-of: --- 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