В основном цикле по мип уровням в CreateTexture() у тебя после уменьшении размера проверяется, чтобы размер не оказался 0 (если начиная с некоторого мип уровня одна из сторон оказывается 0, то этот размер заменяется на 1). Но в цикле, в котором пропускаются первые мип уровни для флагов TLF_DECREASEQUALITY*, такой проверки нет.
В основном цикле по мип уровням в CreateTexture() у тебя после уменьшении размера проверяется, чтобы размер не оказался 0 (если начиная с некоторого мип уровня одна из сторон оказывается 0, то этот размер заменяется на 1). Но в цикле, в котором пропускаются первые мип уровни для флагов TLF_DECREASEQUALITY*, такой проверки нет.