[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