<p>Because memory bandwidth is not free.</p>

<p>No matter how much RAM you have, it takes less time to read 1024 bytes than it does to read 1024 KB. Compressed textures, relative to 32-bpp, can offer compression ratios of 4:1 or better. That's at least one quarter of the memory bandwidth costs of fetching the texture.</p>

<p>If your rendering uses lots of textures, reducing bandwidth pressure can improve performance.</p>

<p>Alternatively, the more memory you have available, the more memory you can <em>use</em>. If you consider 1GB to be "plenty of memory", then using compressed textures allows you to store the equivalent of maybe 2-3GB worth of textures. So now your textures can be larger, more detailed, or more varied, all within the same "plenty of memory" space. Or you can use some of that reclaimed storage for more meshes.</p>

<p>There's <em>never</em> enough memory; there's only a question of how much you're willing/able to use.</p>

CC BY-SA 4.0
2018-05-04T13:57:42.957Z
2018-05-04T16:16:49.260Z
2018-05-04T16:16:49.260Z
Nicol Bolas
<p>I'm wondering whether some of you would have tested and seen quite a difference in using a compressed texture even when the OpenGL environment does not need saving any memory (i.e. the card has more memory than necessary to support the textures uncompressed.)</p>

<p>I'm thinking that a compressed texture would use less RAM and thus reading it and decompressing in the GPU would be faster because the number of memory accesses is lower. Whereas, a non-compressed texture would rely more on memory access (GPU I/O) than processing and that is likely slower.</p>

<p>The main things I've read about texture compression has been about how the compression saves space. Not so much about how it can save execution time with the GPU. (Note that I specifically will be using an nVidia, Pascal for now. But I would hope that it works similarly whatever the GPU.)</p>

CC BY-SA 4.0
2018-05-04T02:15:06.347Z
Based on opeGLES (mobile) i have benchmarked compressed textures (ETC1) to be faster than their RGB888 equivalents, I guess this is, as you say, due to lower memory bandwidth.
PaulHK
CC BY-SA 4.0
2018-05-04T11:09:09.173Z
It's going to be a trade off depending on whether you are memory bound or not.
ratchet freak
<opengl><texture><gpu><opengl-es><compression>
If I have more than enough memory, can it still be beneficial to use compressed textures?
Alexis Wilke
# If I have more than enough memory, can it still be beneficial to use compressed textures?

(Asked by: username_0 on 2018-05-03)

I'm wondering whether some of you would have tested and seen quite a difference in using a compressed texture even when the OpenGL environment does not need saving any memory (i.e. the card has more memory than necessary to support the textures uncompressed.)

I'm thinking that a compressed texture would use less RAM and thus reading it and decompressing in the GPU would be faster because the number of memory accesses is lower. Whereas, a non-compressed texture would rely more on memory access (GPU I/O) than processing and that is likely slower.

The main things I've read about texture compression has been about how the compression saves space. Not so much about how it can save execution time with the GPU. (Note that I specifically will be using an nVidia, Pascal for now. But I would hope that it works similarly whatever the GPU.)

**Tags:** opengl, texture, gpu, opengl-es, compression

> **Comments:**
> **username_1**: Based on opeGLES (mobile) i have benchmarked compressed textures (ETC1) to be faster than their RGB888 equivalents, I guess this is, as you say, due to lower memory bandwidth.  
> **username_2**: It's going to be a trade off depending on whether you are memory bound or not.  

---

## 1 answers

### Answer by username_3 on 2018-05-04. Score: 4 | Accepted answer

Because memory bandwidth is not free.

No matter how much RAM you have, it takes less time to read 1024 bytes than it does to read 1024 KB. Compressed textures, relative to 32-bpp, can offer compression ratios of 4:1 or better. That's at least one quarter of the memory bandwidth costs of fetching the texture.

If your rendering uses lots of textures, reducing bandwidth pressure can improve performance.

Alternatively, the more memory you have available, the more memory you can *use*. If you consider 1GB to be "plenty of memory", then using compressed textures allows you to store the equivalent of maybe 2-3GB worth of textures. So now your textures can be larger, more detailed, or more varied, all within the same "plenty of memory" space. Or you can use some of that reclaimed storage for more meshes.

There's *never* enough memory; there's only a question of how much you're willing/able to use.


---

