tests: add XglRenderTest.TriangleMRT

Simple MRT test.

v2
 - use #version 130 to get gl_FragData
 - constify vb_data
 - add golen images
diff --git a/tests/render_tests.cpp b/tests/render_tests.cpp
index 57be0d6..ac18881 100644
--- a/tests/render_tests.cpp
+++ b/tests/render_tests.cpp
@@ -963,6 +963,69 @@
 
 }
 
+TEST_F(XglRenderTest, TriangleMRT)
+{
+    static const char *vertShaderText =
+            "#version 130\n"
+            "in vec4 pos;\n"
+            "void main() {\n"
+            "   gl_Position = pos;\n"
+            "}\n";
+
+    static const char *fragShaderText =
+            "#version 130\n"
+            "void main() {\n"
+            "   gl_FragData[0] = vec4(1.0, 0.0, 0.0, 1.0);\n"
+            "   gl_FragData[1] = vec4(0.0, 1.0, 0.0, 1.0);\n"
+            "}\n";
+    const XGL_FLOAT vb_data[][2] = {
+        { -1.0f, -1.0f },
+        {  1.0f, -1.0f },
+        { -1.0f,  1.0f }
+    };
+
+    ASSERT_NO_FATAL_FAILURE(InitState());
+    ASSERT_NO_FATAL_FAILURE(InitViewport());
+
+    XglConstantBufferObj meshBuffer(m_device, sizeof(vb_data) / sizeof(vb_data[0]), sizeof(vb_data[0]), vb_data);
+    meshBuffer.SetMemoryState(m_cmdBuffer,XGL_MEMORY_STATE_GRAPHICS_SHADER_READ_ONLY);
+
+    XglShaderObj vs(m_device,vertShaderText,XGL_SHADER_STAGE_VERTEX, this);
+    XglShaderObj ps(m_device,fragShaderText, XGL_SHADER_STAGE_FRAGMENT, this);
+
+    XglPipelineObj pipelineobj(m_device);
+    pipelineobj.AddShader(&vs);
+    pipelineobj.AddShader(&ps);
+
+    XGL_VERTEX_INPUT_BINDING_DESCRIPTION vi_binding = {
+         sizeof(vb_data[0]),              // strideInBytes;  Distance between vertices in bytes (0 = no advancement)
+         XGL_VERTEX_INPUT_STEP_RATE_VERTEX // stepRate;       // Rate at which binding is incremented
+    };
+
+    XGL_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION vi_attrib;
+    vi_attrib.binding = 0;                       // index into vertexBindingDescriptions
+    vi_attrib.format.channelFormat = XGL_CH_FMT_R32G32;            // format of source data
+    vi_attrib.format.numericFormat = XGL_NUM_FMT_FLOAT;
+    vi_attrib.offsetInBytes = 0;                 // Offset of first element in bytes from base of vertex
+
+    pipelineobj.AddVertexInputAttribs(&vi_attrib, 1);
+    pipelineobj.AddVertexInputBindings(&vi_binding,1);
+    pipelineobj.AddVertexDataBuffer(&meshBuffer,0);
+
+    XglDescriptorSetObj descriptorSet(m_device);
+
+    m_renderTargetCount = 2;
+
+    XGL_PIPELINE_CB_ATTACHMENT_STATE att = {};
+    att.blendEnable = XGL_FALSE;
+    att.format = m_render_target_fmt;
+    att.channelWriteMask = 0xf;
+    pipelineobj.SetColorAttachment(1, &att);
+
+    GenericDrawTriangleTest(&pipelineobj, &descriptorSet, 1);
+    QueueCommandBuffer(NULL, 0);
+}
+
 TEST_F(XglRenderTest, QuadWithIndexedVertexFetch)
 {
     static const char *vertShaderText =