[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