tests: add {Fill,Copy}MemoryLarge to XglBlitTest
Test copying and filling a large (32M) buffer.
diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index 1ec381f..ef9d8e6 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -242,6 +242,40 @@
xglFreeMemory(mem);
}
+TEST_F(XglBlitTest, FillMemoryLarge)
+{
+ const XGL_GPU_SIZE size = 32 * 1024 * 1024;
+ XGL_GPU_MEMORY mem;
+ XGL_RESULT err;
+ XGL_GPU_SIZE offset;
+ const char *data;
+
+ ClearMemoryRefs();
+
+ mem = AddMemory(size, false);
+ ASSERT_NE((XGL_GPU_MEMORY) XGL_NULL_HANDLE, mem);
+
+ BeginCmd();
+ xglCmdFillMemory(m_cmd, mem, 0, size / 2, 0x01234567);
+ xglCmdFillMemory(m_cmd, mem, size / 2, size / 2, 0x89abcdef);
+ EndAndSubmitCmd();
+
+ err = xglMapMemory(mem, 0, (void **) &data);
+ ASSERT_XGL_SUCCESS(err);
+
+ for (offset = 0; offset < size / 2; offset += 4) {
+ ASSERT_EQ(0x01234567, *((const XGL_UINT32 *) (data + offset))) <<
+ "Offset is: " << offset;
+ }
+ for (; offset < size; offset += 4) {
+ ASSERT_EQ(0x89abcdef, *((const XGL_UINT32 *) (data + offset))) <<
+ "Offset is: " << offset;
+ }
+
+ xglUnmapMemory(mem);
+ xglFreeMemory(mem);
+}
+
TEST_F(XglBlitTest, CopyMemory)
{
XGL_GPU_MEMORY src, dst;
@@ -358,6 +392,50 @@
xglFreeMemory(mem[i]);
}
+TEST_F(XglBlitTest, CopyMemoryLarge)
+{
+ const XGL_GPU_SIZE size = 32 * 1024 * 1024;
+ XGL_GPU_MEMORY src, dst;
+ XGL_MEMORY_COPY region;
+ XGL_RESULT err;
+ void *data;
+ XGL_UINT i;
+
+ ClearMemoryRefs();
+
+ src = AddMemory(size, false);
+ ASSERT_NE((XGL_GPU_MEMORY) XGL_NULL_HANDLE, src);
+
+ err = xglMapMemory(src, 0, &data);
+ ASSERT_XGL_SUCCESS(err);
+ for (i = 0; i < size / 4; i++)
+ ((uint32_t *) data)[i] = i;
+ xglUnmapMemory(src);
+
+ dst = AddMemory(size, false);
+ ASSERT_NE((XGL_GPU_MEMORY) XGL_NULL_HANDLE, dst);
+
+ region.srcOffset = 0;
+ region.destOffset = 0;
+ region.copySize = size;
+
+ BeginCmd();
+
+ xglCmdCopyMemory(m_cmd, src, dst, 1, ®ion);
+
+ EndAndSubmitCmd();
+
+ err = xglMapMemory(dst, 0, &data);
+ ASSERT_XGL_SUCCESS(err);
+
+ for (i = 0; i < size / 4; i++)
+ ASSERT_EQ(i, ((const uint32_t *) data)[i]);
+
+ xglUnmapMemory(dst);
+ xglFreeMemory(src);
+ xglFreeMemory(dst);
+}
+
TEST_F(XglBlitTest, ClearColorImageBasic)
{
const XGL_FLOAT color[4] = { 0.0f, 1.0f, 0.0f, 1.0f };