0
\$\begingroup\$

I have 3 related questions:

  1. What are the main optimizations related to power of 2 dimensions for 1D/2D/3D textures? This question gives some answers like mipmapping, but are not well explained and the list of optimizations does not seem to be complete. I want a complete ordered list from most important to less of the optimizations with complete explanations, with references replacing full explanations only where full explanation would overwhelming, and proper references (paper/graphics official page [OpenGL/Vulkan/CUDA]) for every statement about explained optimization. When the comparation is not direct, take a guess based on the one that would improve overall performance most in majority of computer graphics applications. Furthermore I want to specify which of this optimizations are available at least for OpenGL and CUDA. More specifications would be acclaimed.

  2. What benefits exists for divisible by 8 dimensions? This article states the rule as an alternative/complement to the power of 2 one but does not give explanations nor references.

  3. Is there any benefit for divisibility by a larger number? This article uses divisible by 32 dimensions. I know that CUDA has a warp size of 32 and that blocks should be multiple of 32 to have a good overall average utilization, but I do not know if this could be related to texture sizes and would like to know if the answer is no.

In many places posibilities for texture optimization are loosely stated and not properly documentated. This question aims at solving this issue.

\$\endgroup\$
  • 4
    \$\begingroup\$ Please bear in mind that you're here sharing with a community of peers, not giving orders to paid research assistants. Demanding a complete list of every relevant optimization detailed without external reference is a lot of exhaustive research and writing to ask of an unpaid volunteer. And how would the community evaluate whether such a list is absolutely complete or correctly ordered, that there's no possible hardware configuration which includes an extra optimization or different priorities? You may have better luck asking about a specific bottleneck you've observed in your profiling. \$\endgroup\$ – DMGregory Dec 27 '19 at 15:19
  • \$\begingroup\$ An answer to this question would be very useful because current documentation and answers leave a knowledge gap and ambiguities in the models we have about computer graphics. My plan is to give bounty to this question and to answer it if too much time passes without a good enough answer. \$\endgroup\$ – Matias Haeussler Dec 28 '19 at 16:25
  • 2
    \$\begingroup\$ Seconding @DMGregory - your request in #1 would probably fail the "would it take an entire book to answer?" rule of thumb. Also bear in mind that this kind of thing is a moving target as hardware evolves; e.g. it might have been the case that powers-of-two might have been more optimal in the past because certain operations might be possible by simple bitwise ops, but that might no longer hold true on modern hardware, and might be completely different again in 5 years time. \$\endgroup\$ – Maximus Minimus Dec 30 '19 at 12:20
  • \$\begingroup\$ "It might have been the case that powers-of-two might have been more optimal in the past because certain operations might be possible by simple bitwise ops, but that might no longer hold true on modern hardware, and might be completely different again in 5 years time." - That would actually be good information that I have not seen until now. \$\endgroup\$ – Matias Haeussler Dec 30 '19 at 12:53
  • \$\begingroup\$ @MatiasHaeussler - I would counter-argue that it's useless information because of the fact that it was different in the past and might be different again in the future. You can't rely on it, in other words. The only thing you can rely on is to test both, get benchmark figures, and optimize accordingly for your target hardware. That's what everybody who doesn't have access to private info from hardware vendors does. \$\endgroup\$ – Maximus Minimus Dec 30 '19 at 13:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.