layers: MR243: Add param checker code generation

Generate param checker code to verify that required pointer/array
parameters are not NULL and that structures with sType fields
have the correct VkStructureType value.  The checks are generated
from the Vulkan XML API registry based on the optional parameter
tag and sType comments.
diff --git a/genvk.py b/genvk.py
index 986eb06..7831f40 100755
--- a/genvk.py
+++ b/genvk.py
@@ -24,6 +24,7 @@
 import sys, time, pdb, string, cProfile
 from reg import *
 from generator import write, CGeneratorOptions, COutputGenerator, DocGeneratorOptions, DocOutputGenerator, PyOutputGenerator, ValidityOutputGenerator, HostSynchronizationOutputGenerator, ThreadGeneratorOptions, ThreadOutputGenerator
+from generator import ParamCheckerGeneratorOptions, ParamCheckerOutputGenerator
 
 # debug - start header generation in debugger
 # dump - dump registry after loading
@@ -270,6 +271,27 @@
         apientryp         = 'VKAPI_PTR *',
         alignFuncParam    = 48)
     ],
+    [ ParamCheckerOutputGenerator,
+      ParamCheckerGeneratorOptions(
+        filename          = 'param_check.h',
+        apiname           = 'vulkan',
+        profile           = None,
+        versions          = allVersions,
+        emitversions      = allVersions,
+        defaultExtensions = 'vulkan',
+        addExtensions     = None,
+        removeExtensions  = None,
+        prefixText        = prefixStrings + vkPrefixStrings,
+        genFuncPointers   = True,
+        protectFile       = protectFile,
+        protectFeature    = False,
+        protectProto      = None,
+        protectProtoStr   = 'VK_NO_PROTOTYPES',
+        apicall           = 'VKAPI_ATTR ',
+        apientry          = 'VKAPI_CALL ',
+        apientryp         = 'VKAPI_PTR *',
+        alignFuncParam    = 48)
+    ],
     None
 ]