[Mesa-dev] [PATCH 00/22] Enable Float64 capability support for Intel's Vulkan driver

Juan A. Suarez Romero jasuarez at igalia.com
Fri Nov 25 08:52:30 UTC 2016


Hello,

This patch series implements support for Float64 capability to SPIR-V to NIR
pass and adds the needed bits to enable it in Intel's Vulkan driver. Float64
capability is only enabled in Intel's generations that support
ARB_gpu_shader_fp64 and ARB_vertex_attrib_64bit (currently Broadwell and newer),
follow-up patches will be sent once ARB_gpu_shader_fp64 and
ARB_vertex_attrib_64bit support for other generations (Haswell and Ivybridge) is
in master.

We have tested these patches against Vulkan conformance test suite [0]. All the
Float64 tests pass, except the ones that also requires other unsupported
capabilities. The results we got running VulkanCTS on master with and without
these patches are:

| name        | master | patch series |
|-------------+--------+--------------|
| pass        |  76968 |        77195 |
| fail        |    100 |          100 |
| crash       |      6 |            5 |
| skip        |  45990 |        45764 |
| timeout     |      0 |            0 |
| warn        |      7 |            7 |
| incomplete  |      0 |            0 |
| dmesg-warn  |      0 |            0 |
| dmesg-fail  |      0 |            0 |
| changes     |      0 |          227 |
| fixes       |      0 |            1 |
| regressions |      0 |            0 |
| TOTAL       | 123071 |       123071 |


If you want to test these patches, you can clone our branch with the following
command:

    $ git clone -b spirv-to-nir-rc1 https://github.com/Igalia/mesa.git

Thanks,

        J.A.

[0] https://github.com/KhronosGroup/Vulkan-CTS



Juan A. Suarez Romero (2):
  anv/pipeline: get map for double input attributes
  anv/nir: add support for dvec3/4 consuming two locations

Samuel Iglesias Gonsálvez (20):
  spirv: fix typo in spec_constant_decoration_cb()
  spirv: add definition of double based data types
  spirv: add double support for loading DF constants
  spirv: add DF support to vtn_const_ssa_value()
  spirv: add DF support to SpvOp*ConstantComposite
  spirv: fix SpvOpSpecConstantOp with SpvOpVectorShuffle working with
    double-based vecs
  spirv: add double support to SpvOpCompositeExtract
  spirv: add double support to _vtn_variable_load_store
  spirv: add double support to _vtn_block_load_store()
  spirv: Enable double floating points when copying variables in
    _vtn_variable_copy()
  spirv: add support for doubles on OpComposite{Insert,Extract}
  spirv/nir: implement DF conversions
  spirv/nir: add (un)packDouble2x32() translation
  spirv: add support for doubles to OpSpecConstant
  isl: fix VA64 support for double and dvecN vertex attributes
  nir: Add flag to detect platforms with native float64 support
  spirv: Add nir_options to vtn_builder
  spirv: enable SpvCapabilityFloat64 only to supported platforms
  i965: enable nir_option's native_float64 to supported generations
  anv: enable shaderFloat64 feature

 src/amd/vulkan/radv_pipeline.c               |   6 +-
 src/compiler/nir/nir.h                       |  10 ++
 src/compiler/nir/nir_gather_info.c           |   6 +-
 src/compiler/spirv/nir_spirv.h               |   5 +-
 src/compiler/spirv/spirv_to_nir.c            | 193 ++++++++++++++++++++++-----
 src/compiler/spirv/vtn_alu.c                 |  37 +++--
 src/compiler/spirv/vtn_glsl450.c             |   2 +
 src/compiler/spirv/vtn_private.h             |   4 +-
 src/compiler/spirv/vtn_variables.c           |   3 +
 src/gallium/drivers/freedreno/ir3/ir3_nir.c  |   1 +
 src/intel/isl/isl_format.c                   |   4 +-
 src/intel/isl/isl_format_layout.csv          |   3 -
 src/intel/vulkan/anv_device.c                |   4 +-
 src/intel/vulkan/anv_formats.c               |   8 +-
 src/intel/vulkan/anv_pipeline.c              |   6 +-
 src/intel/vulkan/genX_pipeline.c             |  62 +++++----
 src/mesa/drivers/dri/i965/brw_compiler.c     |  50 +++++--
 src/mesa/drivers/dri/i965/brw_compiler.h     |   2 +-
 src/mesa/drivers/dri/i965/brw_fs_visitor.cpp |  14 +-
 src/mesa/drivers/dri/i965/brw_nir.c          |  18 ++-
 src/mesa/drivers/dri/i965/brw_vec4.cpp       |  13 +-
 src/mesa/drivers/dri/i965/intel_screen.c     |   3 +-
 22 files changed, 337 insertions(+), 117 deletions(-)

-- 
2.7.4



More information about the mesa-dev mailing list