Minetest using RTTI, so we cannot apply the flag here
if we want to start using IPO/LTO.
If we keep `-fno-rtti` here, compiler loses part of informations and
cannot do efficient optimizations.
The benefit of using RTTI on Irrlicht disappears with IPO/LTO on whole binary.
Signed-off-by: David Heidelberg <david@ixit.cz>
The size of a mip map is `max{floor(width / 2 ^ level), 1} x max{floor(height / 2 ^ level), 1}`,
where `width x height` is the size of the full-resolution image,
`level` is the integer mip map level
and the smallest mip map has `1 x 1` resolution.
If `regenerateMipMapLevels` is called with custom mip map data,
the mip map sizes are calculated in this function and separately in `uploadTexture`.
`uploadTexture` calculates a size by `floor(width / 2 ^ level) x floor(height / 2 ^ level)`.
To support non-square textures, after this change,
`uploadTexture` sets the mip map width or height to `1` if it is `0`.
The irrString implementation doesn't allow constructing a string with a
size that would exceed a u32, so it should be safe to narrow the size of
the underlying STL container back to a u32.
This fixes 5 narrowing cast warnings from Visual Studio 17 2022.