tests cmdBuffer now binds each state individually
More flexible rather than all at once
diff --git a/tests/render_tests.cpp b/tests/render_tests.cpp
index 19964bd..32dad54 100644
--- a/tests/render_tests.cpp
+++ b/tests/render_tests.cpp
@@ -217,6 +217,7 @@
void RotateTriangleVSUniform(glm::mat4 Projection, glm::mat4 View, glm::mat4 Model,
XglConstantBufferObj *constantBuffer);
void GenericDrawTriangleTest(XglPipelineObj *pipelineobj, XglDescriptorSetObj *descriptorSet, int numTris);
+ void GenericDrawPreparation(XglCommandBufferObj *cmdBuffer, XglPipelineObj *pipelineobj, XglDescriptorSetObj *descriptorSet);
void QueueCommandBuffer(XGL_MEMORY_REF *memRefs, XGL_UINT32 numMemRefs);
void InitDepthStencil();
@@ -262,6 +263,20 @@
}
};
+void XglRenderTest::GenericDrawPreparation(XglCommandBufferObj *cmdBuffer, XglPipelineObj *pipelineobj, XglDescriptorSetObj *descriptorSet)
+{
+ cmdBuffer->ClearAllBuffers(&m_depthStencilBinding, m_depthStencilImage);
+ cmdBuffer->BindAttachments(&m_depthStencilBinding);
+ cmdBuffer->BindStateObject(XGL_STATE_BIND_RASTER, m_stateRaster);
+ cmdBuffer->BindStateObject(XGL_STATE_BIND_VIEWPORT, m_stateViewport);
+ cmdBuffer->BindStateObject(XGL_STATE_BIND_COLOR_BLEND, m_colorBlend);
+ cmdBuffer->BindStateObject(XGL_STATE_BIND_DEPTH_STENCIL, m_stateDepthStencil);
+ cmdBuffer->BindStateObject(XGL_STATE_BIND_MSAA, m_stateMsaa);
+ pipelineobj->CreateXGLPipeline(descriptorSet);
+ cmdBuffer->BindPipeline(pipelineobj->GetPipelineHandle());
+ descriptorSet->CreateXGLDescriptorSet();
+ cmdBuffer->BindDescriptorSet(descriptorSet->GetDescriptorSetHandle());
+}
void XglRenderTest::GenericDrawTriangleTest(XglPipelineObj *pipelineobj, XglDescriptorSetObj *descriptorSet,int numTris)
{
@@ -958,9 +973,13 @@
cmdBuffer.AddRenderTarget(m_renderTargets[1]);
ASSERT_XGL_SUCCESS(cmdBuffer.BeginCommandBuffer(0));
cmdBuffer.ClearAllBuffers(NULL, NULL);
- cmdBuffer.BindAttachments(NULL);
+ cmdBuffer.BindAttachments(&m_depthStencilBinding);
- cmdBuffer.BindState(m_stateRaster, m_stateViewport, m_colorBlend, m_stateDepthStencil, m_stateMsaa);
+ cmdBuffer.BindStateObject(XGL_STATE_BIND_RASTER, m_stateRaster);
+ cmdBuffer.BindStateObject(XGL_STATE_BIND_VIEWPORT, m_stateViewport);
+ cmdBuffer.BindStateObject(XGL_STATE_BIND_COLOR_BLEND, m_colorBlend);
+ cmdBuffer.BindStateObject(XGL_STATE_BIND_DEPTH_STENCIL, m_stateDepthStencil);
+ cmdBuffer.BindStateObject(XGL_STATE_BIND_MSAA, m_stateMsaa);
pipelineobj.CreateXGLPipeline(&descriptorSet);
cmdBuffer.BindPipeline(pipelineobj.GetPipelineHandle());
cmdBuffer.BindVertexBuffer(&meshBuffer, 0, 0);
@@ -1072,13 +1091,18 @@
cmdBuffer.AddRenderTarget(m_renderTargets[0]);
ASSERT_XGL_SUCCESS(cmdBuffer.BeginCommandBuffer(0));
cmdBuffer.ClearAllBuffers(NULL, NULL);
- cmdBuffer.BindAttachments(NULL);
+ cmdBuffer.BindAttachments(&m_depthStencilBinding);
#ifdef DUMP_STATE_DOT
DRAW_STATE_DUMP_DOT_FILE pDSDumpDot = (DRAW_STATE_DUMP_DOT_FILE)xglGetProcAddr(gpu(), (XGL_CHAR*)"drawStateDumpDotFile");
pDSDumpDot((char*)"triTest2.dot");
#endif
- cmdBuffer.BindState(m_stateRaster, m_stateViewport, m_colorBlend, m_stateDepthStencil, m_stateMsaa);
+ cmdBuffer.BindStateObject(XGL_STATE_BIND_RASTER, m_stateRaster);
+ cmdBuffer.BindStateObject(XGL_STATE_BIND_VIEWPORT, m_stateViewport);
+ cmdBuffer.BindStateObject(XGL_STATE_BIND_COLOR_BLEND, m_colorBlend);
+ cmdBuffer.BindStateObject(XGL_STATE_BIND_DEPTH_STENCIL, m_stateDepthStencil);
+ cmdBuffer.BindStateObject(XGL_STATE_BIND_MSAA, m_stateMsaa);
+
cmdBuffer.BindPipeline(pipelineobj.GetPipelineHandle());
cmdBuffer.BindDescriptorSet(descriptorSet.GetDescriptorSetHandle());
cmdBuffer.BindVertexBuffer(&meshBuffer, 0, 0);