From 0a35dcdff977a6665e1ea0d38ab11a4fa4a46cfd Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Sun, 28 Jun 2015 13:01:17 -0600 Subject: 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. --- layers/param_checker.cpp | 92 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 85 insertions(+), 7 deletions(-) (limited to 'layers/param_checker.cpp') diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp index 22ca3e08..8fa33ceb 100644 --- a/layers/param_checker.cpp +++ b/layers/param_checker.cpp @@ -4538,6 +4538,90 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateDepthStencilView( 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 @@ void PreCreateShader( "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( -- cgit v1.2.3