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/layers/param_checker.cpp b/layers/param_checker.cpp
index 22ca3e0..8fa33ce 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -4538,6 +4538,90 @@
return result;
}
+void PreCreateShaderModule(
+ VkDevice device,
+ const VkShaderModuleCreateInfo* pCreateInfo)
+{
+ if(device == nullptr)
+ {
+ log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
+ "vkCreateShaderModule parameter, VkDevice device, is null pointer");
+ return;
+ }
+
+ if(pCreateInfo == nullptr)
+ {
+ log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
+ "vkCreateShaderModule parameter, const VkShaderCreateInfo* pCreateInfo, is null pointer");
+ return;
+ }
+ if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
+ pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
+ {
+ log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
+ "vkCreateShaderModule parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
+ return;
+ }
+ if(pCreateInfo->pCode == nullptr)
+ {
+ log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
+ "vkCreateShaderModule parameter, const void* pCreateInfo->pCode, is null pointer");
+ return;
+ }
+ if(pCreateInfo->codeSize == 0)
+ {
+ log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
+ "vkCreateShaderModule parameter, size_t pCreateInfo->codeSize, is zero");
+ return;
+ }
+}
+
+void PostCreateShaderModule(
+ VkDevice device,
+ VkShaderModule* pShaderModule,
+ VkResult result)
+{
+ if(device == nullptr)
+ {
+ log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
+ "vkCreateShaderModule parameter, VkDevice device, is null pointer");
+ return;
+ }
+
+ if(pShaderModule == nullptr)
+ {
+ log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
+ "vkCreateShaderModule parameter, VkShader* pShader, is null pointer");
+ return;
+ }
+ if((*pShaderModule) == nullptr)
+ {
+ log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
+ "vkCreateShaderModule parameter, VkShader* pShader, is null pointer");
+ return;
+ }
+
+ if(result != VK_SUCCESS)
+ {
+ std::string reason = "vkCreateShaderModule parameter, VkResult result, is " + EnumeratorString(result);
+ log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
+ return;
+ }
+}
+
+VK_LAYER_EXPORT VkResult VKAPI vkCreateShaderModule(
+ VkDevice device,
+ const VkShaderModuleCreateInfo* pCreateInfo,
+ VkShaderModule* pShaderModule)
+{
+ PreCreateShaderModule(device, pCreateInfo);
+ VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateShaderModule(device, pCreateInfo, pShaderModule);
+
+ PostCreateShaderModule(device, pShaderModule, result);
+
+ return result;
+}
+
void PreCreateShader(
VkDevice device,
const VkShaderCreateInfo* pCreateInfo)
@@ -4568,18 +4652,12 @@
"vkCreateShader parameter, VkShaderModule pCreateInfo->module, is null pointer");
return;
}
- if(pCreateInfo->name == nullptr)
+ if(pCreateInfo->pName == nullptr)
{
log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
"vkCreateShader parameter, const char* pCreateInfo->name, is null pointer");
return;
}
- if(pCreateInfo->pCode == nullptr)
- {
- log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
- "vkCreateShader parameter, const void* pCreateInfo->pCode, is null pointer");
- return;
- }
}
void PostCreateShader(