[Mesa-dev] [PATCH v3 00/13] anv: Implement VK_KHX_multiview

Jason Ekstrand jason at jlekstrand.net
Thu Apr 27 16:31:29 UTC 2017


This is mostly a re-send of my earlier patches but there are a few changes.
I think, at this point, that I'm ready to merge it assuming Iago is ok with
the changes.  The important chages are:

 1. The lowering pass has been altered to take a view mask instead of a
    subpass.  The rest of the anv_pipeline code has also been modified to
    properly incorporate the view mask into the shader key.

 2. There have been two fixes to the code which multiplies the number of
    invocations by the number of views.  First was that I accidentally used
    AND instead of ADD.  Second was an off-by-one error when adding ALU
    operations to an MI_MATH instruction that made us stomp the MI_MATH
    instruction itself instead of starting on dword 1.

 3. I've added a trivial implementation of multiDrawIndirect.  This isn't
    really required but some of the tests erroneously required it by
    mistake.  I'm not 100% sure that I like having a software
    implementation of multiDrawIndirect but it's no worse (and probably
    slightly better) than an application fall-back would be.

Jason Ekstrand (14):
  compiler: Add a system value and varying for ViewIndex
  spirv: Bump the SPIR-V header to the latest public version
  spirv: Add support for SPV_KHR_multiview
  anv/nir: Delete the apply_dynamic_offsets prototype
  anv: Add the KHX_multiview boilerplate
  anv/pass: Store the per-subpass view mask
  anv: Move shader hashing to anv_pipeline
  anv/pipeline: Call nir_gather_info later
  anv/pipeline: Add a subpass field to anv_pipeline
  anv/pipeline: Add shader lowering for multiview
  anv/cmd_buffer: Pull indirect draw parameter loading into a helper
  anv/cmd_buffer: Emit instanced draws for multiple views
  anv: Enable VK_KHX_multiview and SPV_KHR_multiview
  anv: Trivially implement multiDrawIndirect

 src/compiler/nir/nir.c                     |   4 +
 src/compiler/nir/nir_intrinsics.h          |   1 +
 src/compiler/shader_enums.c                |   2 +
 src/compiler/shader_enums.h                |   4 +
 src/compiler/spirv/nir_spirv.h             |   1 +
 src/compiler/spirv/spirv.h                 |  34 ++++-
 src/compiler/spirv/spirv_to_nir.c          |   4 +
 src/compiler/spirv/vtn_variables.c         |   4 +
 src/intel/Makefile.sources                 |   1 +
 src/intel/vulkan/anv_device.c              |  23 ++-
 src/intel/vulkan/anv_entrypoints_gen.py    |   1 +
 src/intel/vulkan/anv_nir.h                 |   5 +-
 src/intel/vulkan/anv_nir_lower_multiview.c | 234 +++++++++++++++++++++++++++++
 src/intel/vulkan/anv_pass.c                |  19 +++
 src/intel/vulkan/anv_pipeline.c            |  83 +++++++---
 src/intel/vulkan/anv_pipeline_cache.c      |  27 ----
 src/intel/vulkan/anv_private.h             |  15 +-
 src/intel/vulkan/genX_cmd_buffer.c         | 209 ++++++++++++++++++++++----
 src/intel/vulkan/genX_pipeline.c           |   9 +-
 src/mesa/program/prog_print.c              |   2 +
 20 files changed, 588 insertions(+), 94 deletions(-)
 create mode 100644 src/intel/vulkan/anv_nir_lower_multiview.c

-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list