nir/spirv: add gl_spirv_validation method
authorAlejandro Piñeiro <apinheiro@igalia.com>
Thu, 18 Jan 2018 11:31:52 +0000 (12:31 +0100)
committerAlejandro Piñeiro <apinheiro@igalia.com>
Fri, 30 Mar 2018 07:14:56 +0000 (09:14 +0200)
commit9063bf7ad8a9175c4eddba5d06d887c507f6b5be
tree997c580adcf89df5cc9b593b700777e2160f5a14
parentbebe3d626e562bd2dd027f9bcd5fdeeab62997cd
nir/spirv: add gl_spirv_validation method

ARB_gl_spirv adds the ability to use SPIR-V binaries, and a new
method, glSpecializeShader. Here we add a new function to do the
validation for this function:

From OpenGL 4.6 spec, section 7.2.1"

   "Shader Specialization", error table:

    INVALID_VALUE is generated if <pEntryPoint> does not name a valid
    entry point for <shader>.

    INVALID_VALUE is generated if any element of <pConstantIndex>
    refers to a specialization constant that does not exist in the
    shader module contained in <shader>.""

v2: rebase update (spirv_to_nir options added, changes on the warning
    logging, and others)

v3: include passing options on common initialization, doesn't call
    setjmp on common_initialization

v4: (after Jason comments):
  * Rename common_initialization to vtn_builder_create
  * Move validation method and their helpers to own source file.
  * Create own handle_constant_decoration_cb instead of reuse existing one

v5: put vtn_build_create refactoring to their own patch (Jason)

v6: update after vtn_builder_create method renamed, add explanatory
    comment, tweak existing comment and commit message (Timothy)
src/compiler/Makefile.sources
src/compiler/nir/meson.build
src/compiler/spirv/gl_spirv.c [new file with mode: 0644]
src/compiler/spirv/nir_spirv.h
src/compiler/spirv/spirv_to_nir.c
src/compiler/spirv/vtn_private.h