tests: Use global command pool and buffer where possible
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index 84dc7b4..b174d84 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -140,7 +140,22 @@
VkResult EndCommandBuffer(VkCommandBufferObj &cmdBuffer);
void VKTriangleTest(const char *vertShaderText, const char *fragShaderText, BsoFailSelect failMask);
void GenericDrawPreparation(VkCommandBufferObj *cmdBuffer, VkPipelineObj &pipelineobj, VkDescriptorSetObj &descriptorSet, BsoFailSelect failMask);
+ void GenericDrawPreparation(VkPipelineObj &pipelineobj, VkDescriptorSetObj &descriptorSet, BsoFailSelect failMask)
+ { GenericDrawPreparation(m_cmdBuffer, pipelineobj, descriptorSet, failMask); }
+ /* Convenience functions that use built-in command buffer */
+ VkResult BeginCommandBuffer() { return BeginCommandBuffer(*m_cmdBuffer); }
+ 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); }
+ void DrawIndexed(uint32_t firstVertex, uint32_t vertexCount, int32_t vertexOffset, uint32_t firstInstance, uint32_t instanceCount)
+ { m_cmdBuffer->DrawIndexed(firstVertex, vertexCount, vertexOffset,firstInstance, instanceCount); }
+ void QueueCommandBuffer() { m_cmdBuffer->QueueCommandBuffer(); }
+ void QueueCommandBuffer(const VkFence& fence) { m_cmdBuffer->QueueCommandBuffer(fence); }
+ void BindVertexBuffer(VkConstantBufferObj *vertexBuffer, VkDeviceSize offset, uint32_t binding)
+ { m_cmdBuffer->BindVertexBuffer(vertexBuffer, offset, binding); }
+ void BindIndexBuffer(VkIndexBufferObj *indexBuffer, VkDeviceSize offset)
+ { m_cmdBuffer->BindIndexBuffer(indexBuffer, offset); }
protected:
ErrorMonitor *m_errorMonitor;
@@ -270,20 +285,17 @@
descriptorSet.AppendBuffer(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, constantBuffer);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
-
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet, failMask);
+ GenericDrawPreparation(pipelineobj, descriptorSet, failMask);
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
+ EndCommandBuffer();
- cmdBuffer.QueueCommandBuffer();
+ QueueCommandBuffer();
}
void VkLayerTest::GenericDrawPreparation(VkCommandBufferObj *cmdBuffer, VkPipelineObj &pipelineobj, VkDescriptorSetObj &descriptorSet, BsoFailSelect failMask)
@@ -354,21 +366,20 @@
vk_testing::Buffer buffer;
buffer.init_as_dst(*m_device, (VkDeviceSize)20, reqs);
- VkCommandBufferObj cmdBuffer(m_device);
- BeginCommandBuffer(cmdBuffer);
- cmdBuffer.FillBuffer(buffer.handle(), 0, 4, 0x11111111);
- EndCommandBuffer(cmdBuffer);
+ BeginCommandBuffer();
+ m_cmdBuffer->FillBuffer(buffer.handle(), 0, 4, 0x11111111);
+ EndCommandBuffer();
testFence.init(*m_device, fenceInfo);
// Bypass framework since it does the waits automatically
VkResult err = VK_SUCCESS;
- err = vkQueueSubmit( m_device->m_queue, 1, &cmdBuffer.handle(), testFence.handle());
+ err = vkQueueSubmit( m_device->m_queue, 1, &m_cmdBuffer->handle(), testFence.handle());
ASSERT_VK_SUCCESS( err );
m_errorMonitor->ClearState();
// Introduce failure by calling begin again before checking fence
- vkResetCommandBuffer(cmdBuffer.handle(), 0);
+ vkResetCommandBuffer(m_cmdBuffer->handle(), 0);
msgFlags = m_errorMonitor->GetState(&msgString);
ASSERT_TRUE(msgFlags & VK_DBG_REPORT_ERROR_BIT) << "Did not receive an err after calling ResetCommandBuffer on an active Command Buffer";
@@ -392,23 +403,20 @@
ASSERT_NO_FATAL_FAILURE(InitViewport());
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
-
- cmdBuffer.BeginCommandBuffer();
- cmdBuffer.ClearAllBuffers(m_clear_color, m_depth_clear_color, m_stencil_clear_color, NULL);
- cmdBuffer.EndCommandBuffer();
+ BeginCommandBuffer();
+ m_cmdBuffer->ClearAllBuffers(m_clear_color, m_depth_clear_color, m_stencil_clear_color, NULL);
+ EndCommandBuffer();
testFence.init(*m_device, fenceInfo);
// Bypass framework since it does the waits automatically
VkResult err = VK_SUCCESS;
- err = vkQueueSubmit( m_device->m_queue, 1, &cmdBuffer.handle(), testFence.handle());
+ err = vkQueueSubmit( m_device->m_queue, 1, &m_cmdBuffer->handle(), testFence.handle());
ASSERT_VK_SUCCESS( err );
m_errorMonitor->ClearState();
// Introduce failure by calling begin again before checking fence
- cmdBuffer.BeginCommandBuffer();
+ BeginCommandBuffer();
msgFlags = m_errorMonitor->GetState(&msgString);
ASSERT_TRUE(msgFlags & VK_DBG_REPORT_ERROR_BIT) << "Did not receive an err after calling BeginCommandBuffer on an active Command Buffer";
@@ -789,16 +797,13 @@
ASSERT_NO_FATAL_FAILURE(InitViewport());
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
-
- BeginCommandBuffer(cmdBuffer);
- cmdBuffer.ClearAllBuffers(m_clear_color, m_depth_clear_color, m_stencil_clear_color, NULL);
- EndCommandBuffer(cmdBuffer);
+ BeginCommandBuffer();
+ m_cmdBuffer->ClearAllBuffers(m_clear_color, m_depth_clear_color, m_stencil_clear_color, NULL);
+ EndCommandBuffer();
testFence.init(*m_device, fenceInfo);
m_errorMonitor->ClearState();
- cmdBuffer.QueueCommandBuffer(testFence.handle());
+ QueueCommandBuffer(testFence.handle());
msgFlags = m_errorMonitor->GetState(&msgString);
ASSERT_TRUE(msgFlags & VK_DBG_REPORT_ERROR_BIT) << "Did not receive an err from using a fence in SIGNALED state in call to vkQueueSubmit";
if (!strstr(msgString.c_str(),"submitted in SIGNALED state. Fences must be reset before being submitted")) {
@@ -840,7 +845,7 @@
ASSERT_NO_FATAL_FAILURE(InitState());
m_errorMonitor->ClearState();
VkCommandBufferObj cmdBuffer(m_device);
- BeginCommandBuffer(cmdBuffer);
+ BeginCommandBuffer();
const VkExtent3D e3d = {
.width = 128,
@@ -960,10 +965,9 @@
ASSERT_NO_FATAL_FAILURE(InitState());
m_errorMonitor->ClearState();
- VkCommandBufferObj cmdBuffer(m_device);
- BeginCommandBuffer(cmdBuffer);
+ BeginCommandBuffer();
VkPipeline badPipeline = (VkPipeline)0xbaadb1be;
- vkCmdBindPipeline(cmdBuffer.GetBufferHandle(), VK_PIPELINE_BIND_POINT_GRAPHICS, badPipeline);
+ vkCmdBindPipeline(m_cmdBuffer->GetBufferHandle(), VK_PIPELINE_BIND_POINT_GRAPHICS, badPipeline);
msgFlags = m_errorMonitor->GetState(&msgString);
ASSERT_TRUE(msgFlags & VK_DBG_REPORT_ERROR_BIT) << "Did not receive error after binding pipeline to CmdBuffer w/o active RenderPass";
if (!strstr(msgString.c_str(),"Incorrectly binding graphics pipeline ")) {
@@ -1014,7 +1018,7 @@
// ASSERT_NO_FATAL_FAILURE(InitState());
// m_errorMonitor->ClearState();
// VkCommandBufferObj cmdBuffer(m_device);
-// BeginCommandBuffer(cmdBuffer);
+// BeginCommandBuffer();
// VkPipeline badPipeline = (VkPipeline)0xbaadb1be;
// vkCmdBindPipeline(cmdBuffer.GetBufferHandle(), VK_PIPELINE_BIND_POINT_GRAPHICS, badPipeline);
// msgFlags = m_errorMonitor->GetState(&msgString);
@@ -1033,7 +1037,6 @@
ASSERT_NO_FATAL_FAILURE(InitState());
m_errorMonitor->ClearState();
- VkCommandBufferObj cmdBuffer(m_device);
VkDescriptorTypeCount ds_type_count = {};
ds_type_count.type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
ds_type_count.count = 1;
@@ -1120,10 +1123,10 @@
ASSERT_NO_FATAL_FAILURE(InitState());
ASSERT_NO_FATAL_FAILURE(InitViewport());
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- BeginCommandBuffer(cmdBuffer);
- vkCmdBindPipeline(cmdBuffer.GetBufferHandle(), VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline);
- vkCmdBindDescriptorSets(cmdBuffer.GetBufferHandle(), VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_layout, 0, 1, &descriptorSet, 0, NULL);
+
+ BeginCommandBuffer();
+ vkCmdBindPipeline(m_cmdBuffer->GetBufferHandle(), VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline);
+ vkCmdBindDescriptorSets(m_cmdBuffer->GetBufferHandle(), VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_layout, 0, 1, &descriptorSet, 0, NULL);
msgFlags = m_errorMonitor->GetState(&msgString);
ASSERT_TRUE(msgFlags & VK_DBG_REPORT_WARN_BIT) << "Did not warn after binding a DescriptorSet that was never updated.";
@@ -1139,7 +1142,7 @@
ASSERT_NO_FATAL_FAILURE(InitState());
m_errorMonitor->ClearState();
- VkCommandBufferObj cmdBuffer(m_device);
+ VkCommandBufferObj cmdBuffer(m_device, m_cmdPool);
// Call EndCommandBuffer() w/o calling BeginCommandBuffer()
vkEndCommandBuffer(cmdBuffer.GetBufferHandle());
msgFlags = m_errorMonitor->GetState(&msgString);
@@ -1158,7 +1161,6 @@
ASSERT_NO_FATAL_FAILURE(InitState());
m_errorMonitor->ClearState();
- VkCommandBufferObj cmdBuffer(m_device);
VkDescriptorTypeCount ds_type_count = {};
ds_type_count.type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
@@ -1251,12 +1253,10 @@
ASSERT_NO_FATAL_FAILURE(InitState());
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
m_errorMonitor->ClearState();
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- BeginCommandBuffer(cmdBuffer);
+ BeginCommandBuffer();
// Don't care about RenderPass handle b/c error should be flagged before that
- vkCmdBeginRenderPass(cmdBuffer.GetBufferHandle(), NULL, VK_RENDER_PASS_CONTENTS_INLINE);
+ vkCmdBeginRenderPass(m_cmdBuffer->GetBufferHandle(), NULL, VK_RENDER_PASS_CONTENTS_INLINE);
msgFlags = m_errorMonitor->GetState(&msgString);
ASSERT_TRUE(msgFlags & VK_DBG_REPORT_ERROR_BIT) << "Did not receive error after binding NULL RenderPass.";
@@ -1274,10 +1274,8 @@
ASSERT_NO_FATAL_FAILURE(InitState());
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
m_errorMonitor->ClearState();
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- BeginCommandBuffer(cmdBuffer);
+ BeginCommandBuffer();
// Just create a dummy Renderpass that's non-NULL so we can get to the proper error
VkRenderPassBeginInfo rp_begin = {};
rp_begin.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;
@@ -1285,7 +1283,7 @@
rp_begin.renderPass = (VkRenderPass)0xc001d00d;
rp_begin.framebuffer = 0;
- vkCmdBeginRenderPass(cmdBuffer.GetBufferHandle(), &rp_begin, VK_RENDER_PASS_CONTENTS_INLINE);
+ vkCmdBeginRenderPass(m_cmdBuffer->GetBufferHandle(), &rp_begin, VK_RENDER_PASS_CONTENTS_INLINE);
msgFlags = m_errorMonitor->GetState(&msgString);
ASSERT_TRUE(msgFlags & VK_DBG_REPORT_ERROR_BIT) << "Did not receive error after binding RenderPass w/i an active RenderPass.";
@@ -1311,7 +1309,6 @@
ASSERT_NO_FATAL_FAILURE(InitState());
m_errorMonitor->ClearState();
- VkCommandBufferObj cmdBuffer(m_device);
VkDescriptorTypeCount ds_type_count = {};
ds_type_count.type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
@@ -1398,11 +1395,11 @@
err = vkCreateGraphicsPipelines(m_device->device(), pipelineCache, 1, &gp_ci, &pipeline);
ASSERT_VK_SUCCESS(err);
- err= cmdBuffer.BeginCommandBuffer();
+ BeginCommandBuffer();
ASSERT_VK_SUCCESS(err);
- vkCmdBindPipeline(cmdBuffer.GetBufferHandle(), VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline);
+ vkCmdBindPipeline(m_cmdBuffer->GetBufferHandle(), VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline);
// Should error before calling to driver so don't care about actual data
- vkCmdBindVertexBuffers(cmdBuffer.GetBufferHandle(), 0, 1, NULL, NULL);
+ vkCmdBindVertexBuffers(m_cmdBuffer->GetBufferHandle(), 0, 1, NULL, NULL);
msgFlags = m_errorMonitor->GetState(&msgString);
ASSERT_TRUE(msgFlags & VK_DBG_REPORT_ERROR_BIT) << "Did not receive error after vkCmdBindVertexBuffers() w/o active RenderPass.";
@@ -1771,7 +1768,6 @@
ASSERT_NO_FATAL_FAILURE(InitState());
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
m_errorMonitor->ClearState();
- VkCommandBufferObj cmdBuffer(m_device);
VkDescriptorTypeCount ds_type_count = {};
ds_type_count.type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
ds_type_count.count = 1;
@@ -1863,9 +1859,8 @@
err = vkCreateGraphicsPipelines(m_device->device(), pipelineCache, 1, &gp_ci, &pipeline);
ASSERT_VK_SUCCESS(err);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- BeginCommandBuffer(cmdBuffer);
- vkCmdBindPipeline(cmdBuffer.GetBufferHandle(), VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline);
+ BeginCommandBuffer();
+ vkCmdBindPipeline(m_cmdBuffer->GetBufferHandle(), VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline);
msgFlags = m_errorMonitor->GetState(&msgString);
ASSERT_TRUE(msgFlags & VK_DBG_REPORT_ERROR_BIT) << "Did not receive error after binding RenderPass w/ mismatched MSAA from PSO.";
@@ -1883,7 +1878,6 @@
ASSERT_NO_FATAL_FAILURE(InitState());
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
m_errorMonitor->ClearState();
- VkCommandBufferObj cmdBuffer(m_device);
VkDescriptorTypeCount ds_type_count = {};
ds_type_count.type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
@@ -1934,9 +1928,9 @@
//err = vkCreateGraphicsPipeline(m_device->device(), &gp_ci, &pipeline);
ASSERT_VK_SUCCESS(err);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- BeginCommandBuffer(cmdBuffer);
- vkCmdBindPipeline(cmdBuffer.GetBufferHandle(), VK_PIPELINE_BIND_POINT_GRAPHICS, badPipeline);
+
+ BeginCommandBuffer();
+ vkCmdBindPipeline(m_cmdBuffer->GetBufferHandle(), VK_PIPELINE_BIND_POINT_GRAPHICS, badPipeline);
msgFlags = m_errorMonitor->GetState(&msgString);
ASSERT_TRUE(msgFlags & VK_DBG_REPORT_ERROR_BIT) << "Did not receive error after binding invalid pipeline to CmdBuffer";
@@ -1955,7 +1949,6 @@
ASSERT_NO_FATAL_FAILURE(InitState());
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
m_errorMonitor->ClearState();
- VkCommandBufferObj cmdBuffer(m_device);
VkDescriptorTypeCount ds_type_count = {};
ds_type_count.type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
@@ -2078,8 +2071,8 @@
err = vkCreateGraphicsPipelines(m_device->device(), pipelineCache, 1, &gp_ci, &pipeline);
ASSERT_VK_SUCCESS(err);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- BeginCommandBuffer(cmdBuffer);
+
+ BeginCommandBuffer();
m_errorMonitor->ClearState();
// Main thing we care about for this test is that the VkImage obj we're clearing matches Color Attachment of FB
@@ -2090,7 +2083,7 @@
cCV.f32[2] = 1.0;
cCV.f32[3] = 1.0;
- vkCmdClearColorAttachment(cmdBuffer.GetBufferHandle(), 0, (VkImageLayout)NULL, &cCV, 0, NULL);
+ vkCmdClearColorAttachment(m_cmdBuffer->GetBufferHandle(), 0, (VkImageLayout)NULL, &cCV, 0, NULL);
msgFlags = m_errorMonitor->GetState(&msgString);
ASSERT_TRUE(msgFlags & VK_DBG_REPORT_WARN_BIT) << "Did not receive error after issuing Clear Cmd on FB color attachment prior to Draw Cmd.";
if (!strstr(msgString.c_str(),"vkCmdClearColorAttachment() issued on CB object ")) {
@@ -2108,7 +2101,6 @@
ASSERT_NO_FATAL_FAILURE(InitState());
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
m_errorMonitor->ClearState();
- VkCommandBufferObj cmdBuffer(m_device);
VkDescriptorTypeCount ds_type_count = {};
ds_type_count.type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
@@ -2199,11 +2191,11 @@
err = vkCreateGraphicsPipelines(m_device->device(), pipeline_cache, 1, &gp_ci, &pipeline);
ASSERT_VK_SUCCESS(err);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- BeginCommandBuffer(cmdBuffer);
- vkCmdBindPipeline(cmdBuffer.GetBufferHandle(), VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline);
+
+ BeginCommandBuffer();
+ vkCmdBindPipeline(m_cmdBuffer->GetBufferHandle(), VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline);
// Should error before calling to driver so don't care about actual data
- vkCmdBindVertexBuffers(cmdBuffer.GetBufferHandle(), 0, 1, NULL, NULL);
+ vkCmdBindVertexBuffers(m_cmdBuffer->GetBufferHandle(), 0, 1, NULL, NULL);
msgFlags = m_errorMonitor->GetState(&msgString);
ASSERT_TRUE(msgFlags & VK_DBG_REPORT_ERROR_BIT) << "Did not receive error after binding Vtx Buffer w/o VBO attached to PSO.";
@@ -2244,10 +2236,8 @@
ASSERT_NO_FATAL_FAILURE(InitViewport());
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
-
m_errorMonitor->ClearState();
- BeginCommandBuffer(cmdBuffer);
+ BeginCommandBuffer();
VkEventCreateInfo event_info;
VkEvent event;
@@ -2263,7 +2253,7 @@
ASSERT_VK_SUCCESS(err);
struct thread_data_struct data;
- data.cmdBuffer = cmdBuffer.handle();
+ data.cmdBuffer = m_cmdBuffer->handle();
data.event = event;
data.bailout = false;
m_errorMonitor->SetBailout(&data.bailout);
@@ -2272,7 +2262,7 @@
// Add many entries to command buffer from this thread at the same time.
AddToCommandBuffer(&data);
test_platform_thread_join(thread, NULL);
- EndCommandBuffer(cmdBuffer);
+ EndCommandBuffer();
msgFlags = m_errorMonitor->GetState(&msgString);
ASSERT_TRUE(msgFlags & VK_DBG_REPORT_ERROR_BIT) << "Did not receive an err from using one VkCommandBufferObj in two threads";
@@ -2319,10 +2309,9 @@
pipe.AddShader(&vs);
pipe.AddShader(&fs);
- VkCommandBufferObj dummyCmd(m_device);
VkDescriptorSetObj descriptorSet(m_device);
descriptorSet.AppendDummy();
- descriptorSet.CreateVKDescriptorSet(&dummyCmd);
+ descriptorSet.CreateVKDescriptorSet(m_cmdBuffer);
m_errorMonitor->ClearState();
pipe.CreateVKPipeline(descriptorSet, renderPass());
@@ -2369,10 +2358,9 @@
pipe.AddShader(&vs);
pipe.AddShader(&fs);
- VkCommandBufferObj dummyCmd(m_device);
VkDescriptorSetObj descriptorSet(m_device);
descriptorSet.AppendDummy();
- descriptorSet.CreateVKDescriptorSet(&dummyCmd);
+ descriptorSet.CreateVKDescriptorSet(m_cmdBuffer);
m_errorMonitor->ClearState();
pipe.CreateVKPipeline(descriptorSet, renderPass());
@@ -2421,10 +2409,9 @@
pipe.AddShader(&vs);
pipe.AddShader(&fs);
- VkCommandBufferObj dummyCmd(m_device);
VkDescriptorSetObj descriptorSet(m_device);
descriptorSet.AppendDummy();
- descriptorSet.CreateVKDescriptorSet(&dummyCmd);
+ descriptorSet.CreateVKDescriptorSet(m_cmdBuffer);
m_errorMonitor->ClearState();
pipe.CreateVKPipeline(descriptorSet, renderPass());
@@ -2480,10 +2467,9 @@
pipe.AddVertexInputBindings(&input_binding, 1);
pipe.AddVertexInputAttribs(&input_attrib, 1);
- VkCommandBufferObj dummyCmd(m_device);
VkDescriptorSetObj descriptorSet(m_device);
descriptorSet.AppendDummy();
- descriptorSet.CreateVKDescriptorSet(&dummyCmd);
+ descriptorSet.CreateVKDescriptorSet(m_cmdBuffer);
m_errorMonitor->ClearState();
pipe.CreateVKPipeline(descriptorSet, renderPass());
@@ -2530,10 +2516,9 @@
pipe.AddShader(&vs);
pipe.AddShader(&fs);
- VkCommandBufferObj dummyCmd(m_device);
VkDescriptorSetObj descriptorSet(m_device);
descriptorSet.AppendDummy();
- descriptorSet.CreateVKDescriptorSet(&dummyCmd);
+ descriptorSet.CreateVKDescriptorSet(m_cmdBuffer);
m_errorMonitor->ClearState();
pipe.CreateVKPipeline(descriptorSet, renderPass());
@@ -2590,10 +2575,9 @@
pipe.AddVertexInputBindings(&input_binding, 1);
pipe.AddVertexInputAttribs(&input_attrib, 1);
- VkCommandBufferObj dummyCmd(m_device);
VkDescriptorSetObj descriptorSet(m_device);
descriptorSet.AppendDummy();
- descriptorSet.CreateVKDescriptorSet(&dummyCmd);
+ descriptorSet.CreateVKDescriptorSet(m_cmdBuffer);
m_errorMonitor->ClearState();
pipe.CreateVKPipeline(descriptorSet, renderPass());
@@ -2651,10 +2635,9 @@
pipe.AddVertexInputBindings(input_bindings, 2);
pipe.AddVertexInputAttribs(&input_attrib, 1);
- VkCommandBufferObj dummyCmd(m_device);
VkDescriptorSetObj descriptorSet(m_device);
descriptorSet.AppendDummy();
- descriptorSet.CreateVKDescriptorSet(&dummyCmd);
+ descriptorSet.CreateVKDescriptorSet(m_cmdBuffer);
m_errorMonitor->ClearState();
pipe.CreateVKPipeline(descriptorSet, renderPass());
@@ -2704,10 +2687,9 @@
pipe.AddColorAttachment();
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj dummyCmd(m_device);
VkDescriptorSetObj descriptorSet(m_device);
descriptorSet.AppendDummy();
- descriptorSet.CreateVKDescriptorSet(&dummyCmd);
+ descriptorSet.CreateVKDescriptorSet(m_cmdBuffer);
m_errorMonitor->ClearState();
pipe.CreateVKPipeline(descriptorSet, renderPass());
@@ -2759,10 +2741,9 @@
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
/* FS writes CB 1, but we don't configure it */
- VkCommandBufferObj dummyCmd(m_device);
VkDescriptorSetObj descriptorSet(m_device);
descriptorSet.AppendDummy();
- descriptorSet.CreateVKDescriptorSet(&dummyCmd);
+ descriptorSet.CreateVKDescriptorSet(m_cmdBuffer);
m_errorMonitor->ClearState();
pipe.CreateVKPipeline(descriptorSet, renderPass());
@@ -2811,10 +2792,9 @@
pipe.AddColorAttachment();
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj dummyCmd(m_device);
VkDescriptorSetObj descriptorSet(m_device);
descriptorSet.AppendDummy();
- descriptorSet.CreateVKDescriptorSet(&dummyCmd);
+ descriptorSet.CreateVKDescriptorSet(m_cmdBuffer);
m_errorMonitor->ClearState();
pipe.CreateVKPipeline(descriptorSet, renderPass());
@@ -2867,10 +2847,9 @@
pipe.AddColorAttachment();
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj dummyCmd(m_device);
VkDescriptorSetObj descriptorSet(m_device);
descriptorSet.AppendDummy();
- descriptorSet.CreateVKDescriptorSet(&dummyCmd);
+ descriptorSet.CreateVKDescriptorSet(m_cmdBuffer);
VkResult res = pipe.CreateVKPipeline(descriptorSet, renderPass());
/* pipeline creation should have succeeded */
diff --git a/tests/render_tests.cpp b/tests/render_tests.cpp
index 02427a9..4f8a070 100644
--- a/tests/render_tests.cpp
+++ b/tests/render_tests.cpp
@@ -268,11 +268,30 @@
void RotateTriangleVSUniform(glm::mat4 Projection, glm::mat4 View, glm::mat4 Model,
VkConstantBufferObj *constantBuffer, VkCommandBufferObj *cmdBuffer);
void GenericDrawPreparation(VkCommandBufferObj *cmdBuffer, VkPipelineObj &pipelineobj, VkDescriptorSetObj &descriptorSet);
+ void GenericDrawPreparation(VkPipelineObj &pipelineobj, VkDescriptorSetObj &descriptorSet)
+ { GenericDrawPreparation(m_cmdBuffer, pipelineobj, descriptorSet); }
void InitDepthStencil();
void VKTriangleTest(const char *vertShaderText, const char *fragShaderText, const bool rotate);
VkResult BeginCommandBuffer(VkCommandBufferObj &cmdBuffer);
VkResult EndCommandBuffer(VkCommandBufferObj &cmdBuffer);
+ /* Convenience functions that use built-in command buffer */
+ VkResult BeginCommandBuffer() { return BeginCommandBuffer(*m_cmdBuffer); }
+ 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); }
+ void DrawIndexed(uint32_t firstVertex, uint32_t vertexCount, int32_t vertexOffset, uint32_t firstInstance, uint32_t instanceCount)
+ { m_cmdBuffer->DrawIndexed(firstVertex, vertexCount, vertexOffset,firstInstance, instanceCount); }
+ void QueueCommandBuffer() { m_cmdBuffer->QueueCommandBuffer(); }
+ void RotateTriangleVSUniform(glm::mat4 Projection, glm::mat4 View, glm::mat4 Model,
+ VkConstantBufferObj *constantBuffer)
+ {RotateTriangleVSUniform(Projection, View, Model, constantBuffer, m_cmdBuffer); }
+ void BindVertexBuffer(VkConstantBufferObj *vertexBuffer, VkDeviceSize offset, uint32_t binding)
+ { m_cmdBuffer->BindVertexBuffer(vertexBuffer, offset, binding); }
+ void BindIndexBuffer(VkIndexBufferObj *indexBuffer, VkDeviceSize offset)
+ { m_cmdBuffer->BindIndexBuffer(indexBuffer, offset); }
+
+
protected:
VkImage m_texture;
@@ -467,29 +486,26 @@
descriptorSet.AppendBuffer(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, constantBuffer);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
-
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
+ ASSERT_VK_SUCCESS(EndCommandBuffer());
- cmdBuffer.QueueCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
if (rotate)
- RotateTriangleVSUniform(Projection, View, Model, &constantBuffer, &cmdBuffer);
+ RotateTriangleVSUniform(Projection, View, Model, &constantBuffer);
#ifdef PRINT_OBJECTS
OBJ_TRACK_GET_OBJECTS_COUNT pObjTrackGetObjectsCount = (OBJ_TRACK_GET_OBJECTS_COUNT)vkGetProcAddr(gpu(), (char*)"objTrackGetObjectsCount");
@@ -748,22 +764,19 @@
pipelineobj.AddVertexDataBuffer(&meshBuffer, MESH_BIND_ID);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ GenericDrawPreparation(pipelineobj, descriptorSet);
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
-
- cmdBuffer.BindVertexBuffer(&meshBuffer, 0, 0);
+ BindVertexBuffer(&meshBuffer, 0, 0);
// render two triangles
- cmdBuffer.Draw(0, 6, 0, 1);
+ Draw(0, 6, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
+ ASSERT_VK_SUCCESS(EndCommandBuffer());
- cmdBuffer.QueueCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -836,27 +849,22 @@
att.channelWriteMask = 0xf;
pipelineobj.AddColorAttachment(1, &att);
- VkCommandBufferObj cmdBuffer(m_device);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- cmdBuffer.AddRenderTarget(m_renderTargets[1]);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
-
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
-
- cmdBuffer.BindVertexBuffer(&meshBuffer, 0, 0);
+ BindVertexBuffer(&meshBuffer, 0, 0);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ ASSERT_VK_SUCCESS(EndCommandBuffer());
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -948,26 +956,24 @@
pipelineobj.AddVertexInputBindings(&vi_binding,1);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
- cmdBuffer.BindVertexBuffer(&meshBuffer, 0, MESH_BIND_ID);
- cmdBuffer.BindIndexBuffer(&indexBuffer, 0);
+ BindVertexBuffer(&meshBuffer, 0, MESH_BIND_ID);
+ BindIndexBuffer(&indexBuffer, 0);
// render two triangles
- cmdBuffer.DrawIndexed(0, 6, 0, 0, 1);
+ DrawIndexed(0, 6, 0, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ ASSERT_VK_SUCCESS(EndCommandBuffer());
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -1041,25 +1047,23 @@
pipelineobj.AddVertexDataBuffer(&meshBuffer,MESH_BIND_ID);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
- cmdBuffer.BindVertexBuffer(&meshBuffer, 0, 0);
+ BindVertexBuffer(&meshBuffer, 0, 0);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render triangle
- cmdBuffer.Draw(0, 6, 0, 1);
+ Draw(0, 6, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -1133,24 +1137,21 @@
pipelineobj.AddVertexDataBuffer(&meshBuffer,MESH_BIND_ID);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ GenericDrawPreparation(pipelineobj, descriptorSet);
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
-
- cmdBuffer.BindVertexBuffer(&meshBuffer, 0, 0);
+ BindVertexBuffer(&meshBuffer, 0, 0);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render two triangles
- cmdBuffer.Draw(0, 6, 0, 1);
+ Draw(0, 6, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -1236,25 +1237,23 @@
pipelineobj.AddVertexDataBuffer(&meshBuffer,MESH_BIND_ID);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
- cmdBuffer.BindVertexBuffer(&meshBuffer, 0, 0);
+ BindVertexBuffer(&meshBuffer, 0, 0);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render two triangles
- cmdBuffer.Draw(0, 6, 0, 1);
+ Draw(0, 6, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -1329,25 +1328,23 @@
pipelineobj.AddVertexDataBuffer(&meshBuffer,MESH_BIND_ID);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
- cmdBuffer.BindVertexBuffer(&meshBuffer, 0, 0);
+ BindVertexBuffer(&meshBuffer, 0, 0);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render two triangles
- cmdBuffer.Draw(0, 6, 0, 1);
+ Draw(0, 6, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -1404,29 +1401,25 @@
descriptorSet.AppendBuffer(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, MVPBuffer);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ GenericDrawPreparation(pipelineobj, descriptorSet);
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
-
- // cmdBuffer.BindVertexBuffer(&meshBuffer, 0, 0);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render two triangles
- cmdBuffer.Draw(0, 6, 0, 1);
+ Draw(0, 6, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
- RotateTriangleVSUniform(Projection, View, Model, &MVPBuffer, &cmdBuffer);
+ RotateTriangleVSUniform(Projection, View, Model, &MVPBuffer);
}
TEST_F(VkRenderTest, MixTriangle)
@@ -1483,12 +1476,10 @@
descriptorSet.AppendDummy();
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
@@ -1496,11 +1487,11 @@
#endif
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -1575,25 +1566,23 @@
pipelineobj.AddVertexDataBuffer(&meshBuffer, MESH_BUF_ID);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
- cmdBuffer.BindVertexBuffer(&meshBuffer, 0, 0);
+ BindVertexBuffer(&meshBuffer, 0, 0);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render two triangles
- cmdBuffer.Draw(0, 6, 0, 1);
+ Draw(0, 6, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -1682,25 +1671,23 @@
pipelineobj.AddVertexDataBuffer(&meshBuffer, MESH_BUF_ID);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
- cmdBuffer.BindVertexBuffer(&meshBuffer, 0, MESH_BUF_ID);
+ BindVertexBuffer(&meshBuffer, 0, MESH_BUF_ID);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render two triangles
- cmdBuffer.Draw(0, 6, 0, 1);
+ Draw(0, 6, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -1779,25 +1766,23 @@
pipelineobj.AddVertexDataBuffer(&meshBuffer, MESH_BUF_ID);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
- cmdBuffer.BindVertexBuffer(&meshBuffer, 0, 0);
+ BindVertexBuffer(&meshBuffer, 0, 0);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render two triangles
- cmdBuffer.Draw(0, 6, 0, 1);
+ Draw(0, 6, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -1900,25 +1885,22 @@
ASSERT_NO_FATAL_FAILURE(InitRenderTarget(m_depthStencil->BindInfo()));
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
+ GenericDrawPreparation(pipelineobj, descriptorSet);
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
-
- cmdBuffer.BindVertexBuffer(&meshBuffer, 0, 0);
+ BindVertexBuffer(&meshBuffer, 0, 0);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render triangles
- cmdBuffer.Draw(0, 36, 0, 1);
+ Draw(0, 36, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -1974,12 +1956,9 @@
descriptorSet.AppendSamplerTexture(&sampler, &texture);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
-
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
@@ -1987,11 +1966,11 @@
#endif
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -2048,23 +2027,20 @@
descriptorSet.AppendSamplerTexture(&sampler, &texture);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
-
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -2129,23 +2105,20 @@
descriptorSet.AppendSamplerTexture(&sampler, &texture);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
-
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -2200,23 +2173,20 @@
descriptorSet.AppendSamplerTexture(&sampler, &texture);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
-
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -2290,23 +2260,20 @@
descriptorSet.AppendSamplerTexture(&sampler3, &texture3);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
-
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -2373,23 +2340,20 @@
descriptorSet.AppendBuffer(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, colorBuffer);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
-
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -2475,23 +2439,20 @@
descriptorSet.AppendBuffer(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, whiteBuffer);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
-
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -2572,23 +2533,20 @@
descriptorSet.AppendBuffer(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, whiteBuffer);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
-
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -2693,23 +2651,20 @@
descriptorSet.AppendBuffer(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, whiteBuffer);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
-
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -2818,27 +2773,24 @@
pipelineobj.SetDepthStencil(&ds_state);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget(m_depthStencil->BindInfo()));
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ GenericDrawPreparation(pipelineobj, descriptorSet);
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
-
- cmdBuffer.BindVertexBuffer(&meshBuffer, 0, 0);
+ BindVertexBuffer(&meshBuffer, 0, 0);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render triangle
- cmdBuffer.Draw(0, num_verts, 0, 1);
+ Draw(0, num_verts, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
- RotateTriangleVSUniform(Projection, View, Model, &mvpBuffer, &cmdBuffer);
+ RotateTriangleVSUniform(Projection, View, Model, &mvpBuffer);
}
TEST_F(VkRenderTest, TriangleMixedSamplerUniformBlockBinding)
@@ -2935,23 +2887,20 @@
descriptorSet.AppendBuffer(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, whiteBuffer);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
-
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -3044,23 +2993,20 @@
descriptorSet.AppendBuffer(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, whiteBuffer);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
-
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -3296,23 +3242,20 @@
descriptorSet.AppendBuffer(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, mixedBuffer);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
-
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)vkGetProcAddr(gpu(), (char*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -3407,19 +3350,16 @@
descriptorSet.AppendSamplerTexture(&sampler3, &texture3);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
-
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -3512,21 +3452,18 @@
pipelineobj.AddShader(&ps);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
-
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
VkDescriptorSetObj descriptorSet(m_device);
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -3865,22 +3802,19 @@
pipelineobj.AddShader(&ps);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
-
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
VkDescriptorSetObj descriptorSet(m_device);
descriptorSet.AppendBuffer(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, mixedBuffer);
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -3994,21 +3928,18 @@
pipelineobj.AddShader(&ps);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
-
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
VkDescriptorSetObj descriptorSet(m_device);
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -4131,22 +4062,19 @@
VkConstantBufferObj windowDimensions(m_device, sizeof(dimensions) / sizeof(dimensions[0]), sizeof(dimensions[0]), (const void*) dimensions);
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
-
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
VkDescriptorSetObj descriptorSet(m_device);
descriptorSet.AppendBuffer(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, windowDimensions);
- GenericDrawPreparation(&cmdBuffer, pipelineobj, descriptorSet);
+ GenericDrawPreparation(pipelineobj, descriptorSet);
// render triangle
- cmdBuffer.Draw(0, 3, 0, 1);
+ Draw(0, 3, 0, 1);
// finalize recording of the command buffer
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -4163,13 +4091,10 @@
m_clear_color.f32[2] = 0;
m_clear_color.f32[3] = 0;
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
-
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
/* This command buffer contains ONLY the load op! */
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
@@ -4186,10 +4111,7 @@
m_clear_color.f32[2] = 0;
m_clear_color.f32[3] = 0;
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
-
- VkCommandBufferObj cmdBuffer(m_device);
- cmdBuffer.AddRenderTarget(m_renderTargets[0]);
- ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+ ASSERT_VK_SUCCESS(BeginCommandBuffer());
/* Load op has cleared to red */
@@ -4204,12 +4126,12 @@
clear_color.f32[2] = 0;
clear_color.f32[3] = 0;
VkRect3D clear_rect = { { 0, 0, 0 }, { (int)m_width, (int)m_height, 1 } };
- vkCmdClearColorAttachment(cmdBuffer.handle(), 0,
+ vkCmdClearColorAttachment(m_cmdBuffer->handle(), 0,
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
&clear_color, 1, &clear_rect);
- EndCommandBuffer(cmdBuffer);
- cmdBuffer.QueueCommandBuffer();
+ EndCommandBuffer();
+ QueueCommandBuffer();
RecordImages(m_renderTargets);
}
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 49a2bc3..4c03073 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -30,7 +30,7 @@
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
VkRenderFramework::VkRenderFramework() :
- m_cmdBuffer( VK_NULL_HANDLE ),
+ m_cmdBuffer(),
m_renderPass(VK_NULL_HANDLE),
m_framebuffer(VK_NULL_HANDLE),
m_stateRaster( VK_NULL_HANDLE ),
@@ -149,7 +149,8 @@
if (m_colorBlend) vkDestroyDynamicColorBlendState(device(), m_colorBlend);
if (m_stateDepthStencil) vkDestroyDynamicDepthStencilState(device(), m_stateDepthStencil);
if (m_stateRaster) vkDestroyDynamicRasterState(device(), m_stateRaster);
- if (m_cmdBuffer) vkDestroyCommandBuffer(device(), m_cmdBuffer);
+ if (m_cmdBuffer)
+ delete m_cmdBuffer;
if (m_cmdPool) vkDestroyCommandPool(device(), m_cmdPool);
if (m_framebuffer) vkDestroyFramebuffer(device(), m_framebuffer);
if (m_renderPass) vkDestroyRenderPass(device(), m_renderPass);
@@ -221,10 +222,7 @@
err = vkCreateCommandPool(device(), &cmd_pool_info, &m_cmdPool);
assert(!err);
- VkCmdBufferCreateInfo cmdInfo = vk_testing::CmdBuffer::create_info(m_cmdPool);
-
- err = vkCreateCommandBuffer(device(), &cmdInfo, &m_cmdBuffer);
- ASSERT_VK_SUCCESS(err) << "vkCreateCommandBuffer failed";
+ m_cmdBuffer = new VkCommandBufferObj(m_device, m_cmdPool);
}
void VkRenderFramework::InitViewport(float width, float height)
@@ -654,7 +652,13 @@
return;
}
- VkCommandBufferObj cmd_buf(m_device);
+ VkCmdPoolCreateInfo cmd_pool_info = {};
+ cmd_pool_info.sType = VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO;
+ cmd_pool_info.pNext = NULL;
+ cmd_pool_info.queueFamilyIndex = m_device->graphics_queue_node_index_;
+ cmd_pool_info.flags = 0;
+ vk_testing::CmdPool pool(*m_device, cmd_pool_info);
+ VkCommandBufferObj cmd_buf(m_device, pool.handle());
/* Build command buffer to set image layout in the driver */
err = cmd_buf.BeginCommandBuffer();
@@ -739,9 +743,16 @@
VkResult VkImageObj::CopyImage(VkImageObj &src_image)
{
VkResult U_ASSERT_ONLY err;
- VkCommandBufferObj cmd_buf(m_device);
VkImageLayout src_image_layout, dest_image_layout;
+ VkCmdPoolCreateInfo cmd_pool_info = {};
+ cmd_pool_info.sType = VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO;
+ cmd_pool_info.pNext = NULL;
+ cmd_pool_info.queueFamilyIndex = m_device->graphics_queue_node_index_;
+ cmd_pool_info.flags = 0;
+ vk_testing::CmdPool pool(*m_device, cmd_pool_info);
+ VkCommandBufferObj cmd_buf(m_device, pool.handle());
+
/* Build command buffer to copy staging texture to usable texture */
err = cmd_buf.BeginCommandBuffer();
assert(!err);
@@ -877,6 +888,7 @@
{
// TODO: Should we call QueueRemoveMemReference for the constant buffer memory here?
if (m_commandBuffer) {
+ delete m_cmdPool;
delete m_commandBuffer;
}
}
@@ -939,8 +951,13 @@
if (!m_commandBuffer)
{
m_fence.init(*m_device, vk_testing::Fence::create_info());
-
- m_commandBuffer = new VkCommandBufferObj(m_device);
+ VkCmdPoolCreateInfo cmd_pool_info = {};
+ cmd_pool_info.sType = VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO;
+ cmd_pool_info.pNext = NULL;
+ cmd_pool_info.queueFamilyIndex = m_device->graphics_queue_node_index_;
+ cmd_pool_info.flags = 0;
+ m_cmdPool = new vk_testing::CmdPool(*m_device, cmd_pool_info);
+ m_commandBuffer = new VkCommandBufferObj(m_device, m_cmdPool->handle());
}
else
{
@@ -1243,12 +1260,11 @@
return init_try(*m_device, info);
}
-VkCommandBufferObj::VkCommandBufferObj(VkDeviceObj *device)
+VkCommandBufferObj::VkCommandBufferObj(VkDeviceObj *device, VkCmdPool pool)
{
m_device = device;
- m_cmdPool.init(*device, vk_testing::CmdPool::create_info(device->graphics_queue_node_index_));
- init(*device, vk_testing::CmdBuffer::create_info(m_cmdPool.handle()));
+ init(*device, vk_testing::CmdBuffer::create_info(pool));
}
VkCmdBuffer VkCommandBufferObj::GetBufferHandle()
diff --git a/tests/vkrenderframework.h b/tests/vkrenderframework.h
index 351bf2e2..d7c1958 100644
--- a/tests/vkrenderframework.h
+++ b/tests/vkrenderframework.h
@@ -67,6 +67,8 @@
VkAttachmentBindInfo m_attachmentBindInfo;
};
+class VkCommandBufferObj;
+
class VkRenderFramework : public VkTestFramework
{
public:
@@ -105,7 +107,7 @@
uint32_t gpu_count;
VkDeviceObj *m_device;
VkCmdPool m_cmdPool;
- VkCmdBuffer m_cmdBuffer;
+ VkCommandBufferObj *m_cmdBuffer;
VkRenderPass m_renderPass;
VkFramebuffer m_framebuffer;
std::vector<VkClearValue> m_renderPassClearValues;
@@ -158,7 +160,7 @@
class VkCommandBufferObj : public vk_testing::CmdBuffer
{
public:
- VkCommandBufferObj(VkDeviceObj *device);
+ VkCommandBufferObj(VkDeviceObj *device, VkCmdPool pool);
VkCmdBuffer GetBufferHandle();
VkResult BeginCommandBuffer();
VkResult BeginCommandBuffer(VkCmdBufferBeginInfo *pInfo);
@@ -186,7 +188,6 @@
protected:
VkDeviceObj *m_device;
- vk_testing::CmdPool m_cmdPool;
vector<VkImageObj*> m_renderTargets;
};
@@ -223,6 +224,7 @@
vk_testing::BufferView m_bufferView;
int m_numVertices;
int m_stride;
+ vk_testing::CmdPool *m_cmdPool;
VkCommandBufferObj *m_commandBuffer;
vk_testing::Fence m_fence;
};