diff options
| author | Chris Forbes <chrisf@ijw.co.nz> | 2015-06-04 20:27:09 +1200 |
|---|---|---|
| committer | Chris Forbes <chrisf@ijw.co.nz> | 2015-06-05 10:17:13 +1200 |
| commit | 73546643149295fb5dea8b634ed93321179eee82 (patch) | |
| tree | c80a9e7d4af55288cd413d1f8ab0324b966a16b0 /layers/shader_checker.cpp | |
| parent | 268185d6cc0a1ff6857a69043acb3fd97d155254 (diff) | |
| download | usermoji-73546643149295fb5dea8b634ed93321179eee82.tar.xz | |
shader_checker: Also validate vkCreateGraphicsPipelineDerivative
Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Courtney Goeltzenleuchter <courtney@lunarg.com>
Diffstat (limited to 'layers/shader_checker.cpp')
| -rw-r--r-- | layers/shader_checker.cpp | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/layers/shader_checker.cpp b/layers/shader_checker.cpp index fcad389a..defd9d5a 100644 --- a/layers/shader_checker.cpp +++ b/layers/shader_checker.cpp @@ -826,9 +826,10 @@ validate_graphics_pipeline(VkGraphicsPipelineCreateInfo const *pCreateInfo) } -VK_LAYER_EXPORT VkResult VKAPI vkCreateGraphicsPipeline(VkDevice device, - const VkGraphicsPipelineCreateInfo *pCreateInfo, - VkPipeline *pPipeline) +VK_LAYER_EXPORT VkResult VKAPI +vkCreateGraphicsPipeline(VkDevice device, + const VkGraphicsPipelineCreateInfo *pCreateInfo, + VkPipeline *pPipeline) { bool pass = validate_graphics_pipeline(pCreateInfo); @@ -845,6 +846,27 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateGraphicsPipeline(VkDevice device, } +VK_LAYER_EXPORT VkResult VKAPI +vkCreateGraphicsPipelineDerivative(VkDevice device, + const VkGraphicsPipelineCreateInfo *pCreateInfo, + VkPipeline basePipeline, + VkPipeline *pPipeline) +{ + bool pass = validate_graphics_pipeline(pCreateInfo); + + if (pass) { + /* The driver is allowed to crash if passed junk. Only actually create the + * pipeline if we didn't run into any showstoppers above. + */ + VkLayerDispatchTable *pTable = tableMap[(VkBaseLayerObject *)device]; + return pTable->CreateGraphicsPipelineDerivative(device, pCreateInfo, basePipeline, pPipeline); + } + else { + return VK_ERROR_UNKNOWN; + } +} + + VK_LAYER_EXPORT VkResult VKAPI vkDbgRegisterMsgCallback( VkInstance instance, VK_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback, @@ -918,6 +940,7 @@ VK_LAYER_EXPORT void * VKAPI vkGetProcAddr(VkPhysicalDevice gpu, const char* pNa ADD_HOOK(vkCreateDevice); ADD_HOOK(vkCreateShader); ADD_HOOK(vkCreateGraphicsPipeline); + ADD_HOOK(vkCreateGraphicsPipelineDerivative); ADD_HOOK(vkDbgRegisterMsgCallback); ADD_HOOK(vkDbgUnregisterMsgCallback); |
