axmol/tests/cpp-tests/Classes/PerformanceTest/PerformanceTextureTest.cpp

298 lines
8.2 KiB
C++

#include "PerformanceTextureTest.h"
USING_NS_CC;
PerformceTextureTests::PerformceTextureTests()
{
ADD_TEST_CASE(TexturePerformceTest);
}
static float calculateDeltaTime( struct timeval *lastUpdate )
{
struct timeval now;
gettimeofday( &now, nullptr);
float dt = (now.tv_sec - lastUpdate->tv_sec) + (now.tv_usec - lastUpdate->tv_usec) / 1000000.0f;
return dt;
}
////////////////////////////////////////////////////////
//
// TexturePerformceTest
//
////////////////////////////////////////////////////////
void TexturePerformceTest::performTestsPNG(const char* filename)
{
struct timeval now;
Texture2D *texture;
auto cache = Director::getInstance()->getTextureCache();
Texture2D::PixelFormat defaultFormat = Texture2D::getDefaultAlphaPixelFormat();
log("RGBA 8888");
Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGBA8888);
gettimeofday(&now, nullptr);
texture = cache->addImage(filename);
if( texture )
log(" ms:%f", calculateDeltaTime(&now) );
else
log(" ERROR");
cache->removeTexture(texture);
log("RGBA 4444");
Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGBA4444);
gettimeofday(&now, nullptr);
texture = cache->addImage(filename);
if( texture )
log(" ms:%f", calculateDeltaTime(&now) );
else
log(" ERROR");
cache->removeTexture(texture);
log("RGBA 5551");
Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGB5A1);
gettimeofday(&now, nullptr);
texture = cache->addImage(filename);
if( texture )
log(" ms:%f", calculateDeltaTime(&now) );
else
log(" ERROR");
cache->removeTexture(texture);
log("RGB 565");
Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGB565);
gettimeofday(&now, nullptr);
texture = cache->addImage(filename);
if( texture )
log(" ms:%f", calculateDeltaTime(&now) );
else
log(" ERROR");
cache->removeTexture(texture);
Texture2D::setDefaultAlphaPixelFormat(defaultFormat);
}
void TexturePerformceTest::performTests()
{
// Texture2D *texture;
// struct timeval now;
// auto cache = Director::getInstance()->getTextureCache();
log("--------");
log("--- PNG 128x128 ---");
performTestsPNG("Images/test_image.png");
// log("--- PVR 128x128 ---");
// log("RGBA 8888");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/test_image_rgba8888.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("BGRA 8888");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/test_image_bgra8888.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/test_image_rgba4444.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("RGB 565");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/test_image_rgb565.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
log("--- PNG 512x512 ---");
performTestsPNG("Images/texture512x512.png");
// log("--- PVR 512x512 ---");
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/texture512x512_rgba4444.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// ---- 1024X1024
// RGBA4444
// Empty image
//
log("EMPTY IMAGE");
log("--- PNG 1024x1024 ---");
performTestsPNG("Images/texture1024x1024.png");
// log("--- PVR 1024x1024 ---");
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/texture1024x1024_rgba4444.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("--- PVR.GZ 1024x1024 ---");
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/texture1024x1024_rgba4444.pvr.gz");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("--- PVR.CCZ 1024x1024 ---");
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/texture1024x1024_rgba4444.pvr.ccz");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// ---- 1024X1024
// RGBA4444
// SpriteSheet images
//
log("SPRITESHEET IMAGE");
log("--- PNG 1024x1024 ---");
performTestsPNG("Images/PlanetCute-1024x1024.png");
// log("--- PVR 1024x1024 ---");
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/PlanetCute-1024x1024-rgba4444.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("--- PVR.GZ 1024x1024 ---");
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/PlanetCute-1024x1024-rgba4444.pvr.gz");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("--- PVR.CCZ 1024x1024 ---");
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/PlanetCute-1024x1024-rgba4444.pvr.ccz");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// ---- 1024X1024
// RGBA8888
// Landscape Image
//
log("LANDSCAPE IMAGE");
log("--- PNG 1024x1024 ---");
performTestsPNG("Images/landscape-1024x1024.png");
// log("--- PVR 1024x1024 ---");
// log("RGBA 8888");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/landscape-1024x1024-rgba8888.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("--- PVR.GZ 1024x1024 ---");
// log("RGBA 8888");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/landscape-1024x1024-rgba8888.pvr.gz");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("--- PVR.CCZ 1024x1024 ---");
// log("RGBA 8888");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/landscape-1024x1024-rgba8888.pvr.ccz");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// 2048x2048
// RGBA444
//
// most platform don't support texture with width/height is 2048
// log("--- PNG 2048x2048 ---");
// performTestsPNG("Images/texture2048x2048.png");
// log("--- PVR 2048x2048 ---");
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/texture2048x2048_rgba4444.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
}
void TexturePerformceTest::onEnter()
{
TestCase::onEnter();
performTests();
}
std::string TexturePerformceTest::title() const
{
return "Texture Performance Test";
}
std::string TexturePerformceTest::subtitle() const
{
return "See console for results";
}