zink: removed MESA_PRIM_QUADS from the supported PIPE_CAP_SUPPORTED_PRIM_MODES.

Vulkan does not support quads, removal of this type forces quads to be converted
in `primconvert_init_draw()`.

In cases where `screen->have_triangle_fans` excludes MESA_PRIM_TRIANGLE_FAN,
`u_index_generator()` is accessing a NULL entry in 'generate_quads'
for converting MESA_PRIM_TRIANGLE_FAN to MESA_PRIM_QUADS.
Which seems like an odd conversion to do (might be why it is missing).

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28259>
This commit is contained in:
duncan.hopkins 2023-11-22 08:35:32 +00:00 committed by Marge Bot
parent 7e1e0c6824
commit d644b64ff2

View file

@ -566,6 +566,8 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
}
case PIPE_CAP_SUPPORTED_PRIM_MODES: {
uint32_t modes = BITFIELD_MASK(MESA_PRIM_COUNT);
if (!screen->have_triangle_fans)
modes &= ~BITFIELD_BIT(MESA_PRIM_QUADS);
modes &= ~BITFIELD_BIT(MESA_PRIM_QUAD_STRIP);
modes &= ~BITFIELD_BIT(MESA_PRIM_POLYGON);
modes &= ~BITFIELD_BIT(MESA_PRIM_LINE_LOOP);