diff options
author | Paul Berry <[email protected]> | 2012-12-17 09:55:48 -0800 |
---|---|---|
committer | Paul Berry <[email protected]> | 2012-12-18 09:02:53 -0800 |
commit | 1b37fc40fc1d443e7ab9f930f78af9a32525698a (patch) | |
tree | bac86839dc84ed051f7081e9bad0b2ce09828522 /src | |
parent | 5b7099c74d7774dc59895536bad53bd1196e398c (diff) |
i965: Fix gl_VertexID when there are no other vertex inputs.
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".
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_draw_upload.c | 6 |
1 files 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 b6ce0bd13a9..515a7a8a50c 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. */ |