From: Paul Cercueil Date: Tue, 19 Nov 2019 20:58:17 +0000 (+0100) Subject: u_vbuf: Mark vbufs incompatible if more were requested than HW supports X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;ds=sidebyside;h=88d041a6b9958f893312bfd159372c4b4559652a;p=mesa.git u_vbuf: Mark vbufs incompatible if more were requested than HW supports More vertex buffers are used than the hardware supports. In principle, we only need to make sure that less vertex buffers are used, and mark some of the latter vertex buffers as incompatible. For now, mark all vertex buffers as incompatible. Signed-off-by: Paul Cercueil Reviewed-by: Marek Olšák Part-of: --- diff --git a/src/gallium/auxiliary/util/u_vbuf.c b/src/gallium/auxiliary/util/u_vbuf.c index e69e9fd20a0..67c82a56ecd 100644 --- a/src/gallium/auxiliary/util/u_vbuf.c +++ b/src/gallium/auxiliary/util/u_vbuf.c @@ -788,6 +788,17 @@ u_vbuf_create_vertex_elements(struct u_vbuf *mgr, unsigned count, } } + if (used_buffers & ~mgr->allowed_vb_mask) { + /* More vertex buffers are used than the hardware supports. In + * principle, we only need to make sure that less vertex buffers are + * used, and mark some of the latter vertex buffers as incompatible. + * For now, mark all vertex buffers as incompatible. + */ + ve->incompatible_vb_mask_any = used_buffers; + ve->compatible_vb_mask_any = 0; + ve->incompatible_elem_mask = u_bit_consecutive(0, count); + } + ve->used_vb_mask = used_buffers; ve->compatible_vb_mask_all = ~ve->incompatible_vb_mask_any & used_buffers; ve->incompatible_vb_mask_all = ~ve->compatible_vb_mask_any & used_buffers;