Mipmaps are an important technique used in computer graphics to lower the cost of rendering high resolution textures at oblique/glancing angles or great distances. They store progressively smaller, filtered versions of the main, higher resolution texture. As the size of a surface in real screen pixels becomes smaller, a higher mipmap level is used, resulting in both a reduction in visible aliasing (due to containing an average of the higher resolution texture contents) and an increase in performance (as the lower-resolution mipmaps fit better into the GPU cache, increasing rendering throughput).
Mipmaps are great! Unity enables mipmaps by default. On PC, they're essential if you use large textures. And on Quest, having mipmaps can have a big positive impact on performance!
However, mipmaps cost a small amount of memory, and it has become commonplace for people who do not understand or care about the performance implications to recommend disabling mipmaps to save on memory, thus causing the GPU cache to be thrashed and various other negative effects.
As the SDK currently recommends people reduce their avatars' memory usage by any means necessary, it's created this incentive to disable an important performance optimization. The solution I propose is for the SDK to also provide feedback and some light restraints on mipmap settings.
However, it should not force the usage of mipmaps for all textures, as there are many important cases where mipmaps are not useful or harmful due to their extra data not being necessary, or causing calculations to become inaccurate.
For instance, a common technique in both stylised cel shaders and realistic shaders is to use look-up textures for things like toon lighting ramps, specular/fresnel distributions, and other types of data which does not benefit from mipmapping. For advanced users, textures are really just a data source, and mipmaps are wasted if data you're reading doesn't benefit from them.
Also, this proposal is geared entirely towards avatars. While worlds are technically not any different from avatars in how mipmaps affect things, individual avatars will always use unique textures, while only one world exists at a time.
Here is what I recommend:
### On PC:
Show a Warning if a texture meets all of the following conditions
  1. is above a size threshold (suggested: 256x256)
  2. does not have mipmapping enabled
  3. is not a render texture, custom render texture, or similar
Show an Error if a texture meets all of the following conditions
  1. is assigned to a texture slot with the following name: _MainTex, _MetallicGlossMap, _BumpMap, _ParallaxMap, _OcclusionMap, _EmissionMap, _DetailMask, _DetailAlbedoMap, _DetailNormalMap
  2. is above a size threshold (suggested: 1024x1024)
  3. does not have mipmapping enabled
### On Quest/Mobile/Android:
Show a Warning if a texture meets all of the following conditions
  1. is above a size threshold (suggested: 256x256)
  2. does not have mipmapping enabled
Show an Error if a texture meets all of the following conditions
  1. is above a size threshold (suggested: 512x512)
  2. does not have mipmapping enabled
The PC recommendations are designed to be permissive, and only stop users from using textures without mipmapping in places that would cause issues under normal circumstances. It can't cover all cases, but it shouldn't try. Render textures are excluded from the warnings as they require mipmaps to be generated at runtime, which has its own performance impact.
The Android recommendations are a bit more heavy handed, as custom shaders don't exist for Android avatars and the performance impact is more notable.
Thanks for reading!