I'll take a look at Compressonator soon. I would hope that the command line version is fixed by now, the current incompatibility with the script may just be as simple as some flags changes.
It is normal for DDS files to be larger in size than PNG textures. DDS compression is designed to be most optimal in VRAM. The GPU can use compressed DDS textures directly. File sizes match the same size as they are when loaded into VRAM (+128KB for D3D9 textures, 148KB for D3D11 textures). PNG compression is designed to be most optimal for file size and must be decoded when loaded into VRAM. This is slow and it's why PNG textures can cause stuttering.
If you want a better understanding, it helps to understand how sizes can be calculated. Pixels must be decoded into a format that the GPU understands. To calculate PNG size (or uncompressed DDS) in VRAM, you can multiply the (width * height * channels). Three channels for an RGB texture, four channels when alpha is added for RGBA. Take a 1024x1024 RGBA for example. Even if it's only a 648 KB image, this is not the size in VRAM.
1024 * 1024 * 4 = 4194304 Bytes (4 MB) - This is much larger than 648 KB.
Depending on the block compression type, the resulting size of DDS can vary. For most types, you can assume 1 pixel = 1 byte so simply multiply (width * height) except in BC1 and BC4 where 1 pixel = 0.5 byte so its (width * height / 2). So using the same 1024x1024 texture compressed as either BC1 or BC7...
BC1: 1024 * 1024 / 2 = 524288 Bytes (0.5 MB)
BC7: 1024 * 1024 = 1048576 Bytes (1 MB)
Even though the BC7 texture will be 1MB on disk, which is larger than the PNG at 648KB, it is 1/4 the size in VRAM.
It is normal for DDS files to be larger in size than PNG textures. DDS compression is designed to be most optimal in VRAM. The GPU can use compressed DDS textures directly. File sizes match the same size as they are when loaded into VRAM (+128KB for D3D9 textures, 148KB for D3D11 textures). PNG compression is designed to be most optimal for file size and must be decoded when loaded into VRAM. This is slow and it's why PNG textures can cause stuttering.
If you want a better understanding, it helps to understand how sizes can be calculated. Pixels must be decoded into a format that the GPU understands. To calculate PNG size (or uncompressed DDS) in VRAM, you can multiply the (width * height * channels). Three channels for an RGB texture, four channels when alpha is added for RGBA. Take a 1024x1024 RGBA for example. Even if it's only a 648 KB image, this is not the size in VRAM.
1024 * 1024 * 4 = 4194304 Bytes (4 MB) - This is much larger than 648 KB.
Depending on the block compression type, the resulting size of DDS can vary. For most types, you can assume 1 pixel = 1 byte so simply multiply (width * height) except in BC1 and BC4 where 1 pixel = 0.5 byte so its (width * height / 2). So using the same 1024x1024 texture compressed as either BC1 or BC7...
BC1: 1024 * 1024 / 2 = 524288 Bytes (0.5 MB)
BC7: 1024 * 1024 = 1048576 Bytes (1 MB)
Even though the BC7 texture will be 1MB on disk, which is larger than the PNG at 648KB, it is 1/4 the size in VRAM.