tests: add XglCmdCloneImageDataTest.Basic
diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index 6c86acf..1e906b4 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -1679,6 +1679,73 @@
}
}
+class XglCmdCloneImageDataTest : public XglCmdBlitImageTest {
+protected:
+ virtual void SetUp()
+ {
+ XglCmdBlitTest::SetUp();
+ init_test_formats();
+ ASSERT_NE(true, test_formats_.empty());
+ }
+
+ void test_clone_image_data(const XGL_IMAGE_CREATE_INFO &img_info)
+ {
+ xgl_testing::ImageChecker checker(img_info);
+ xgl_testing::Image src, dst;
+
+ src.init(dev_, img_info);
+ if (src.transparent() || src.copyable())
+ fill_src(src, checker);
+ cmd_.add_memory_ref(src, XGL_MEMORY_REF_READ_ONLY_BIT);
+
+ dst.init(dev_, img_info);
+ cmd_.add_memory_ref(dst, 0);
+
+ const XGL_IMAGE_STATE state =
+ (img_info.usage & XGL_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) ?
+ XGL_IMAGE_STATE_UNINITIALIZED_TARGET : XGL_IMAGE_STATE_DATA_TRANSFER;
+
+ cmd_.begin();
+ xglCmdCloneImageData(cmd_.obj(), src.obj(), state, dst.obj(), state);
+ cmd_.end();
+
+ submit_and_done();
+
+ // cannot verify
+ if (!dst.transparent() && !dst.copyable())
+ return;
+
+ check_dst(dst, checker);
+ }
+};
+
+TEST_F(XglCmdCloneImageDataTest, Basic)
+{
+ for (std::vector<xgl_testing::Device::Format>::const_iterator it = test_formats_.begin();
+ it != test_formats_.end(); it++) {
+ // not sure what to do here
+ if (it->format.channelFormat == XGL_CH_FMT_UNDEFINED ||
+ (it->format.channelFormat >= XGL_CH_FMT_BC1 &&
+ it->format.channelFormat <= XGL_CH_FMT_BC7) ||
+ it->format.numericFormat == XGL_NUM_FMT_DS)
+ continue;
+
+ XGL_IMAGE_CREATE_INFO img_info = xgl_testing::Image::create_info();
+ img_info.imageType = XGL_IMAGE_2D;
+ img_info.format = it->format;
+ img_info.extent.width = 64;
+ img_info.extent.height = 64;
+ img_info.tiling = it->tiling;
+ img_info.flags = XGL_IMAGE_CREATE_CLONEABLE_BIT;
+
+ const XGL_IMAGE_SUBRESOURCE_RANGE range =
+ xgl_testing::Image::subresource_range(XGL_IMAGE_ASPECT_COLOR, img_info);
+ std::vector<XGL_IMAGE_SUBRESOURCE_RANGE> ranges(&range, &range + 1);
+
+ test_clone_image_data(img_info);
+ }
+}
+
class XglCmdClearColorImageTest : public XglCmdBlitImageTest {
protected:
XglCmdClearColorImageTest() : test_raw_(false) {}