Thursday, 13 March 2014

etcpak 0.2.2

This version contains some minor performance improvements and a benchmark mode, which can be activated using the -b parameter. It will perform 50 compression passes and print out the average time for one pass. It should provide better environment for measurements, as the PNG decode is the slowest component during normal operation.

I've also made an example 8192x8192 image available for test purposes. It is based on the Carina Nebula shot from Hubble.

For comparison, here's the previous method of speed measurement, heavily influenced by the PNG decoder:
$ time etcpak.exe 8192.png

real    0m1.471s
user    0m0.000s
sys     0m0.030s
And here's the new benchmark mode:
$ etcpak.exe 8192.png -b
Image load time: 1330.949 ms
Mean compression time for 50 runs: 631.308 ms

Download: https://bitbucket.org/wolfpld/etcpak/downloads

4 comments:

rSix said...

Hi! To be clear, this tool only generates PVR formatted textures, and not ETC1 textures (PKM header/data), correct?

Bartosz Taudul said...

Yes, only a minimum PVR header is supported currently. Implementing a PKM header should be trivial enough:
1. Modify the header size (magic number 52) to a value appropiate for PKM format (16).
2. Change the OpenForWriting() function to fill the correct data (http://www.mhgames.org/2012/03/android-development-loading-etc1-textures-from-ndk/ for reference).

All the changes should be done in BlockData.cpp.

Katatunix said...

Hi,

does this tool support ETC2 format?

Bartosz Taudul said...

All ETC1 images are also ETC2 images. etcpak is not able to generate blocks exclusive to ETC2.