nir/xfb: adding varyings on nir_xfb_info and gather_info
authorAlejandro Piñeiro <apinheiro@igalia.com>
Wed, 9 Jan 2019 17:19:45 +0000 (18:19 +0100)
committerAlejandro Piñeiro <apinheiro@igalia.com>
Fri, 8 Mar 2019 14:00:50 +0000 (15:00 +0100)
commitcf0b2ad486c954086b4aa6843fdfc20c4ed60e7d
tree8319d4e6154f0ae8d4c5ae156126cca8e361b036
parent9f68b9ac711b39d030e795820b61285d9524555a
nir/xfb: adding varyings on nir_xfb_info and gather_info

In order to be used for OpenGL (right now for ARB_gl_spirv).

This commit adds two new structures:

  * nir_xfb_varying_info: that identifies each individual varying. For
    each one, we need to know the type, buffer and xfb_offset

  * nir_xfb_buffer_info: as now for each buffer, in addition to the
    stride, we need to know how many varyings are assigned to it.

For this patch, the only case where num_outputs != num_varyings is
with the case of doubles, that for dvec3/4 could require more than one
output. There are more cases though (like aoa), that will be handled
on following patches.

v2: updated after new nir general XFB support introduced for "anv: Add
    support for VK_EXT_transform_feedback"

v3: compute num_varyings beforehand for allocating, instead of relying
    on num_outputs as approximate value (Timothy Arceri)

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/amd/vulkan/radv_shader_info.c
src/compiler/nir/nir_gather_xfb_info.c
src/compiler/nir/nir_xfb_info.h
src/intel/vulkan/genX_pipeline.c