diff options
| author | Jeremy Hayes <jeremy@lunarg.com> | 2016-03-01 17:51:54 -0700 |
|---|---|---|
| committer | Jeremy Hayes <jeremy@lunarg.com> | 2016-03-01 17:51:54 -0700 |
| commit | 375cbe94b296080f4eeba6774256ac6465f48ade (patch) | |
| tree | d9a1c6ed048ad5cf5d67d74fac6959783d01c448 /layers/param_checker.cpp | |
| parent | ffcd3cff874e42ce36db0440e56514d5fdf0fa91 (diff) | |
| download | usermoji-375cbe94b296080f4eeba6774256ac6465f48ade.tar.xz | |
layers: gllavl#78 validate base pipeline
Change-Id: I08313295ac545652aca2060744b55274ed3cd4ca
Diffstat (limited to 'layers/param_checker.cpp')
| -rw-r--r-- | layers/param_checker.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp index 114c7145..fcbc8f13 100644 --- a/layers/param_checker.cpp +++ b/layers/param_checker.cpp @@ -4314,6 +4314,32 @@ bool PreCreateGraphicsPipelines( "vkCreateGraphicsPipelines parameter, VkStructureType pCreateInfos->sType, is an invalid enumerator"); return false; } + + if(pCreateInfos->flags | VK_PIPELINE_CREATE_DERIVATIVE_BIT) + { + if(pCreateInfos->basePipelineIndex != -1) + { + if(pCreateInfos->basePipelineHandle != VK_NULL_HANDLE) + { + log_msg(mdd(device), VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, 1, "PARAMCHECK", + "vkCreateGraphicsPipelines parameter, pCreateInfos->basePipelineHandle, must be VK_NULL_HANDLE if pCreateInfos->flags " + "contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT flag and pCreateInfos->basePipelineIndex is not -1"); + return false; + } + } + + if(pCreateInfos->basePipelineHandle != VK_NULL_HANDLE) + { + if(pCreateInfos->basePipelineIndex != -1) + { + log_msg(mdd(device), VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, 1, "PARAMCHECK", + "vkCreateGraphicsPipelines parameter, pCreateInfos->basePipelineIndex, must be -1 if pCreateInfos->flags " + "contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT flag and pCreateInfos->basePipelineHandle is not VK_NULL_HANDLE"); + return false; + } + } + } + if(pCreateInfos->pStages != nullptr) { if(pCreateInfos->pStages->sType != VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO) |
