tests: add MRT support
Tests can set m_renderTargetCount to indicate how many RTs to create, and call
SetColorAttachment on the pipeline object to update XGL_PIPELINE_CB_STATE.
All RTs created have the same format.
diff --git a/tests/render_tests.cpp b/tests/render_tests.cpp
index 224beda..57be0d6 100644
--- a/tests/render_tests.cpp
+++ b/tests/render_tests.cpp
@@ -296,6 +296,7 @@
void XglRenderTest::QueueCommandBuffer(XGL_MEMORY_REF *memRefs, XGL_UINT32 numMemRefs)
{
XGL_RESULT err = XGL_SUCCESS;
+ XGL_UINT i;
// submit the command buffer to the universal queue
err = xglQueueSubmit( m_device->m_queue, 1, &m_cmdBuffer, numMemRefs, memRefs, NULL );
@@ -307,8 +308,8 @@
// Wait for work to finish before cleaning up.
xglDeviceWaitIdle(m_device->device());
- RecordImage(m_renderTarget);
-
+ for (i = 0; i < m_renderTargetCount; i++)
+ RecordImage(m_renderTargets[i]);
}
void XglRenderTest::DrawTriangleTest(const char *vertShaderText, const char *fragShaderText)
@@ -363,7 +364,8 @@
// Wait for work to finish before cleaning up.
xglDeviceWaitIdle(m_device->device());
- RecordImage(m_renderTarget);
+ assert(m_renderTargetCount == 1);
+ RecordImage(m_renderTargets[0]);
}
@@ -397,7 +399,8 @@
// Wait for work to finish before cleaning up.
xglDeviceWaitIdle(m_device->device());
- RecordImage(m_renderTarget);
+ assert(m_renderTargetCount == 1);
+ RecordImage(m_renderTargets[0]);
}
}