turnip: Emit geometry shader obj and related consts
authorBrian Ho <brian@brkho.com>
Wed, 1 Apr 2020 18:09:48 +0000 (11:09 -0700)
committerMarge Bot <eric+marge@anholt.net>
Tue, 7 Apr 2020 14:13:20 +0000 (14:13 +0000)
commit6eabd6bd51406f729689cce6b3b021c2731c69f9
treef555b6e7c493cb8efe0faf4db9c242e743e689e9
parent1af71bee734da7d87e0ef1b71a64e12fa81ed92e
turnip: Emit geometry shader obj and related consts

Like with other shader types, we need to emit the geometry shader
object and the consts it uses. In addition, we need to emit
additional geometry-specific consts that link primitive/vertex stride
between the vs and gs. In conjunction with the gsheader, these are
used by the vs to determine where to stlw outputs and used by the gs
to determine where to ldlw those outputs from.

FD emits these consts in the draw call because in GL, you can mix
and match shaders in different programs. In Vulkan, however, we
compile and link the shaders at pipeline creation, so we can emit
these in the pipeline IB instead.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4436>
src/freedreno/vulkan/tu_pipeline.c