aboutsummaryrefslogtreecommitdiff
path: root/layers/shader_checker.cpp
diff options
context:
space:
mode:
authorChris Forbes <chrisf@ijw.co.nz>2015-06-04 20:27:09 +1200
committerChris Forbes <chrisf@ijw.co.nz>2015-06-05 10:17:13 +1200
commit73546643149295fb5dea8b634ed93321179eee82 (patch)
treec80a9e7d4af55288cd413d1f8ab0324b966a16b0 /layers/shader_checker.cpp
parent268185d6cc0a1ff6857a69043acb3fd97d155254 (diff)
downloadusermoji-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.cpp29
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);