diff options
| author | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-09-04 15:03:52 -0600 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-09-10 10:40:37 -0600 |
| commit | 9f8fe5be96c81857bab4ec1d910b2914dfa564ce (patch) | |
| tree | 5e65c39717b689097d9da77d67933cb342b5dde0 | |
| parent | ab32819639c274019fd17736f8341cc04a5e6d7b (diff) | |
| download | usermoji-9f8fe5be96c81857bab4ec1d910b2914dfa564ce.tar.xz | |
draw_state: Implement bailout case for one test
Proof out the bailout case. Fill in others in following
commit(s)
| -rw-r--r-- | layers/draw_state.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index 0c459ea8..d660e407 100644 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -2028,28 +2028,32 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateCommandBuffer(VkDevice device, const VkCm VK_LAYER_EXPORT VkResult VKAPI vkBeginCommandBuffer(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo) { + VkBool32 bail = false; // Validate command buffer level GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer); if (pCB) { if (pCB->level == VK_CMD_BUFFER_LEVEL_PRIMARY) { if (pBeginInfo->renderPass.handle || pBeginInfo->framebuffer.handle) { // These should be NULL for a Primary CB - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_COMMAND_BUFFER, 0, 0, DRAWSTATE_BEGIN_CB_INVALID_STATE, "DS", + bail = log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_COMMAND_BUFFER, 0, 0, DRAWSTATE_BEGIN_CB_INVALID_STATE, "DS", "vkCreateCommandBuffer(): Primary Command Buffer (%p) may not specify framebuffer or renderpass parameters", (void*)cmdBuffer); } } else { if (!pBeginInfo->renderPass.handle || !pBeginInfo->framebuffer.handle) { // These should NOT be null for an Secondary CB - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_COMMAND_BUFFER, 0, 0, DRAWSTATE_BEGIN_CB_INVALID_STATE, "DS", + bail = log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_COMMAND_BUFFER, 0, 0, DRAWSTATE_BEGIN_CB_INVALID_STATE, "DS", "vkCreateCommandBuffer(): Secondary Command Buffers (%p) must specify framebuffer and renderpass parameters", (void*)cmdBuffer); } } pCB->beginInfo = *pBeginInfo; } else { // TODO : Need to pass cmdBuffer as objType here - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_COMMAND_BUFFER, 0, 0, DRAWSTATE_INVALID_CMD_BUFFER, "DS", + bail = log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_COMMAND_BUFFER, 0, 0, DRAWSTATE_INVALID_CMD_BUFFER, "DS", "In vkBeginCommandBuffer() and unable to find CmdBuffer Node for CB %p!", (void*)cmdBuffer); } + if (bail) { + return VK_ERROR_UNKNOWN; + } VkResult result = get_dispatch_table(draw_state_device_table_map, cmdBuffer)->BeginCommandBuffer(cmdBuffer, pBeginInfo); if (VK_SUCCESS == result) { if (CB_NEW != pCB->state) |
