[Mesa-dev] [PATCH 3/4] st/mesa: ignore primitive restart if FixedIndex is enabled in DrawArraysIndirect
Ilia Mirkin
imirkin at alum.mit.edu
Sun Jan 4 13:54:01 PST 2015
FWIW the piglit you posted recently
(arb_draw_indirect-draw-arrays-prim-restart) works with nvc0 with
upstream mesa as-is. (But fails on llvmpipe/softpipe.)
On Sun, Jan 4, 2015 at 4:44 PM, Marek Olšák <maraeo at gmail.com> wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> From GL 4.4 Core profile:
>
> If both PRIMITIVE_RESTART and PRIMITIVE_RESTART_FIXED_INDEX are
> enabled, the index value determined by PRIMITIVE_RESTART_FIXED_INDEX is
> used. If PRIMITIVE_RESTART_FIXED_INDEX is enabled, primitive restart is not
> performed for array elements transferred by any drawing command not taking a
> type parameter, including all of the *Draw* commands other than *DrawEle-
> ments*.
>
> If only I had a driver where primitive restart works with DrawArraysIndirect.
> I can't test this, sorry.
> ---
> src/mesa/state_tracker/st_draw.c | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c
> index b6ccdd7..9e5a5a9 100644
> --- a/src/mesa/state_tracker/st_draw.c
> +++ b/src/mesa/state_tracker/st_draw.c
> @@ -248,9 +248,15 @@ st_draw_vbo(struct gl_context *ctx,
> if (indirect) {
> info.indirect = st_buffer_object(indirect)->buffer;
>
> - /* Primitive restart is not handled by the VBO module in this case. */
> - info.primitive_restart = ctx->Array._PrimitiveRestart;
> - info.restart_index = ctx->Array.RestartIndex;
> + /* Primitive restart for DrawArrays is not handled by the VBO module
> + * in this case.
> + *
> + * If PrimitiveRestartFixedIndex is enabled, primitive_restart must
> + * be disabled for DrawArrays. DrawElements is handled above. */
> + if (!ib && !ctx->Array.PrimitiveRestartFixedIndex) {
> + info.primitive_restart = ctx->Array.PrimitiveRestart;
> + info.restart_index = ctx->Array.RestartIndex;
> + }
> }
>
> /* do actual drawing */
> --
> 2.1.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list