[Mesa-dev] [PATCH 00/13] anv: Add support for VK_EXT_transform_feedback

Jason Ekstrand jason at jlekstrand.net
Sat Oct 13 13:09:47 UTC 2018


This series adds support for the new VK_EXT_transform_feedback extension.
As far as I know, everything works but it's still all a bit experimental as
we don't have very good tests yet.  CTS tests are in-progress and we hope
to have decent testing soon.  We likely won't be landing them in master
until we get better testing as the testing is currently really sketchy.
However, the basics do work and Nvidia HairWorks now works in Witcher 3
with DXVK.

You may be asking question, "What took you so long?" or, "Why are you doing
transform feedback?  I thought that was legacy stuff."  For those who are
interested in the history or the rational behind the lack of transform
feedback in Vulkan and it's sudden appearance, I've written a blog post
explaining it:

http://jason-blog.jlekstrand.net/2018/10/transform-feedback-is-terrible-so-why.html

For those wishing to try out the patches, or who prefer to review with a
branch, the series can be found on my personal gitlab:

https://gitlab.freedesktop.org/jekstrand/mesa/commits/wip/VK_EXT_transform_feedback

Happy reviewing and/or testing!

--Jason Ekstrand


Jason Ekstrand (11):
  vulkan: Update Vulkan XML and headers to 1.1.88
  anv: Add but do not enable VK_EXT_transform_feedback
  nir: Preserve offsets in lower_io_to_scalar_early
  nir: Add a pass for gathering transform feedback info
  anv: Add pipeline cache support for xfb_info
  anv: Implement the basic form of VK_EXT_transform_feedback
  anv: Implement vkCmdDrawIndirectByteCountEXT
  anv: Implement CmdBegin/EndQueryIndexed
  genxml: Add SO_PRIM_STORAGE_NEEDED and SO_NUM_PRIMS_WRITTEN
  anv: Implement transform feedback queries
  anv: Improve the asserts in anv_buffer_get_range

Samuel Pitoiset (2):
  nir: do not remove varyings used for transform feedback
  nir: fix lowering arrays to elements for TFB outputs

 include/vulkan/vulkan.h                       |   4 +
 include/vulkan/vulkan_core.h                  | 244 +++++++++++++++-
 include/vulkan/vulkan_fuchsia.h               |  58 ++++
 src/compiler/Makefile.sources                 |   4 +-
 src/compiler/nir/meson.build                  |   2 +
 src/compiler/nir/nir_gather_xfb_info.c        | 150 ++++++++++
 src/compiler/nir/nir_linking_helpers.c        |   3 +
 .../nir/nir_lower_io_arrays_to_elements.c     |   3 +
 src/compiler/nir/nir_lower_io_to_scalar.c     |   8 +
 src/compiler/nir/nir_xfb_info.h               |  59 ++++
 src/intel/genxml/gen10.xml                    |  32 ++
 src/intel/genxml/gen11.xml                    |  32 ++
 src/intel/genxml/gen7.xml                     |  32 ++
 src/intel/genxml/gen75.xml                    |  32 ++
 src/intel/genxml/gen8.xml                     |  32 ++
 src/intel/genxml/gen9.xml                     |  32 ++
 src/intel/vulkan/anv_blorp.c                  |   3 +-
 src/intel/vulkan/anv_cmd_buffer.c             |  29 ++
 src/intel/vulkan/anv_device.c                 |  24 ++
 src/intel/vulkan/anv_extensions.py            |   1 +
 src/intel/vulkan/anv_pipeline.c               |  12 +-
 src/intel/vulkan/anv_pipeline_cache.c         |  48 ++-
 src/intel/vulkan/anv_private.h                |  22 +-
 src/intel/vulkan/genX_cmd_buffer.c            | 275 ++++++++++++++++++
 src/intel/vulkan/genX_pipeline.c              | 123 ++++++++
 src/intel/vulkan/genX_query.c                 |  93 +++++-
 src/vulkan/registry/vk.xml                    | 253 ++++++++++++++--
 27 files changed, 1562 insertions(+), 48 deletions(-)
 create mode 100644 include/vulkan/vulkan_fuchsia.h
 create mode 100644 src/compiler/nir/nir_gather_xfb_info.c
 create mode 100644 src/compiler/nir/nir_xfb_info.h

-- 
2.19.1



More information about the mesa-dev mailing list