From c568c51408bb538ae27ddef16d5c8aefe1fabc6f Mon Sep 17 00:00:00 2001 From: walbourn_cp Date: Fri, 11 Jul 2014 16:57:54 -0700 Subject: [PATCH] DirectXTex: GenerateMips fails if asked to not generate any mips --- DirectXTex/DirectXTexMipmaps.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/DirectXTex/DirectXTexMipmaps.cpp b/DirectXTex/DirectXTexMipmaps.cpp index c8e8e2c..23e7a62 100644 --- a/DirectXTex/DirectXTexMipmaps.cpp +++ b/DirectXTex/DirectXTexMipmaps.cpp @@ -2489,6 +2489,9 @@ HRESULT GenerateMipMaps( const Image& baseImage, DWORD filter, size_t levels, Sc if ( !_CalculateMipLevels(baseImage.width, baseImage.height, levels) ) return E_INVALIDARG; + if ( levels <= 1 ) + return E_INVALIDARG; + if ( IsCompressed(baseImage.format) || IsTypeless(baseImage.format) || IsPlanar(baseImage.format) || IsPalettized(baseImage.format) ) { return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED ); @@ -2651,6 +2654,9 @@ HRESULT GenerateMipMaps( const Image* srcImages, size_t nimages, const TexMetada if ( !_CalculateMipLevels(metadata.width, metadata.height, levels) ) return E_INVALIDARG; + if ( levels <= 1 ) + return E_INVALIDARG; + std::vector baseImages; baseImages.reserve( metadata.arraySize ); for( size_t item=0; item < metadata.arraySize; ++item ) @@ -2857,6 +2863,9 @@ HRESULT GenerateMipMaps3D( const Image* baseImages, size_t depth, DWORD filter, if ( !_CalculateMipLevels3D(width, height, depth, levels) ) return E_INVALIDARG; + if ( levels <= 1 ) + return E_INVALIDARG; + for( size_t slice=0; slice < depth; ++slice ) { if ( !baseImages[slice].pixels ) @@ -2957,6 +2966,9 @@ HRESULT GenerateMipMaps3D( const Image* srcImages, size_t nimages, const TexMeta if ( !_CalculateMipLevels3D(metadata.width, metadata.height, metadata.depth, levels) ) return E_INVALIDARG; + if ( levels <= 1 ) + return E_INVALIDARG; + std::vector baseImages; baseImages.reserve( metadata.depth ); for( size_t slice=0; slice < metadata.depth; ++slice )