glsl: Add a lowering pass for gl_VertexID
authorIan Romanick <ian.d.romanick@intel.com>
Thu, 19 Jun 2014 19:06:42 +0000 (12:06 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 10 Sep 2014 18:05:08 +0000 (11:05 -0700)
commitec08b5e768271aa100be87c1ca6dd2b0109049d9
treeb76c8e82a5c3fe2cc5180586b815a3bbcd218b18
parent04d3323d4b7b7cae4954d80946f0ca202770dd14
glsl: Add a lowering pass for gl_VertexID

Converts gl_VertexID to (gl_VertexIDMESA + gl_BaseVertex). gl_VertexIDMESA
is backed by SYSTEM_VALUE_VERTEX_ID_ZERO_BASE, and gl_BaseVertex is backed
by SYSTEM_VALUE_BASE_VERTEX.

v2: Put the enum in struct gl_constants and propoerly resolve the scope
in C++ code.  Fix suggested by Marek.

v3: Reabase on Matt's foreach_in_list changes (was using foreach_list).

v4 (Ken): Use a systemvalue instead of a uniform because
STATE_BASE_VERTEX has been removed.

v5: Use a boolean to select lowering, and only allow one lowering
method.  Suggested by Ken.

v6 (Ken): Replace strcmp against literal "gl_BaseVertex"/"gl_VertexID"
with SYSTEM_VALUE enum checks, for efficiency.

v7: Rebase on context constant initialization work.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
src/glsl/Makefile.sources
src/glsl/ir_optimization.h
src/glsl/linker.cpp
src/glsl/lower_vertex_id.cpp [new file with mode: 0644]
src/mesa/main/context.c
src/mesa/main/mtypes.h