From 3c9a56d4e6ce94f0f6131574362fa1e43d9f85ff Mon Sep 17 00:00:00 2001 From: Paul Lemire Date: Mon, 14 Oct 2019 10:18:18 +0200 Subject: [PATCH] Add unit tests for KTX loading Change-Id: I3e80497d107329f250bd524a02157c6246e36e68 Reviewed-by: Mike Krus --- tests/auto/render/ktxtextures/data/16_16.png | Bin 0 -> 346 bytes .../ktxtextures/data/16_16_PNG_ASTC_7.KTX | Bin 0 -> 324 bytes .../ktxtextures/data/16_16_PNG_ASTC_8.KTX | Bin 0 -> 324 bytes .../data/16_16_PNG_ETC2_RGBA_11.KTX | Bin 0 -> 324 bytes .../data/16_16_PNG_ETC2_RGB_13.KTX | Bin 0 -> 196 bytes .../ktxtextures/data/16_16_PNG_ETC_RGB_12.KTX | Bin 0 -> 196 bytes tests/auto/render/ktxtextures/ktxtextures.pro | 39 +++++++++ .../render/ktxtextures/tst_ktxtextures.cpp | 75 ++++++++++++++++++ tests/auto/render/render.pro | 1 + 9 files changed, 115 insertions(+) create mode 100644 tests/auto/render/ktxtextures/data/16_16.png create mode 100644 tests/auto/render/ktxtextures/data/16_16_PNG_ASTC_7.KTX create mode 100644 tests/auto/render/ktxtextures/data/16_16_PNG_ASTC_8.KTX create mode 100644 tests/auto/render/ktxtextures/data/16_16_PNG_ETC2_RGBA_11.KTX create mode 100644 tests/auto/render/ktxtextures/data/16_16_PNG_ETC2_RGB_13.KTX create mode 100644 tests/auto/render/ktxtextures/data/16_16_PNG_ETC_RGB_12.KTX create mode 100644 tests/auto/render/ktxtextures/ktxtextures.pro create mode 100644 tests/auto/render/ktxtextures/tst_ktxtextures.cpp diff --git a/tests/auto/render/ktxtextures/data/16_16.png b/tests/auto/render/ktxtextures/data/16_16.png new file mode 100644 index 0000000000000000000000000000000000000000..aefb48dc4f5a9fc74a12ce71bb8b02d9a3cabf0d GIT binary patch literal 346 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!S|jnjv*HQ$v^5R^{X8D@PEPQ|Gl&St+(cM zayYh6z(h2ogK^!j2fvmEN^ictW;W~9o`vU`hC-A#yNR?eXBBFuYlv>z2gdfJlaI9gJ z2#8MizbnX4#J|c!jVb%a4%t^pJqfIlyDxwLKd)p5M+CEh#)Ew>Tw)4MEj%7FYE0J{ zxFZD)afq3;d@z~Fv5@h}o!EC1I___(yLW|mFGu#oKW!Hp3f}FS>~QskA;)LwRg)*! pGCK#{PN-9U!@lCIz&lSnh6}sjUh4ela|`Ho22WQ%mvv4FO#m5sh(rJY literal 0 HcmV?d00001 diff --git a/tests/auto/render/ktxtextures/data/16_16_PNG_ASTC_7.KTX b/tests/auto/render/ktxtextures/data/16_16_PNG_ASTC_7.KTX new file mode 100644 index 0000000000000000000000000000000000000000..953f300adb989cb8f964e74b1822ab32d4a2becb GIT binary patch literal 324 zcmZ4O9TK5nXtDK-`CWWp&(@2xe)#|4KgbNHPg8Ps7g{f6;8$Q^ z2k~FYD(7!DZ~w{9%fJWXdoes-&m7qXWZq=>&#=uYOZ21Vzw)_2ejvkc2CF}R|3ksa zlYD&t|2r`?H*ePkDZk5gm-jBK(<=7Ihn3(sQXCKpJ2mq=Fx(5Jo8gD=V literal 0 HcmV?d00001 diff --git a/tests/auto/render/ktxtextures/data/16_16_PNG_ASTC_8.KTX b/tests/auto/render/ktxtextures/data/16_16_PNG_ASTC_8.KTX new file mode 100644 index 0000000000000000000000000000000000000000..4c23241e4225bccff9fb4f8b9464ce132d2985f9 GIT binary patch literal 324 zcmZ4O9TK5nXt9&AORSHr{dk6S{4oCX$)Nd^%8K!d^H#hgEX|3ksalYD&t z{|8>u(YfcLsOcKc?V+kPA7k-D X;YMJQ^_#~&iYxgU8aNb`CU5}&8ct>~ literal 0 HcmV?d00001 diff --git a/tests/auto/render/ktxtextures/data/16_16_PNG_ETC2_RGBA_11.KTX b/tests/auto/render/ktxtextures/data/16_16_PNG_ETC2_RGBA_11.KTX new file mode 100644 index 0000000000000000000000000000000000000000..01646e99aa443aab3b7f6d11ff20917ef48ce14b GIT binary patch literal 324 zcmZ4O9TK5nXtGh*7MQxJ}^kY`8-=}{=YjS z$O2Q(dVbY+Mg~Sf1YhRUe-MD$-}m}yRk=aOei%RYbzjy08UIhh_^ju>%as@m;pVfR zpZy)^erA|_-|MND3>e$_DPXFeD6ERuOw|KEp!^?dZa4-66vJX>u3zdItx!g_wycSZ(A zLDus!pZ)_u-|MGUfZ_dr-}Sto Zmv4})Ph2fpz5IoxY2ljl4*xqCv;nGrL>K@7 literal 0 HcmV?d00001 diff --git a/tests/auto/render/ktxtextures/data/16_16_PNG_ETC_RGB_12.KTX b/tests/auto/render/ktxtextures/data/16_16_PNG_ETC_RGB_12.KTX new file mode 100644 index 0000000000000000000000000000000000000000..15e30abc8c938efb765500fb80f4ce08a17a1527 GIT binary patch literal 196 zcmZ4O9TK5nXtK|M!<$?kfNchZ8l9ryfq{P&JQ zP~gB1CXkt)yZ?K1^miCE?)mTV{{};c(COa{3jhBwm>l@w#PElKN#MX=HUpr#sjK&U ZuIP3zUbgyNW=D66Tj84X4*xqCv;l^(Knef= literal 0 HcmV?d00001 diff --git a/tests/auto/render/ktxtextures/ktxtextures.pro b/tests/auto/render/ktxtextures/ktxtextures.pro new file mode 100644 index 000000000..9e7affb5e --- /dev/null +++ b/tests/auto/render/ktxtextures/ktxtextures.pro @@ -0,0 +1,39 @@ +TEMPLATE = app + +TARGET = tst_ktxtextures + +CONFIG += testcase + +SOURCES += tst_ktxtextures.cpp + +OTHER_FILES = \ + data/16x16x1-1-bc1.dds \ + data/16x16x1-1-bc1-dx10.dds \ + data/16x16x1-1-bc1-nomips.dds \ + data/16x16x1-1-bc1-nomips-dx10.dds \ + data/16x16x1-1-bc3.dds \ + data/16x16x1-1-bc3-dx10.dds \ + data/16x16x1-1-bc3-nomips.dds \ + data/16x16x1-1-bc3-nomips-dx10.dds \ + data/16x16x1-1-lumi.dds \ + data/16x16x1-1-lumi-nomips.dds \ + data/16x16x1-1-rgb.dds \ + data/16x16x1-1-rgb-nomips.dds \ + data/16x16x1-6-bc1.dds \ + data/16x16x1-6-bc1-dx10.dds \ + data/16x16x1-6-bc1-nomips.dds \ + data/16x16x1-6-bc1-nomips-dx10.dds \ + data/16x16x1-6-bc3.dds \ + data/16x16x1-6-bc3-dx10.dds \ + data/16x16x1-6-bc3-nomips.dds \ + data/16x16x1-6-bc3-nomips-dx10.dds \ + data/16x16x1-6-lumi.dds \ + data/16x16x1-6-lumi-nomips.dds \ + data/16x16x1-6-rgb.dds \ + data/16x16x1-6-rgb-nomips.dds \ + data/16x16-etc1.pkm \ + data/16x16-etc2.pkm + +TESTDATA = data/* + +QT += core-private 3dcore 3dcore-private 3drender 3drender-private testlib diff --git a/tests/auto/render/ktxtextures/tst_ktxtextures.cpp b/tests/auto/render/ktxtextures/tst_ktxtextures.cpp new file mode 100644 index 000000000..57ccd3652 --- /dev/null +++ b/tests/auto/render/ktxtextures/tst_ktxtextures.cpp @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2019 Klaralvdalens Datakonsult AB (KDAB). +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt3D module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include + +class tst_KtxTextures : public QObject +{ + Q_OBJECT + +private slots: + void ktxImageData(); +}; + +void tst_KtxTextures::ktxImageData() +{ + const struct TextureInfo { + const char *source; + int width; + int height; + int depth; + int faces; + int mipmapLevels; + QOpenGLTexture::TextureFormat format; + } textures[] = { + { "data/16_16_PNG_ASTC_7.KTX", 16, 16, 1, 1, 1, QOpenGLTexture::RGBA_ASTC_4x4 }, + { "data/16_16_PNG_ASTC_8.KTX", 16, 16, 1, 1, 1, QOpenGLTexture::RGBA_ASTC_4x4 }, + { "data/16_16_PNG_ETC2_RGB_13.KTX", 16, 16, 1, 1, 1, QOpenGLTexture::RGB8_ETC2 }, + { "data/16_16_PNG_ETC2_RGBA_11.KTX", 16, 16, 1, 1, 1, QOpenGLTexture::RGBA8_ETC2_EAC }, + { "data/16_16_PNG_ETC_RGB_12.KTX", 16, 16, 1, 1, 1, QOpenGLTexture::RGB8_ETC1 }, + }; + + for (unsigned i = 0; i < sizeof(textures)/sizeof(*textures); i++) { + const TextureInfo *texture = &textures[i]; + + Qt3DRender::QTextureImageDataPtr data = Qt3DRender::TextureLoadingHelper::loadTextureData(QUrl::fromLocalFile(QFINDTESTDATA(texture->source)), true, false); + + QVERIFY(data); + QCOMPARE(data->width(), texture->width); + QCOMPARE(data->height(), texture->height); + QCOMPARE(data->faces(), texture->faces); + QCOMPARE(data->mipLevels(), texture->mipmapLevels); + QCOMPARE(data->format(), texture->format); + } +} + +QTEST_APPLESS_MAIN(tst_KtxTextures) + +#include "tst_ktxtextures.moc" diff --git a/tests/auto/render/render.pro b/tests/auto/render/render.pro index 786d8050f..180ff7ac1 100644 --- a/tests/auto/render/render.pro +++ b/tests/auto/render/render.pro @@ -41,6 +41,7 @@ qtConfig(private_tests) { # qboundingvolumedebug \ # boundingvolumedebug \ ddstextures \ + ktxtextures \ shadercache \ layerfiltering \ filterentitybycomponent \