tests: Add test for render target clear via load op

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Courtney Goeltzenleuchter <courtney@lunarg.com>
diff --git a/tests/golden/RenderPassLoadOpClear.ppm b/tests/golden/RenderPassLoadOpClear.ppm
new file mode 100644
index 0000000..e318f58
--- /dev/null
+++ b/tests/golden/RenderPassLoadOpClear.ppm
Binary files differ
diff --git a/tests/render_tests.cpp b/tests/render_tests.cpp
index 5c2d8aa..8bfcfad 100644
--- a/tests/render_tests.cpp
+++ b/tests/render_tests.cpp
@@ -3978,6 +3978,30 @@
     RecordImages(m_renderTargets);
 }
 
+TEST_F(VkRenderTest, RenderPassLoadOpClear)
+{
+    ASSERT_NO_FATAL_FAILURE(InitState());
+    ASSERT_NO_FATAL_FAILURE(InitViewport());
+
+    /* clear via load op to full green */
+    m_clear_via_load_op = true;
+    m_clear_color.useRawValue = false;
+    m_clear_color.color.floatColor[0] = 0;
+    m_clear_color.color.floatColor[1] = 1;
+    m_clear_color.color.floatColor[2] = 0;
+    m_clear_color.color.floatColor[3] = 0;
+    ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
+
+    VkCommandBufferObj cmdBuffer(m_device);
+    cmdBuffer.AddRenderTarget(m_renderTargets[0]);
+    ASSERT_VK_SUCCESS(BeginCommandBuffer(cmdBuffer));
+    /* This command buffer contains ONLY the load op! */
+    EndCommandBuffer(cmdBuffer);
+    cmdBuffer.QueueCommandBuffer();
+
+    RecordImages(m_renderTargets);
+}
+
 int main(int argc, char **argv) {
     int result;
 
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 90a2b07..1b1e3da 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -41,6 +41,7 @@
     m_height( 256.0 ),                  // default window height
     m_render_target_fmt( VK_FORMAT_R8G8B8A8_UNORM ),
     m_depth_stencil_fmt( VK_FORMAT_UNDEFINED ),
+    m_clear_via_load_op( false ),
     m_depth_clear_color( 1.0 ),
     m_stencil_clear_color( 0 )
 {
@@ -245,7 +246,7 @@
         m_renderTargets.push_back(img);
         m_colorBindings[i].view  = img->targetView();
         m_colorBindings[i].layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
-        load_ops.push_back(VK_ATTACHMENT_LOAD_OP_LOAD);
+        load_ops.push_back(m_clear_via_load_op ? VK_ATTACHMENT_LOAD_OP_CLEAR : VK_ATTACHMENT_LOAD_OP_LOAD);
         store_ops.push_back(VK_ATTACHMENT_STORE_OP_STORE);
         clear_colors.push_back(m_clear_color);
     }
diff --git a/tests/vkrenderframework.h b/tests/vkrenderframework.h
index 2d8c335..285cd80 100644
--- a/tests/vkrenderframework.h
+++ b/tests/vkrenderframework.h
@@ -118,6 +118,7 @@
     VkFormat                            m_depth_stencil_fmt;
     VkColorAttachmentBindInfo           m_colorBindings[8];
     VkClearColor                        m_clear_color;
+    bool                                m_clear_via_load_op;
     float                               m_depth_clear_color;
     uint32_t                            m_stencil_clear_color;
     VkDepthStencilObj                  *m_depthStencil;