I know as the benefit of using compressed texture is reducing memory usage and bandwidth when the texture is uploaded on the Mali.
For comparing between uncompressed and compressed, I measured the duration of glDrawElements() for each format
start = GfxPerfGetMSec();glDrawElements(GL_TRIANGLES, cnt * 6, GL_UNSIGNED_BYTE, 0);glFinish();end = GfxPerfGetMSec();
start = GfxPerfGetMSec();
glDrawElements(GL_TRIANGLES, cnt * 6, GL_UNSIGNED_BYTE, 0);
end = GfxPerfGetMSec();
Because the uploaded compressed texture data size in GPU is less than the uploaded uncompressed texture data size in GPU like below
I think that the performance of using compressed texture data should be better than the performance of using uncompressed texture.
But the result is that the performance decreases when using compressed texture.
Surely, each GPU architecture is different each vendor
But, When other vendor's GPU uses the compressed texture, the performance is improved dramatically(same test)
Although Mali need more resource(compute, decompressing) for decompressing, I think that it should be processed fast and improved slightly than using uncompressed texture.
Also Because the Mali processes the compressed texture in HW, i think that it can process the compressed texture quickly
Could you explain why the performance of using compressed texture on Mali decrease?
I suspect you're not measuring what you think you're measuring. 200MP/s isn't particularly high, so I suspect the way you have written your benchmark is not using the GPU as you expect. Try using the Streamline profiler to measure performance counters from the GPU to check the workload s what you expect.
Do you think that my benchmark app is wrong to measure compressed texture
and Should I use Streamline for measuring the performance of compressed texture?
If so, i don't understand why the performance of compressed texture increases on other GPU when using same benchmark app
(Surely, i know that each GPU have different Architecture, The method of operation and feature)
I think that in order to accurately measure the benefits of compressed textures, it need to measure the part where it upload the textures(glTexImage2D() or glCompressedTexImage2D()).
But, because the data size which should be processed in GPU internally also decreases for compressed texture anyway, i think what i measure the performance of glDrawElements can be also benchmark. is it right?
> Do you think that my benchmark app is wrong to measure compressed texture
The data you have presented doesn't make sense, so something is wrong, yes. Mobile GPUs can definitely render more than 200MP/s (that's less than 1440p60 for a single layer blit, and modern GPUs can definitely do more than that).
Timing single draw calls with glFinish after them is timing more than just the draw - it's also timing the write of the framebuffer back to memory (which is much larger than your original input data, so any bandwidth limitations are more likely to be on output, not input). I don't know what platform you are on, but in general serializing draws with e.g. glFinish also completely breaks mobile power management as the GPU will go idle between submissions.