iris: setup EdgeFlag Vertex Element when needed.
authorJose Maria Casanova Crespo <jmcasanova@igalia.com>
Wed, 27 Feb 2019 19:44:27 +0000 (20:44 +0100)
committerJosé Casanova Crespo <jmcasanova@igalia.com>
Wed, 6 Mar 2019 22:19:08 +0000 (22:19 +0000)
commitffa9082c406d17680c0ceeeac921ace5e793e5af
treeadada651f6b8bf310e2120c8476df958d0c81b4d
parentc4d2da1f1471a742de7156e45ca52f83c75f0ba9
iris: setup EdgeFlag Vertex Element when needed.

If Vertex Shader uses EdgeFlag the hardware request that it is setup
as the last VERTEX_ELEMENT_STATE. If SGVS are add at draw time we
need to also reconfigure the last 3DSTATE_VF_INSTANCING so its
VertexElementIndex points to the new Vertex Element that contains
the EdgeFlag.

So if draw parameters or edgeflag are not used the CSO generated at
iris_create_vertex_element is sent directly in the batches. But if
edge flag is used we adjust last VERTEX_ELEMENT_STATE and
last 3DSTATE_VF_INSTANCING using their alternative edge flag version
we generate at iris_create_vertex_element and store at the CSO.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/gallium/drivers/iris/iris_context.h
src/gallium/drivers/iris/iris_program.c
src/gallium/drivers/iris/iris_state.c