tests: Fix tests that re-submit Cmd Buffers w/ ONE_TIME_SUBMIT flag

Added a way to pass VkCmdBufferBeginInfo through test framework.

For tests that do multiple submits, update BeginCommandBuffer() calls to not set ONE_TIME_SUBMIT flag.
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index c6a82d9..a0b867a 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -1469,7 +1469,7 @@
         pCB->submitCount++; // increment submit count
         if ((pCB->beginInfo.flags & VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT) && (pCB->submitCount > 1)) {
             log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_COMMAND_BUFFER, 0, 0, DRAWSTATE_CMD_BUFFER_SINGLE_SUBMIT_VIOLATION, "DS",
-                    "CB %#" PRIxLEAST64 " was created w/ VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT set, but has been submitted %#" PRIxLEAST64 " times.", reinterpret_cast<VkUintPtrLeast64>(pCB->cmdBuffer), pCB->submitCount);
+                    "CB %#" PRIxLEAST64 " was begun w/ VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT set, but has been submitted %#" PRIxLEAST64 " times.", reinterpret_cast<VkUintPtrLeast64>(pCB->cmdBuffer), pCB->submitCount);
         }
         if (CB_UPDATE_COMPLETE != pCB->state) {
             // Flag error for using CB w/o vkEndCommandBuffer() called
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index 87cf9ad..6ece510 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -997,7 +997,7 @@
 
     msgFlags = m_errorMonitor->GetState(&msgString);
     ASSERT_TRUE(0 != (msgFlags & VK_DBG_REPORT_ERROR_BIT)) << "Did not receive an err after re-submitting Command Buffer that was created with one-time submit flag";
-    if (!strstr(msgString.c_str(),"was created w/ VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT set, but has been submitted")) {
+    if (!strstr(msgString.c_str(),"was begun w/ VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT set, but has been submitted")) {
         FAIL() << "Error received was not 'CB (0xaddress) was created w/ VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT set...'";
     }
 }
diff --git a/tests/render_tests.cpp b/tests/render_tests.cpp
index 0a58165..e2766d0 100644
--- a/tests/render_tests.cpp
+++ b/tests/render_tests.cpp
@@ -274,9 +274,11 @@
     void VKTriangleTest(const char *vertShaderText, const char *fragShaderText, const bool rotate);
 
     VkResult BeginCommandBuffer(VkCommandBufferObj &cmdBuffer);
+    VkResult BeginCommandBuffer(VkCommandBufferObj &cmdBuffer, VkCmdBufferBeginInfo *beginInfo);
     VkResult EndCommandBuffer(VkCommandBufferObj &cmdBuffer);
     /* Convenience functions that use built-in command buffer */
     VkResult BeginCommandBuffer() { return BeginCommandBuffer(*m_cmdBuffer); }
+    VkResult BeginCommandBuffer(VkCmdBufferBeginInfo *beginInfo) { return BeginCommandBuffer(*m_cmdBuffer, beginInfo); }
     VkResult EndCommandBuffer() { return EndCommandBuffer(*m_cmdBuffer); }
     void Draw(uint32_t firstVertex, uint32_t vertexCount, uint32_t firstInstance, uint32_t instanceCount)
         { m_cmdBuffer->Draw(firstVertex, vertexCount, firstInstance, instanceCount); }
@@ -340,6 +342,23 @@
     return result;
 }
 
+VkResult VkRenderTest::BeginCommandBuffer(VkCommandBufferObj &cmdBuffer, VkCmdBufferBeginInfo *beginInfo)
+{
+    VkResult result;
+
+    result = cmdBuffer.BeginCommandBuffer(beginInfo);
+
+    /*
+     * For render test all drawing happens in a single render pass
+     * on a single command buffer.
+     */
+    if (VK_SUCCESS == result && renderPass()) {
+        cmdBuffer.BeginRenderPass(renderPassBeginInfo());
+    }
+
+    return result;
+}
+
 VkResult VkRenderTest::EndCommandBuffer(VkCommandBufferObj &cmdBuffer)
 {
     VkResult result;
@@ -486,7 +505,12 @@
     descriptorSet.AppendBuffer(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, constantBuffer);
 
     ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
-    ASSERT_VK_SUCCESS(BeginCommandBuffer());
+
+    VkCmdBufferBeginInfo cbBeginInfo;
+    memset(&cbBeginInfo, 0, sizeof(VkCmdBufferBeginInfo));
+    cbBeginInfo.sType = VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO;
+    cbBeginInfo.flags = VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT;
+    ASSERT_VK_SUCCESS(BeginCommandBuffer(&cbBeginInfo));
 
     GenericDrawPreparation(pipelineobj, descriptorSet);
 #ifdef DUMP_STATE_DOT
@@ -1401,7 +1425,12 @@
     descriptorSet.AppendBuffer(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, MVPBuffer);
 
     ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
-    ASSERT_VK_SUCCESS(BeginCommandBuffer());
+
+    VkCmdBufferBeginInfo cbBeginInfo;
+    memset(&cbBeginInfo, 0, sizeof(VkCmdBufferBeginInfo));
+    cbBeginInfo.sType = VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO;
+    cbBeginInfo.flags = VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT;
+    ASSERT_VK_SUCCESS(BeginCommandBuffer(&cbBeginInfo));
 
     GenericDrawPreparation(pipelineobj, descriptorSet);
 
@@ -2773,7 +2802,12 @@
     pipelineobj.SetDepthStencil(&ds_state);
 
     ASSERT_NO_FATAL_FAILURE(InitRenderTarget(m_depthStencil->BindInfo()));
-    ASSERT_VK_SUCCESS(BeginCommandBuffer());
+
+    VkCmdBufferBeginInfo cbBeginInfo;
+    memset(&cbBeginInfo, 0, sizeof(VkCmdBufferBeginInfo));
+    cbBeginInfo.sType = VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO;
+    cbBeginInfo.flags = VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT;
+    ASSERT_VK_SUCCESS(BeginCommandBuffer(&cbBeginInfo));
 
     GenericDrawPreparation(pipelineobj, descriptorSet);