[Mesa-dev] [PATCH] i965: Fix gl_VertexID when there are no other vertex inputs.

Kenneth Graunke kenneth at whitecape.org
Mon Dec 17 10:51:58 PST 2012


On 12/17/2012 10:03 AM, Paul Berry wrote:
> brw_emit_vertices contains special case logic to handle the case where
> a vertex shader doesn't read any inputs.  This special case logic was
> incorrectly activating in the case were the only vertex input is
> gl_VertexID.  As a result, if a shader used gl_VertexID but used no
> other inputs, then all vertices got a gl_VertexID of zero.
>
> Fixes oglconform test "ubo-usage advanced.transform_feedback".
> ---
>   src/mesa/drivers/dri/i965/brw_draw_upload.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c
> index b6ce0bd..515a7a8 100644
> --- a/src/mesa/drivers/dri/i965/brw_draw_upload.c
> +++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c
> @@ -571,6 +571,8 @@ static void brw_emit_vertices(struct brw_context *brw)
>
>      brw_emit_query_begin(brw);
>
> +   nr_elements = brw->vb.nr_enabled + brw->vs.prog_data->uses_vertexid;
> +
>      /* If the VS doesn't read any inputs (calculating vertex position from
>       * a state variable for some reason, for example), emit a single pad
>       * VERTEX_ELEMENT struct and bail.
> @@ -578,7 +580,7 @@ static void brw_emit_vertices(struct brw_context *brw)
>       * The stale VB state stays in place, but they don't do anything unless
>       * a VE loads from them.
>       */
> -   if (brw->vb.nr_enabled == 0) {
> +   if (nr_elements == 0) {
>         BEGIN_BATCH(3);
>         OUT_BATCH((_3DSTATE_VERTEX_ELEMENTS << 16) | 1);
>         if (intel->gen >= 6) {
> @@ -642,8 +644,6 @@ static void brw_emit_vertices(struct brw_context *brw)
>         ADVANCE_BATCH();
>      }
>
> -   nr_elements = brw->vb.nr_enabled + brw->vs.prog_data->uses_vertexid;
> -
>      /* The hardware allows one more VERTEX_ELEMENTS than VERTEX_BUFFERS, presumably
>       * for VertexID/InstanceID.
>       */

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>



More information about the mesa-dev mailing list