bug 14014: Fill out support for VkShaderModule

Updated tests and demos to properly use VkShaderModule.
Add support to shader_checker for shader module.
Doesn't do anything with the pName parameter.
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 4ee9d1f..b0c6657 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -1028,38 +1028,51 @@
     VkResult err = VK_SUCCESS;
     std::vector<unsigned int> spv;
     VkShaderCreateInfo createInfo;
+    VkShaderModuleCreateInfo moduleCreateInfo;
+    vk_testing::ShaderModule module;
     size_t shader_len;
 
     m_stage = stage;
     m_device = device;
 
+    moduleCreateInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
+    moduleCreateInfo.pNext = NULL;
+
     createInfo.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO;
     createInfo.pNext = NULL;
 
     if (framework->m_use_glsl) {
 
         shader_len = strlen(shader_code);
-        createInfo.codeSize = 3 * sizeof(uint32_t) + shader_len + 1;
-        createInfo.pCode = malloc(createInfo.codeSize);
-        createInfo.flags = 0;
+        moduleCreateInfo.codeSize = 3 * sizeof(uint32_t) + shader_len + 1;
+        moduleCreateInfo.pCode = malloc(moduleCreateInfo.codeSize);
+        moduleCreateInfo.flags = 0;
 
         /* try version 0 first: VkShaderStage followed by GLSL */
-        ((uint32_t *) createInfo.pCode)[0] = ICD_SPV_MAGIC;
-        ((uint32_t *) createInfo.pCode)[1] = 0;
-        ((uint32_t *) createInfo.pCode)[2] = stage;
-        memcpy(((uint32_t *) createInfo.pCode + 3), shader_code, shader_len + 1);
+        ((uint32_t *) moduleCreateInfo.pCode)[0] = ICD_SPV_MAGIC;
+        ((uint32_t *) moduleCreateInfo.pCode)[1] = 0;
+        ((uint32_t *) moduleCreateInfo.pCode)[2] = stage;
+        memcpy(((uint32_t *) moduleCreateInfo.pCode + 3), shader_code, shader_len + 1);
 
     } else {
 
         // Use Reference GLSL to SPV compiler
         framework->GLSLtoSPV(stage, shader_code, spv);
-        createInfo.pCode = spv.data();
-        createInfo.codeSize = spv.size() * sizeof(unsigned int);
-        createInfo.flags = 0;
+        moduleCreateInfo.pCode = spv.data();
+        moduleCreateInfo.codeSize = spv.size() * sizeof(unsigned int);
+        moduleCreateInfo.flags = 0;
     }
 
-    err = init_try(*m_device, createInfo);
+    err = module.init_try(*m_device, moduleCreateInfo);
+    assert(VK_SUCCESS == err);
 
+    createInfo.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO;
+    createInfo.pNext = NULL;
+    createInfo.module = module.obj();
+    createInfo.pName = "main";
+    createInfo.flags = 0;
+
+    err = init_try(*m_device, createInfo);
     assert(VK_SUCCESS == err);
 }