[Mesa-dev] [PATCH 00/11] SPIR-V More error checking/validation improvements
Jason Ekstrand
jason at jlekstrand.net
Sun Dec 17 05:46:10 UTC 2017
This series is another 11 patches in the direction of improving SPIR-V
error messages and validation. The purpose here isn't really to validate
the SPIR-V (I'm sure there will be many things we won't error on) but to
make it such that the assumptions we do make about the incoming SPIR-V and
require for correctness are well-documented and based on actual SPIR-V
constructs instead of obscure asserts deep inside spirv_to_nir.
A good example of this is the penultimate patch of this series which
reworks our error checking for decorations. The biggest potential failure
point for decorations is struct member decorations which are either not on
an OpTypeStruct or have a member literal that is out-of-bounds. By
carefully checking for all this up-front, we can allow later code to just
assume everything is sane. It's also theoretically possible to construct
(invalid) SPIR-V which has nested member decorations. This isn't allowed
by the spec but it's nicer to throw an error than to just get confused or,
even worse, crash. The final patch in the series follows this up by
replacing a bunch of vtn_asserts in various bits of decoration handling
code with regular debug-only asserts that should now be guaranteed to never
trigger.
Jason Ekstrand (11):
spirv: Add better error messages in vtn_value helpers
spirv: Make 'info' a local array spirv_info_c.py
spirv/info: Add spirv_op_to_string
spirv: Unify boolean constants and add better validation
spirv: Remove a pointless assignment in SpvOpSpecConstant
spirv: Add better validation to Op[Spec]Constant
spirv: Refactor Op[Spec]ConstantComposite and add better validation
spirv: Switch on vtn_base_type in OpComposite(Extract|Insert)
spirv: Add better type validation to OpTypeImage
spirv: Rework error checking for decorations
spirv: Rework asserts in var_decoration_cb
src/compiler/spirv/spirv_info.h | 1 +
src/compiler/spirv/spirv_info_c.py | 18 ++-
src/compiler/spirv/spirv_to_nir.c | 225 ++++++++++++++++++++-----------------
src/compiler/spirv/vtn_private.h | 26 +++--
src/compiler/spirv/vtn_variables.c | 15 +--
5 files changed, 163 insertions(+), 122 deletions(-)
--
2.5.0.400.gff86faf
More information about the mesa-dev
mailing list