0
votes

I used DDS (DXT5)till now for fast load of texture data.Now,I read that since OpenGL 4.3 (and for ES2) the compressed standard is KTX(ETC1/ETC2).I integrated the Khronos libktx SDK and bench-marked. Updating texture using glCompressedTexSubImage2D for 3000 times the results are:

DDS: 1450 - millisecond

KTX - forever....

Actually, running a loop of only 300 times updating KTX, the total time already reaches 24 seconds!

Now I have 2 questions:

  1. Is this the expected speed of KTX?

  2. if the answer to the first question is "YES" then what is the advantage of ETC except of smaller file size than that of DDS?

I use OpenGL 4.3 with Quadro4000 GPU.

1
"I read that since OpenGL 4.3 (and for ES2) the compressed standard is KTX(ETC1/ETC2)." Don't believe everything you read. Especially if it's on the "OpenGL SDK" site. KTX is in no way a "standard". - Nicol Bolas
Also, KTX is only a file format. It can hold S3TC compressed formats just fine, as well as uncompressed formats. - Nicol Bolas
S3TC is what I am using. Its update is extremely slow compared to DDS DXT compressed textures I use. - Michael IV
If the files contain the same data, then post some code. Obviously, the problem lies in the code used to get the data, not the code that uploads it (since that's the same, right?). - Nicol Bolas
Well,the code is from Khronos ktxlib...Will post it anyway - Michael IV

1 Answers

0
votes

I asked this question on Khronos KTX forum.Here is the answer I got from the forum moderator:

I have been told by the NVIDIA OpenGL driver team that the Quadro 4000 does not support ETC in hardware while it does support DXTC. This means the ETC-compressed images will be decompressed by the OpenGL driver in software then loaded into GPU memory while the DXTC-compressed images will simply be loaded into GPU memory. I believe that is the source of the performance difference you are observing.

So it seems like my card's hardware doesn't support ETC.