mirror of
https://github.com/microsoft/DirectXTex.git
synced 2025-07-16 23:10:13 +02:00
Code review feedback
This commit is contained in:
parent
9da4aec77a
commit
25dbe0e547
@ -183,10 +183,8 @@ HRESULT GPUCompressBC::Prepare( size_t width, size_t height, DXGI_FORMAT format,
|
|||||||
if ( !width || !height || alphaWeight < 0.f )
|
if ( !width || !height || alphaWeight < 0.f )
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (width > UINT32_MAX) || (height > UINT32_MAX) )
|
||||||
if ( (width > 0xFFFFFFFF) || (height > 0xFFFFFFFF) )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
m_width = width;
|
m_width = width;
|
||||||
m_height = height;
|
m_height = height;
|
||||||
|
@ -4531,10 +4531,8 @@ HRESULT Convert( const Image& srcImage, DXGI_FORMAT format, DWORD filter, float
|
|||||||
|| IsTypeless(srcImage.format) || IsTypeless(format) )
|
|| IsTypeless(srcImage.format) || IsTypeless(format) )
|
||||||
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED );
|
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED );
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (srcImage.width > UINT32_MAX) || (srcImage.height > UINT32_MAX) )
|
||||||
if ( (srcImage.width > 0xFFFFFFFF) || (srcImage.height > 0xFFFFFFFF) )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
HRESULT hr = image.Initialize2D( format, srcImage.width, srcImage.height, 1, 1 );
|
HRESULT hr = image.Initialize2D( format, srcImage.width, srcImage.height, 1, 1 );
|
||||||
if ( FAILED(hr) )
|
if ( FAILED(hr) )
|
||||||
@ -4583,10 +4581,8 @@ HRESULT Convert( const Image* srcImages, size_t nimages, const TexMetadata& meta
|
|||||||
|| IsTypeless(metadata.format) || IsTypeless(format) )
|
|| IsTypeless(metadata.format) || IsTypeless(format) )
|
||||||
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED );
|
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED );
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (metadata.width > UINT32_MAX) || (metadata.height > UINT32_MAX) )
|
||||||
if ( (metadata.width > 0xFFFFFFFF) || (metadata.height > 0xFFFFFFFF) )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
TexMetadata mdata2 = metadata;
|
TexMetadata mdata2 = metadata;
|
||||||
mdata2.format = format;
|
mdata2.format = format;
|
||||||
@ -4623,10 +4619,8 @@ HRESULT Convert( const Image* srcImages, size_t nimages, const TexMetadata& meta
|
|||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (src.width > UINT32_MAX) || (src.height > UINT32_MAX) )
|
||||||
if ( (src.width > 0xFFFFFFFF) || (src.height > 0xFFFFFFFF) )
|
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
#endif
|
|
||||||
|
|
||||||
const Image& dst = dest[ index ];
|
const Image& dst = dest[ index ];
|
||||||
assert( dst.format == format );
|
assert( dst.format == format );
|
||||||
@ -4672,10 +4666,8 @@ HRESULT Convert( const Image* srcImages, size_t nimages, const TexMetadata& meta
|
|||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (src.width > UINT32_MAX) || (src.height > UINT32_MAX) )
|
||||||
if ( (src.width > 0xFFFFFFFF) || (src.height > 0xFFFFFFFF) )
|
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
#endif
|
|
||||||
|
|
||||||
const Image& dst = dest[ index ];
|
const Image& dst = dest[ index ];
|
||||||
assert( dst.format == format );
|
assert( dst.format == format );
|
||||||
@ -4732,10 +4724,8 @@ HRESULT ConvertToSinglePlane( const Image& srcImage, ScratchImage& image )
|
|||||||
if ( format == DXGI_FORMAT_UNKNOWN )
|
if ( format == DXGI_FORMAT_UNKNOWN )
|
||||||
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED );
|
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED );
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (srcImage.width > UINT32_MAX) || (srcImage.height > UINT32_MAX) )
|
||||||
if ( (srcImage.width > 0xFFFFFFFF) || (srcImage.height > 0xFFFFFFFF) )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
HRESULT hr = image.Initialize2D( format, srcImage.width, srcImage.height, 1, 1 );
|
HRESULT hr = image.Initialize2D( format, srcImage.width, srcImage.height, 1, 1 );
|
||||||
if ( FAILED(hr) )
|
if ( FAILED(hr) )
|
||||||
@ -4779,10 +4769,8 @@ HRESULT ConvertToSinglePlane( const Image* srcImages, size_t nimages, const TexM
|
|||||||
if ( format == DXGI_FORMAT_UNKNOWN )
|
if ( format == DXGI_FORMAT_UNKNOWN )
|
||||||
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED );
|
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED );
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (metadata.width > UINT32_MAX) || (metadata.height > UINT32_MAX) )
|
||||||
if ( (metadata.width > 0xFFFFFFFF) || (metadata.height > 0xFFFFFFFF) )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
TexMetadata mdata2 = metadata;
|
TexMetadata mdata2 = metadata;
|
||||||
mdata2.format = format;
|
mdata2.format = format;
|
||||||
@ -4812,10 +4800,8 @@ HRESULT ConvertToSinglePlane( const Image* srcImages, size_t nimages, const TexM
|
|||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (src.width > UINT32_MAX) || (src.height > UINT32_MAX) )
|
||||||
if ( (src.width > 0xFFFFFFFF) || (src.height > 0xFFFFFFFF) )
|
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
#endif
|
|
||||||
|
|
||||||
const Image& dst = dest[ index ];
|
const Image& dst = dest[ index ];
|
||||||
assert( dst.format == format );
|
assert( dst.format == format );
|
||||||
|
@ -405,11 +405,9 @@ HRESULT CreateTextureEx( ID3D11Device* pDevice, const Image* srcImages, size_t n
|
|||||||
if ( !metadata.mipLevels || !metadata.arraySize )
|
if ( !metadata.mipLevels || !metadata.arraySize )
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (metadata.width > UINT32_MAX) || (metadata.height > UINT32_MAX)
|
||||||
if ( (metadata.width > 0xFFFFFFFF) || (metadata.height > 0xFFFFFFFF)
|
|| (metadata.mipLevels > UINT32_MAX) || (metadata.arraySize > UINT32_MAX) )
|
||||||
|| (metadata.mipLevels > 0xFFFFFFFF) || (metadata.arraySize > 0xFFFFFFFF) )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
std::unique_ptr<D3D11_SUBRESOURCE_DATA[]> initData( new (std::nothrow) D3D11_SUBRESOURCE_DATA[ metadata.mipLevels * metadata.arraySize ] );
|
std::unique_ptr<D3D11_SUBRESOURCE_DATA[]> initData( new (std::nothrow) D3D11_SUBRESOURCE_DATA[ metadata.mipLevels * metadata.arraySize ] );
|
||||||
if ( !initData )
|
if ( !initData )
|
||||||
@ -422,10 +420,8 @@ HRESULT CreateTextureEx( ID3D11Device* pDevice, const Image* srcImages, size_t n
|
|||||||
if ( !metadata.depth )
|
if ( !metadata.depth )
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( metadata.depth > UINT32_MAX )
|
||||||
if ( metadata.depth > 0xFFFFFFFF )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
if ( metadata.arraySize > 1 )
|
if ( metadata.arraySize > 1 )
|
||||||
// Direct3D 11 doesn't support arrays of 3D textures
|
// Direct3D 11 doesn't support arrays of 3D textures
|
||||||
|
@ -575,10 +575,8 @@ HRESULT _EncodeDDSHeader( const TexMetadata& metadata, DWORD flags,
|
|||||||
{
|
{
|
||||||
header->dwFlags |= DDS_HEADER_FLAGS_MIPMAP;
|
header->dwFlags |= DDS_HEADER_FLAGS_MIPMAP;
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( metadata.mipLevels > UINT32_MAX )
|
||||||
if ( metadata.mipLevels > 0xFFFFFFFF )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
header->dwMipMapCount = static_cast<uint32_t>( metadata.mipLevels );
|
header->dwMipMapCount = static_cast<uint32_t>( metadata.mipLevels );
|
||||||
|
|
||||||
@ -589,21 +587,17 @@ HRESULT _EncodeDDSHeader( const TexMetadata& metadata, DWORD flags,
|
|||||||
switch( metadata.dimension )
|
switch( metadata.dimension )
|
||||||
{
|
{
|
||||||
case TEX_DIMENSION_TEXTURE1D:
|
case TEX_DIMENSION_TEXTURE1D:
|
||||||
#ifdef _M_X64
|
if ( metadata.width > UINT32_MAX )
|
||||||
if ( metadata.width > 0xFFFFFFFF )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
header->dwWidth = static_cast<uint32_t>( metadata.width );
|
header->dwWidth = static_cast<uint32_t>( metadata.width );
|
||||||
header->dwHeight = header->dwDepth = 1;
|
header->dwHeight = header->dwDepth = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TEX_DIMENSION_TEXTURE2D:
|
case TEX_DIMENSION_TEXTURE2D:
|
||||||
#ifdef _M_X64
|
if ( metadata.height > UINT32_MAX
|
||||||
if ( metadata.height > 0xFFFFFFFF
|
|| metadata.width > UINT32_MAX )
|
||||||
|| metadata.width > 0xFFFFFFFF)
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
header->dwHeight = static_cast<uint32_t>( metadata.height );
|
header->dwHeight = static_cast<uint32_t>( metadata.height );
|
||||||
header->dwWidth = static_cast<uint32_t>( metadata.width );
|
header->dwWidth = static_cast<uint32_t>( metadata.width );
|
||||||
@ -617,12 +611,10 @@ HRESULT _EncodeDDSHeader( const TexMetadata& metadata, DWORD flags,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case TEX_DIMENSION_TEXTURE3D:
|
case TEX_DIMENSION_TEXTURE3D:
|
||||||
#ifdef _M_X64
|
if ( metadata.height > UINT32_MAX
|
||||||
if ( metadata.height > 0xFFFFFFFF
|
|| metadata.width > UINT32_MAX
|
||||||
|| metadata.width > 0xFFFFFFFF
|
|| metadata.depth > UINT32_MAX )
|
||||||
|| metadata.depth > 0xFFFFFFFF )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
header->dwFlags |= DDS_HEADER_FLAGS_VOLUME;
|
header->dwFlags |= DDS_HEADER_FLAGS_VOLUME;
|
||||||
header->dwCaps2 |= DDS_FLAGS_VOLUME;
|
header->dwCaps2 |= DDS_FLAGS_VOLUME;
|
||||||
@ -638,11 +630,9 @@ HRESULT _EncodeDDSHeader( const TexMetadata& metadata, DWORD flags,
|
|||||||
size_t rowPitch, slicePitch;
|
size_t rowPitch, slicePitch;
|
||||||
ComputePitch( metadata.format, metadata.width, metadata.height, rowPitch, slicePitch, CP_FLAGS_NONE );
|
ComputePitch( metadata.format, metadata.width, metadata.height, rowPitch, slicePitch, CP_FLAGS_NONE );
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( slicePitch > UINT32_MAX
|
||||||
if ( slicePitch > 0xFFFFFFFF
|
|| rowPitch > UINT32_MAX )
|
||||||
|| rowPitch > 0xFFFFFFFF )
|
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
#endif
|
|
||||||
|
|
||||||
if ( IsCompressed( metadata.format ) )
|
if ( IsCompressed( metadata.format ) )
|
||||||
{
|
{
|
||||||
@ -666,10 +656,8 @@ HRESULT _EncodeDDSHeader( const TexMetadata& metadata, DWORD flags,
|
|||||||
ext->dxgiFormat = metadata.format;
|
ext->dxgiFormat = metadata.format;
|
||||||
ext->resourceDimension = metadata.dimension;
|
ext->resourceDimension = metadata.dimension;
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( metadata.arraySize > UINT32_MAX )
|
||||||
if ( metadata.arraySize > 0xFFFFFFFF )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
static_assert( TEX_MISC_TEXTURECUBE == DDS_RESOURCE_MISC_TEXTURECUBE, "DDS header mismatch");
|
static_assert( TEX_MISC_TEXTURECUBE == DDS_RESOURCE_MISC_TEXTURECUBE, "DDS header mismatch");
|
||||||
|
|
||||||
|
@ -138,10 +138,8 @@ HRESULT FlipRotate( const Image& srcImage, DWORD flags, ScratchImage& image )
|
|||||||
if ( !flags )
|
if ( !flags )
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (srcImage.width > UINT32_MAX) || (srcImage.height > UINT32_MAX) )
|
||||||
if ( (srcImage.width > 0xFFFFFFFF) || (srcImage.height > 0xFFFFFFFF) )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
if ( IsCompressed( srcImage.format ) )
|
if ( IsCompressed( srcImage.format ) )
|
||||||
{
|
{
|
||||||
@ -283,10 +281,8 @@ HRESULT FlipRotate( const Image* srcImages, size_t nimages, const TexMetadata& m
|
|||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (src.width > UINT32_MAX) || (src.height > UINT32_MAX) )
|
||||||
if ( (src.width > 0xFFFFFFFF) || (src.height > 0xFFFFFFFF) )
|
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
#endif
|
|
||||||
|
|
||||||
const Image& dst = dest[ index ];
|
const Image& dst = dest[ index ];
|
||||||
assert( dst.format == metadata.format );
|
assert( dst.format == metadata.format );
|
||||||
|
@ -120,10 +120,8 @@ HRESULT PremultiplyAlpha( const Image& srcImage, DWORD flags, ScratchImage& imag
|
|||||||
|| !HasAlpha(srcImage.format) )
|
|| !HasAlpha(srcImage.format) )
|
||||||
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED );
|
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED );
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (srcImage.width > UINT32_MAX) || (srcImage.height > UINT32_MAX) )
|
||||||
if ( (srcImage.width > 0xFFFFFFFF) || (srcImage.height > 0xFFFFFFFF) )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
HRESULT hr = image.Initialize2D( srcImage.format, srcImage.width, srcImage.height, 1, 1 );
|
HRESULT hr = image.Initialize2D( srcImage.format, srcImage.width, srcImage.height, 1, 1 );
|
||||||
if ( FAILED(hr) )
|
if ( FAILED(hr) )
|
||||||
@ -163,10 +161,8 @@ HRESULT PremultiplyAlpha( const Image* srcImages, size_t nimages, const TexMetad
|
|||||||
|| !HasAlpha(metadata.format) )
|
|| !HasAlpha(metadata.format) )
|
||||||
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED );
|
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED );
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (metadata.width > UINT32_MAX) || (metadata.height > UINT32_MAX) )
|
||||||
if ( (metadata.width > 0xFFFFFFFF) || (metadata.height > 0xFFFFFFFF) )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
if ( metadata.IsPMAlpha() )
|
if ( metadata.IsPMAlpha() )
|
||||||
{
|
{
|
||||||
@ -202,10 +198,9 @@ HRESULT PremultiplyAlpha( const Image* srcImages, size_t nimages, const TexMetad
|
|||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (src.width > UINT32_MAX) || (src.height > UINT32_MAX) )
|
||||||
if ( (src.width > 0xFFFFFFFF) || (src.height > 0xFFFFFFFF) )
|
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
#endif
|
|
||||||
const Image& dst = dest[ index ];
|
const Image& dst = dest[ index ];
|
||||||
assert( dst.format == metadata.format );
|
assert( dst.format == metadata.format );
|
||||||
|
|
||||||
|
@ -833,13 +833,11 @@ HRESULT Resize( const Image& srcImage, size_t width, size_t height, DWORD filter
|
|||||||
if ( width == 0 || height == 0 )
|
if ( width == 0 || height == 0 )
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (srcImage.width > UINT32_MAX) || (srcImage.height > UINT32_MAX) )
|
||||||
if ( (srcImage.width > 0xFFFFFFFF) || (srcImage.height > 0xFFFFFFFF) )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
if ( (width > 0xFFFFFFFF) || (height > 0xFFFFFFFF) )
|
if ( (width > UINT32_MAX) || (height > UINT32_MAX) )
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
if ( !srcImage.pixels )
|
if ( !srcImage.pixels )
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
@ -897,10 +895,8 @@ HRESULT Resize( const Image* srcImages, size_t nimages, const TexMetadata& metad
|
|||||||
if ( !srcImages || !nimages || width == 0 || height == 0 )
|
if ( !srcImages || !nimages || width == 0 || height == 0 )
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (width > UINT32_MAX) || (height > UINT32_MAX) )
|
||||||
if ( (width > 0xFFFFFFFF) || (height > 0xFFFFFFFF) )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
TexMetadata mdata2 = metadata;
|
TexMetadata mdata2 = metadata;
|
||||||
mdata2.width = width;
|
mdata2.width = width;
|
||||||
@ -944,13 +940,11 @@ HRESULT Resize( const Image* srcImages, size_t nimages, const TexMetadata& metad
|
|||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (srcimg->width > UINT32_MAX) || (srcimg->height > UINT32_MAX) )
|
||||||
if ( (srcimg->width > 0xFFFFFFFF) || (srcimg->height > 0xFFFFFFFF) )
|
|
||||||
{
|
{
|
||||||
result.Release();
|
result.Release();
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if ( usewic )
|
if ( usewic )
|
||||||
{
|
{
|
||||||
@ -1005,13 +999,11 @@ HRESULT Resize( const Image* srcImages, size_t nimages, const TexMetadata& metad
|
|||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (srcimg->width > UINT32_MAX) || (srcimg->height > UINT32_MAX) )
|
||||||
if ( (srcimg->width > 0xFFFFFFFF) || (srcimg->height > 0xFFFFFFFF) )
|
|
||||||
{
|
{
|
||||||
result.Release();
|
result.Release();
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if ( usewic )
|
if ( usewic )
|
||||||
{
|
{
|
||||||
|
@ -237,6 +237,10 @@ IWICImagingFactory* GetWICFactory(bool& iswic2)
|
|||||||
return g_Factory;
|
return g_Factory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static INIT_ONCE s_initOnce = INIT_ONCE_STATIC_INIT;
|
||||||
|
InitOnceExecuteOnce(&s_initOnce,
|
||||||
|
[](PINIT_ONCE, PVOID, PVOID *) -> BOOL
|
||||||
|
{
|
||||||
#if(_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)
|
#if(_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)
|
||||||
HRESULT hr = CoCreateInstance(
|
HRESULT hr = CoCreateInstance(
|
||||||
CLSID_WICImagingFactory2,
|
CLSID_WICImagingFactory2,
|
||||||
@ -265,7 +269,7 @@ IWICImagingFactory* GetWICFactory(bool& iswic2)
|
|||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
{
|
{
|
||||||
g_Factory = nullptr;
|
g_Factory = nullptr;
|
||||||
return nullptr;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@ -281,9 +285,11 @@ IWICImagingFactory* GetWICFactory(bool& iswic2)
|
|||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
{
|
{
|
||||||
g_Factory = nullptr;
|
g_Factory = nullptr;
|
||||||
return nullptr;
|
return FALSE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
return TRUE;
|
||||||
|
}, nullptr, nullptr);
|
||||||
|
|
||||||
iswic2 = g_WIC2;
|
iswic2 = g_WIC2;
|
||||||
return g_Factory;
|
return g_Factory;
|
||||||
|
@ -645,10 +645,8 @@ static HRESULT _EncodeImage( _In_ const Image& image, _In_ DWORD flags, _In_ REF
|
|||||||
if ( FAILED(hr) )
|
if ( FAILED(hr) )
|
||||||
return hr;
|
return hr;
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( (image.width > UINT32_MAX) || (image.height > UINT32_MAX) )
|
||||||
if ( (image.width > 0xFFFFFFFF) || (image.height > 0xFFFFFFFF) )
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
#endif
|
|
||||||
|
|
||||||
hr = frame->SetSize( static_cast<UINT>( image.width ), static_cast<UINT>( image.height ) );
|
hr = frame->SetSize( static_cast<UINT>( image.width ), static_cast<UINT>( image.height ) );
|
||||||
if ( FAILED(hr) )
|
if ( FAILED(hr) )
|
||||||
@ -862,10 +860,8 @@ HRESULT GetMetadataFromWICMemory( LPCVOID pSource, size_t size, DWORD flags, Tex
|
|||||||
if ( !pSource || size == 0 )
|
if ( !pSource || size == 0 )
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( size > UINT32_MAX )
|
||||||
if ( size > 0xFFFFFFFF )
|
|
||||||
return HRESULT_FROM_WIN32( ERROR_FILE_TOO_LARGE );
|
return HRESULT_FROM_WIN32( ERROR_FILE_TOO_LARGE );
|
||||||
#endif
|
|
||||||
|
|
||||||
bool iswic2 = false;
|
bool iswic2 = false;
|
||||||
IWICImagingFactory* pWIC = GetWICFactory(iswic2);
|
IWICImagingFactory* pWIC = GetWICFactory(iswic2);
|
||||||
@ -946,10 +942,8 @@ HRESULT LoadFromWICMemory( LPCVOID pSource, size_t size, DWORD flags, TexMetadat
|
|||||||
if ( !pSource || size == 0 )
|
if ( !pSource || size == 0 )
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
#ifdef _M_X64
|
if ( size > UINT32_MAX )
|
||||||
if ( size > 0xFFFFFFFF )
|
|
||||||
return HRESULT_FROM_WIN32( ERROR_FILE_TOO_LARGE );
|
return HRESULT_FROM_WIN32( ERROR_FILE_TOO_LARGE );
|
||||||
#endif
|
|
||||||
|
|
||||||
bool iswic2 = false;
|
bool iswic2 = false;
|
||||||
IWICImagingFactory* pWIC = GetWICFactory(iswic2);
|
IWICImagingFactory* pWIC = GetWICFactory(iswic2);
|
||||||
|
@ -706,6 +706,11 @@ namespace
|
|||||||
if ( s_Factory )
|
if ( s_Factory )
|
||||||
return s_Factory;
|
return s_Factory;
|
||||||
|
|
||||||
|
static INIT_ONCE s_initOnce = INIT_ONCE_STATIC_INIT;
|
||||||
|
|
||||||
|
InitOnceExecuteOnce(&s_initOnce,
|
||||||
|
[](PINIT_ONCE, PVOID, PVOID *) -> BOOL
|
||||||
|
{
|
||||||
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)
|
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)
|
||||||
HRESULT hr = CoCreateInstance(
|
HRESULT hr = CoCreateInstance(
|
||||||
CLSID_WICImagingFactory2,
|
CLSID_WICImagingFactory2,
|
||||||
@ -717,7 +722,7 @@ namespace
|
|||||||
|
|
||||||
if ( SUCCEEDED(hr) )
|
if ( SUCCEEDED(hr) )
|
||||||
{
|
{
|
||||||
// WIC2 is available on Windows 8 and Windows 7 SP1 with KB 2670838 installed
|
// WIC2 is available on Windows 10, Windows 8.x, and Windows 7 SP1 with KB 2670838 installed
|
||||||
g_WIC2 = true;
|
g_WIC2 = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -732,7 +737,7 @@ namespace
|
|||||||
if ( FAILED(hr) )
|
if ( FAILED(hr) )
|
||||||
{
|
{
|
||||||
s_Factory = nullptr;
|
s_Factory = nullptr;
|
||||||
return nullptr;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@ -746,9 +751,11 @@ namespace
|
|||||||
if ( FAILED(hr) )
|
if ( FAILED(hr) )
|
||||||
{
|
{
|
||||||
s_Factory = nullptr;
|
s_Factory = nullptr;
|
||||||
return nullptr;
|
return FALSE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
return TRUE;
|
||||||
|
}, nullptr, nullptr);
|
||||||
|
|
||||||
return s_Factory;
|
return s_Factory;
|
||||||
}
|
}
|
||||||
|
@ -786,6 +786,11 @@ namespace
|
|||||||
if (s_Factory)
|
if (s_Factory)
|
||||||
return s_Factory;
|
return s_Factory;
|
||||||
|
|
||||||
|
static INIT_ONCE s_initOnce = INIT_ONCE_STATIC_INIT;
|
||||||
|
|
||||||
|
InitOnceExecuteOnce(&s_initOnce,
|
||||||
|
[](PINIT_ONCE, PVOID, PVOID *) -> BOOL
|
||||||
|
{
|
||||||
HRESULT hr = CoCreateInstance(
|
HRESULT hr = CoCreateInstance(
|
||||||
CLSID_WICImagingFactory2,
|
CLSID_WICImagingFactory2,
|
||||||
nullptr,
|
nullptr,
|
||||||
@ -794,8 +799,11 @@ namespace
|
|||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
{
|
{
|
||||||
s_Factory = nullptr;
|
s_Factory = nullptr;
|
||||||
return nullptr;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
return TRUE;
|
||||||
|
}, nullptr, nullptr);
|
||||||
|
|
||||||
return s_Factory;
|
return s_Factory;
|
||||||
}
|
}
|
||||||
} // anonymous namespace
|
} // anonymous namespace
|
||||||
|
@ -173,6 +173,11 @@ namespace
|
|||||||
if ( s_Factory )
|
if ( s_Factory )
|
||||||
return s_Factory;
|
return s_Factory;
|
||||||
|
|
||||||
|
static INIT_ONCE s_initOnce = INIT_ONCE_STATIC_INIT;
|
||||||
|
|
||||||
|
InitOnceExecuteOnce(&s_initOnce,
|
||||||
|
[](PINIT_ONCE, PVOID, PVOID *) -> BOOL
|
||||||
|
{
|
||||||
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)
|
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)
|
||||||
HRESULT hr = CoCreateInstance(
|
HRESULT hr = CoCreateInstance(
|
||||||
CLSID_WICImagingFactory2,
|
CLSID_WICImagingFactory2,
|
||||||
@ -184,7 +189,7 @@ namespace
|
|||||||
|
|
||||||
if ( SUCCEEDED(hr) )
|
if ( SUCCEEDED(hr) )
|
||||||
{
|
{
|
||||||
// WIC2 is available on Windows 8 and Windows 7 SP1 with KB 2670838 installed
|
// WIC2 is available on Windows 10, Windows 8.x, and Windows 7 SP1 with KB 2670838 installed
|
||||||
g_WIC2 = true;
|
g_WIC2 = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -199,7 +204,7 @@ namespace
|
|||||||
if ( FAILED(hr) )
|
if ( FAILED(hr) )
|
||||||
{
|
{
|
||||||
s_Factory = nullptr;
|
s_Factory = nullptr;
|
||||||
return nullptr;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@ -213,9 +218,11 @@ namespace
|
|||||||
if ( FAILED(hr) )
|
if ( FAILED(hr) )
|
||||||
{
|
{
|
||||||
s_Factory = nullptr;
|
s_Factory = nullptr;
|
||||||
return nullptr;
|
return FALSE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
return TRUE;
|
||||||
|
}, nullptr, nullptr);
|
||||||
|
|
||||||
return s_Factory;
|
return s_Factory;
|
||||||
}
|
}
|
||||||
@ -753,10 +760,8 @@ HRESULT DirectX::CreateWICTextureFromMemoryEx( ID3D11Device* d3dDevice,
|
|||||||
if ( !wicDataSize )
|
if ( !wicDataSize )
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
#ifdef _M_AMD64
|
if ( wicDataSize > UINT32_MAX )
|
||||||
if ( wicDataSize > 0xFFFFFFFF )
|
|
||||||
return HRESULT_FROM_WIN32( ERROR_FILE_TOO_LARGE );
|
return HRESULT_FROM_WIN32( ERROR_FILE_TOO_LARGE );
|
||||||
#endif
|
|
||||||
|
|
||||||
IWICImagingFactory* pWIC = _GetWIC();
|
IWICImagingFactory* pWIC = _GetWIC();
|
||||||
if ( !pWIC )
|
if ( !pWIC )
|
||||||
|
@ -154,6 +154,11 @@ namespace
|
|||||||
if (s_Factory)
|
if (s_Factory)
|
||||||
return s_Factory;
|
return s_Factory;
|
||||||
|
|
||||||
|
static INIT_ONCE s_initOnce = INIT_ONCE_STATIC_INIT;
|
||||||
|
|
||||||
|
InitOnceExecuteOnce(&s_initOnce,
|
||||||
|
[](PINIT_ONCE, PVOID, PVOID *) -> BOOL
|
||||||
|
{
|
||||||
HRESULT hr = CoCreateInstance(
|
HRESULT hr = CoCreateInstance(
|
||||||
CLSID_WICImagingFactory2,
|
CLSID_WICImagingFactory2,
|
||||||
nullptr,
|
nullptr,
|
||||||
@ -162,8 +167,11 @@ namespace
|
|||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
{
|
{
|
||||||
s_Factory = nullptr;
|
s_Factory = nullptr;
|
||||||
return nullptr;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
return TRUE;
|
||||||
|
}, nullptr, nullptr);
|
||||||
|
|
||||||
return s_Factory;
|
return s_Factory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -581,10 +589,8 @@ HRESULT DirectX::LoadWICTextureFromMemoryEx(
|
|||||||
if ( !wicDataSize )
|
if ( !wicDataSize )
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
#ifdef _M_AMD64
|
if ( wicDataSize > UINT32_MAX )
|
||||||
if ( wicDataSize > 0xFFFFFFFF )
|
|
||||||
return HRESULT_FROM_WIN32( ERROR_FILE_TOO_LARGE );
|
return HRESULT_FROM_WIN32( ERROR_FILE_TOO_LARGE );
|
||||||
#endif
|
|
||||||
|
|
||||||
auto pWIC = _GetWIC();
|
auto pWIC = _GetWIC();
|
||||||
if ( !pWIC )
|
if ( !pWIC )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user