tests: draw multiple triangles to a buffer
diff --git a/tests/render_tests.cpp b/tests/render_tests.cpp
index faa2ad7..7eab599 100644
--- a/tests/render_tests.cpp
+++ b/tests/render_tests.cpp
@@ -141,7 +141,7 @@
void DrawTriangleTest(const char *vertShaderText, const char *fragShaderText);
void DrawTriangleTwoUniformsFS(const char *vertShaderText, const char *fragShaderText);
void DrawTriangleWithVertexFetch(const char *vertShaderText, const char *fragShaderText);
- void DrawTriangleVSUniform(const char *vertShaderText, const char *fragShaderText, const glm::mat4 matrix);
+ void DrawTriangleVSUniform(const char *vertShaderText, const char *fragShaderText);
void CreatePipelineWithVertexFetch(XGL_PIPELINE* pipeline, XGL_SHADER vs, XGL_SHADER ps);
void CreatePipelineVSUniform(XGL_PIPELINE* pipeline, XGL_SHADER vs, XGL_SHADER ps);
@@ -619,13 +619,16 @@
}
-void XglRenderTest::DrawTriangleVSUniform(const char *vertShaderText, const char *fragShaderText,
- const glm::mat4 matrix)
+void XglRenderTest::DrawTriangleVSUniform(const char *vertShaderText, const char *fragShaderText)
{
XGL_PIPELINE pipeline;
XGL_SHADER vs, ps;
XGL_RESULT err;
glm::mat4 MVP;
+ int i;
+
+ // Create identity matrix
+ glm::mat4 Model = glm::mat4(1.0f);
ASSERT_NO_FATAL_FAILURE(InitState());
ASSERT_NO_FATAL_FAILURE(InitViewport());
@@ -646,8 +649,8 @@
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- const int matrixSize = 4;
- MVP = matrix;
+ const int matrixSize = 16;
+ MVP = Model;
InitConstantBuffer(matrixSize, sizeof(MVP[0]), (const void*) &MVP[0][0]);
@@ -712,6 +715,30 @@
xglDeviceWaitIdle(m_device->device());
RecordImage(m_renderTarget);
+
+ for (i = 0; i < 8; i++) {
+ XGL_UINT8 *pData;
+ err = xglMapMemory(m_constantBufferMem, 0, (XGL_VOID **) &pData);
+ ASSERT_XGL_SUCCESS(err);
+
+ MVP = glm::rotate(MVP, glm::radians(22.5f), glm::vec3(0.0f, 1.0f, 0.0f));
+ memcpy(pData, (const void*) &MVP[0][0], matrixSize);
+
+ err = xglUnmapMemory(m_constantBufferMem);
+ ASSERT_XGL_SUCCESS(err);
+
+ // submit the command buffer to the universal queue
+ err = xglQueueSubmit( m_device->m_queue, 1, &m_cmdBuffer, m_numMemRefs, m_memRefs, NULL );
+ ASSERT_XGL_SUCCESS( err );
+
+ err = xglQueueWaitIdle( m_device->m_queue );
+ ASSERT_XGL_SUCCESS( err );
+
+ // Wait for work to finish before cleaning up.
+ xglDeviceWaitIdle(m_device->device());
+
+ RecordImage(m_renderTarget);
+ }
}
void XglRenderTest::CreatePipelineWithVertexFetch(XGL_PIPELINE* pipeline, XGL_SHADER vs, XGL_SHADER ps)
@@ -1207,10 +1234,10 @@
// Create identity matrix
glm::mat4 Model = glm::mat4(1.0f);
- DrawTriangleVSUniform(vertShaderText, fragShaderText, Model);
+ DrawTriangleVSUniform(vertShaderText, fragShaderText);
- Model = glm::rotate(Model, glm::radians(45.0f), glm::vec3(0.0f, 0.0f, 1.0f));
- DrawTriangleVSUniform(vertShaderText, fragShaderText, Model);
+// Model = glm::rotate(Model, glm::radians(45.0f), glm::vec3(0.0f, 0.0f, 1.0f));
+// DrawTriangleVSUniform(vertShaderText, fragShaderText, Model);
}
int main(int argc, char **argv) {