Code review feedback for standalone texture loaders

This commit is contained in:
Chuck Walbourn 2020-03-10 01:05:10 -07:00
parent 7cd2abf078
commit dbaaffbefb
12 changed files with 145 additions and 141 deletions

View File

@ -119,7 +119,7 @@ namespace
{
struct handle_closer { void operator()(HANDLE h) { if (h) CloseHandle(h); } };
typedef std::unique_ptr<void, handle_closer> ScopedHandle;
using ScopedHandle = std::unique_ptr<void, handle_closer>;
inline HANDLE safe_handle( HANDLE h ) { return (h == INVALID_HANDLE_VALUE) ? nullptr : h; }
@ -140,7 +140,7 @@ namespace
size_t ddsDataSize,
const DDS_HEADER** header,
const uint8_t** bitData,
size_t* bitSize)
size_t* bitSize) noexcept
{
if (!header || !bitData || !bitSize)
{
@ -205,7 +205,7 @@ namespace
std::unique_ptr<uint8_t[]>& ddsData,
const DDS_HEADER** header,
const uint8_t** bitData,
size_t* bitSize)
size_t* bitSize) noexcept
{
if (!header || !bitData || !bitSize)
{
@ -321,7 +321,7 @@ namespace
//--------------------------------------------------------------------------------------
// Return the BPP for a particular format
//--------------------------------------------------------------------------------------
size_t BitsPerPixel(_In_ DXGI_FORMAT fmt)
size_t BitsPerPixel(_In_ DXGI_FORMAT fmt) noexcept
{
switch (fmt)
{
@ -477,7 +477,7 @@ namespace
_In_ DXGI_FORMAT fmt,
size_t* outNumBytes,
_Out_opt_ size_t* outRowBytes,
_Out_opt_ size_t* outNumRows)
_Out_opt_ size_t* outNumRows) noexcept
{
uint64_t numBytes = 0;
uint64_t rowBytes = 0;
@ -620,7 +620,7 @@ namespace
//--------------------------------------------------------------------------------------
#define ISBITMASK( r,g,b,a ) ( ddpf.RBitMask == r && ddpf.GBitMask == g && ddpf.BBitMask == b && ddpf.ABitMask == a )
DXGI_FORMAT GetDXGIFormat(const DDS_PIXELFORMAT& ddpf)
DXGI_FORMAT GetDXGIFormat(const DDS_PIXELFORMAT& ddpf) noexcept
{
if (ddpf.flags & DDS_RGB)
{
@ -861,7 +861,7 @@ namespace
//--------------------------------------------------------------------------------------
DXGI_FORMAT MakeSRGB(_In_ DXGI_FORMAT format)
DXGI_FORMAT MakeSRGB(_In_ DXGI_FORMAT format) noexcept
{
switch (format)
{
@ -907,7 +907,7 @@ namespace
_Out_ size_t& theight,
_Out_ size_t& tdepth,
_Out_ size_t& skipMip,
_Out_writes_(mipCount*arraySize) D3D11_SUBRESOURCE_DATA* initData)
_Out_writes_(mipCount*arraySize) D3D11_SUBRESOURCE_DATA* initData) noexcept
{
if (!bitData || !initData)
{
@ -1008,7 +1008,7 @@ namespace
_In_ bool isCubeMap,
_In_reads_opt_(mipCount*arraySize) D3D11_SUBRESOURCE_DATA* initData,
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView)
_Outptr_opt_ ID3D11ShaderResourceView** textureView) noexcept
{
if (!d3dDevice)
return E_POINTER;
@ -1238,7 +1238,7 @@ namespace
_In_ unsigned int miscFlags,
_In_ bool forceSRGB,
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView)
_Outptr_opt_ ID3D11ShaderResourceView** textureView) noexcept
{
HRESULT hr = S_OK;
@ -1553,26 +1553,26 @@ namespace
case D3D_FEATURE_LEVEL_9_2:
if (isCubeMap)
{
maxsize = 512 /*D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION*/;
maxsize = 512u /*D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION*/;
}
else
{
maxsize = (resDim == D3D11_RESOURCE_DIMENSION_TEXTURE3D)
? 256 /*D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION*/
: 2048 /*D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION*/;
? 256u /*D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION*/
: 2048u /*D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION*/;
}
break;
case D3D_FEATURE_LEVEL_9_3:
maxsize = (resDim == D3D11_RESOURCE_DIMENSION_TEXTURE3D)
? 256 /*D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION*/
: 4096 /*D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION*/;
? 256u /*D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION*/
: 4096u /*D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION*/;
break;
default: // D3D_FEATURE_LEVEL_10_0 & D3D_FEATURE_LEVEL_10_1
maxsize = (resDim == D3D11_RESOURCE_DIMENSION_TEXTURE3D)
? 2048 /*D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION*/
: 8192 /*D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION*/;
? 2048u /*D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION*/
: 8192u /*D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION*/;
break;
}
@ -1598,7 +1598,7 @@ namespace
//--------------------------------------------------------------------------------------
DDS_ALPHA_MODE GetAlphaMode(_In_ const DDS_HEADER* header)
DDS_ALPHA_MODE GetAlphaMode(_In_ const DDS_HEADER* header) noexcept
{
if (header->ddspf.flags & DDS_FOURCC)
{
@ -1633,7 +1633,7 @@ namespace
void SetDebugTextureInfo(
_In_z_ const wchar_t* fileName,
_In_opt_ ID3D11Resource** texture,
_In_opt_ ID3D11ShaderResourceView** textureView)
_In_opt_ ID3D11ShaderResourceView** textureView) noexcept
{
#if !defined(NO_D3D11_DEBUG_NAME) && ( defined(_DEBUG) || defined(PROFILE) )
if (texture || textureView)
@ -1694,7 +1694,7 @@ HRESULT DirectX::CreateDDSTextureFromMemory(
ID3D11Resource** texture,
ID3D11ShaderResourceView** textureView,
size_t maxsize,
DDS_ALPHA_MODE* alphaMode)
DDS_ALPHA_MODE* alphaMode) noexcept
{
return CreateDDSTextureFromMemoryEx(d3dDevice, nullptr,
ddsData, ddsDataSize,
@ -1713,7 +1713,7 @@ HRESULT DirectX::CreateDDSTextureFromMemory(
ID3D11Resource** texture,
ID3D11ShaderResourceView** textureView,
size_t maxsize,
DDS_ALPHA_MODE* alphaMode)
DDS_ALPHA_MODE* alphaMode) noexcept
{
return CreateDDSTextureFromMemoryEx(d3dDevice, d3dContext,
ddsData, ddsDataSize,
@ -1736,7 +1736,7 @@ HRESULT DirectX::CreateDDSTextureFromMemoryEx(
bool forceSRGB,
ID3D11Resource** texture,
ID3D11ShaderResourceView** textureView,
DDS_ALPHA_MODE* alphaMode)
DDS_ALPHA_MODE* alphaMode) noexcept
{
return CreateDDSTextureFromMemoryEx(d3dDevice, nullptr,
ddsData, ddsDataSize,
@ -1760,7 +1760,7 @@ HRESULT DirectX::CreateDDSTextureFromMemoryEx(
bool forceSRGB,
ID3D11Resource** texture,
ID3D11ShaderResourceView** textureView,
DDS_ALPHA_MODE* alphaMode)
DDS_ALPHA_MODE* alphaMode) noexcept
{
if (texture)
{
@ -1833,7 +1833,7 @@ HRESULT DirectX::CreateDDSTextureFromFile(
ID3D11Resource** texture,
ID3D11ShaderResourceView** textureView,
size_t maxsize,
DDS_ALPHA_MODE* alphaMode)
DDS_ALPHA_MODE* alphaMode) noexcept
{
return CreateDDSTextureFromFileEx(d3dDevice, nullptr,
fileName, maxsize,
@ -1850,7 +1850,7 @@ HRESULT DirectX::CreateDDSTextureFromFile(
ID3D11Resource** texture,
ID3D11ShaderResourceView** textureView,
size_t maxsize,
DDS_ALPHA_MODE* alphaMode)
DDS_ALPHA_MODE* alphaMode) noexcept
{
return CreateDDSTextureFromFileEx(d3dDevice, d3dContext,
fileName,
@ -1872,7 +1872,7 @@ HRESULT DirectX::CreateDDSTextureFromFileEx(
bool forceSRGB,
ID3D11Resource** texture,
ID3D11ShaderResourceView** textureView,
DDS_ALPHA_MODE* alphaMode)
DDS_ALPHA_MODE* alphaMode) noexcept
{
return CreateDDSTextureFromFileEx(d3dDevice, nullptr,
fileName,
@ -1895,7 +1895,7 @@ HRESULT DirectX::CreateDDSTextureFromFileEx(
bool forceSRGB,
ID3D11Resource** texture,
ID3D11ShaderResourceView** textureView,
DDS_ALPHA_MODE* alphaMode)
DDS_ALPHA_MODE* alphaMode) noexcept
{
if (texture)
{

View File

@ -17,7 +17,8 @@
#pragma once
#include <d3d11_1.h>
#include <stdint.h>
#include <cstdint>
namespace DirectX
@ -42,7 +43,7 @@ namespace DirectX
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
_In_ size_t maxsize = 0,
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr);
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr) noexcept;
HRESULT CreateDDSTextureFromFile(
_In_ ID3D11Device* d3dDevice,
@ -50,7 +51,7 @@ namespace DirectX
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
_In_ size_t maxsize = 0,
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr);
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr) noexcept;
// Standard version with optional auto-gen mipmap support
HRESULT CreateDDSTextureFromMemory(
@ -61,7 +62,7 @@ namespace DirectX
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
_In_ size_t maxsize = 0,
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr);
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr) noexcept;
HRESULT CreateDDSTextureFromFile(
_In_ ID3D11Device* d3dDevice,
@ -70,7 +71,7 @@ namespace DirectX
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
_In_ size_t maxsize = 0,
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr);
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr) noexcept;
// Extended version
HRESULT CreateDDSTextureFromMemoryEx(
@ -85,7 +86,7 @@ namespace DirectX
_In_ bool forceSRGB,
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr);
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr) noexcept;
HRESULT CreateDDSTextureFromFileEx(
_In_ ID3D11Device* d3dDevice,
@ -98,7 +99,7 @@ namespace DirectX
_In_ bool forceSRGB,
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr);
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr) noexcept;
// Extended version with optional auto-gen mipmap support
HRESULT CreateDDSTextureFromMemoryEx(
@ -114,7 +115,7 @@ namespace DirectX
_In_ bool forceSRGB,
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr);
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr) noexcept;
HRESULT CreateDDSTextureFromFileEx(
_In_ ID3D11Device* d3dDevice,
@ -128,5 +129,5 @@ namespace DirectX
_In_ bool forceSRGB,
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr);
_Out_opt_ DDS_ALPHA_MODE* alphaMode = nullptr) noexcept;
}

View File

@ -124,7 +124,7 @@ namespace
{
struct handle_closer { void operator()(HANDLE h) { if (h) CloseHandle(h); } };
typedef std::unique_ptr<void, handle_closer> ScopedHandle;
using ScopedHandle = std::unique_ptr<void, handle_closer>;
inline HANDLE safe_handle(HANDLE h) { return (h == INVALID_HANDLE_VALUE) ? nullptr : h; }
@ -139,7 +139,7 @@ namespace
#endif
}
inline uint32_t CountMips(uint32_t width, uint32_t height)
inline uint32_t CountMips(uint32_t width, uint32_t height) noexcept
{
if (width == 0 || height == 0)
return 0;
@ -161,7 +161,7 @@ namespace
size_t ddsDataSize,
const DDS_HEADER** header,
const uint8_t** bitData,
size_t* bitSize)
size_t* bitSize) noexcept
{
if (!header || !bitData || !bitSize)
{
@ -226,7 +226,7 @@ namespace
std::unique_ptr<uint8_t[]>& ddsData,
const DDS_HEADER** header,
const uint8_t** bitData,
size_t* bitSize)
size_t* bitSize) noexcept
{
if (!header || !bitData || !bitSize)
{
@ -332,7 +332,7 @@ namespace
//--------------------------------------------------------------------------------------
// Return the BPP for a particular format
//--------------------------------------------------------------------------------------
size_t BitsPerPixel( _In_ DXGI_FORMAT fmt )
size_t BitsPerPixel( _In_ DXGI_FORMAT fmt ) noexcept
{
switch( fmt )
{
@ -491,7 +491,7 @@ namespace
_In_ DXGI_FORMAT fmt,
size_t* outNumBytes,
_Out_opt_ size_t* outRowBytes,
_Out_opt_ size_t* outNumRows)
_Out_opt_ size_t* outNumRows) noexcept
{
uint64_t numBytes = 0;
uint64_t rowBytes = 0;
@ -635,7 +635,7 @@ namespace
//--------------------------------------------------------------------------------------
#define ISBITMASK( r,g,b,a ) ( ddpf.RBitMask == r && ddpf.GBitMask == g && ddpf.BBitMask == b && ddpf.ABitMask == a )
DXGI_FORMAT GetDXGIFormat( const DDS_PIXELFORMAT& ddpf )
DXGI_FORMAT GetDXGIFormat( const DDS_PIXELFORMAT& ddpf ) noexcept
{
if (ddpf.flags & DDS_RGB)
{
@ -876,7 +876,7 @@ namespace
//--------------------------------------------------------------------------------------
DXGI_FORMAT MakeSRGB( _In_ DXGI_FORMAT format )
DXGI_FORMAT MakeSRGB( _In_ DXGI_FORMAT format ) noexcept
{
switch( format )
{
@ -908,7 +908,7 @@ namespace
//--------------------------------------------------------------------------------------
inline bool IsDepthStencil(DXGI_FORMAT fmt)
inline bool IsDepthStencil(DXGI_FORMAT fmt) noexcept
{
switch (fmt)
{
@ -935,7 +935,7 @@ namespace
_In_ DXGI_FORMAT fmt,
_In_ size_t height,
_In_ size_t slicePlane,
_Inout_ D3D12_SUBRESOURCE_DATA& res)
_Inout_ D3D12_SUBRESOURCE_DATA& res) noexcept
{
switch (fmt)
{
@ -1092,7 +1092,7 @@ namespace
DXGI_FORMAT format,
D3D12_RESOURCE_FLAGS resFlags,
unsigned int loadFlags,
_Outptr_ ID3D12Resource** texture)
_Outptr_ ID3D12Resource** texture) noexcept
{
if (!d3dDevice)
return E_POINTER;
@ -1144,7 +1144,7 @@ namespace
unsigned int loadFlags,
_Outptr_ ID3D12Resource** texture,
std::vector<D3D12_SUBRESOURCE_DATA>& subresources,
_Out_opt_ bool* outIsCubeMap)
_Out_opt_ bool* outIsCubeMap) noexcept(false)
{
HRESULT hr = S_OK;
@ -1364,9 +1364,10 @@ namespace
{
subresources.clear();
maxsize = (resDim == D3D12_RESOURCE_DIMENSION_TEXTURE3D)
maxsize = static_cast<size_t>(
(resDim == D3D12_RESOURCE_DIMENSION_TEXTURE3D)
? D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION
: D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION;
: D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION);
hr = FillInitData(width, height, depth, mipCount, arraySize,
numberOfPlanes, format,
@ -1389,7 +1390,7 @@ namespace
}
//--------------------------------------------------------------------------------------
DDS_ALPHA_MODE GetAlphaMode( _In_ const DDS_HEADER* header )
DDS_ALPHA_MODE GetAlphaMode( _In_ const DDS_HEADER* header ) noexcept
{
if ( header->ddspf.flags & DDS_FOURCC )
{
@ -1423,7 +1424,7 @@ namespace
//--------------------------------------------------------------------------------------
void SetDebugTextureInfo(
_In_z_ const wchar_t* fileName,
_In_ ID3D12Resource** texture)
_In_ ID3D12Resource** texture) noexcept
{
#if !defined(NO_D3D12_DEBUG_NAME) && ( defined(_DEBUG) || defined(PROFILE) )
if (texture)
@ -1513,7 +1514,8 @@ HRESULT DirectX::LoadDDSTextureFromMemoryEx(
const uint8_t* bitData = nullptr;
size_t bitSize = 0;
HRESULT hr = LoadTextureDataFromMemory(ddsData, ddsDataSize,
HRESULT hr = LoadTextureDataFromMemory(ddsData,
ddsDataSize,
&header,
&bitData,
&bitSize

View File

@ -18,9 +18,9 @@
#include <d3d12.h>
#include <cstdint>
#include <memory>
#include <vector>
#include <stdint.h>
namespace DirectX

View File

@ -82,7 +82,7 @@ namespace
#define DDS_SURFACE_FLAGS_TEXTURE 0x00001000 // DDSCAPS_TEXTURE
typedef struct
struct DDS_HEADER
{
uint32_t size;
uint32_t flags;
@ -98,16 +98,16 @@ namespace
uint32_t caps3;
uint32_t caps4;
uint32_t reserved2;
} DDS_HEADER;
};
typedef struct
struct DDS_HEADER_DXT10
{
DXGI_FORMAT dxgiFormat;
uint32_t resourceDimension;
uint32_t miscFlag; // see D3D11_RESOURCE_MISC_FLAG
uint32_t arraySize;
uint32_t reserved;
} DDS_HEADER_DXT10;
};
#pragma pack(pop)
@ -192,7 +192,7 @@ namespace
//-----------------------------------------------------------------------------
struct handle_closer { void operator()(HANDLE h) { if (h) CloseHandle(h); } };
typedef std::unique_ptr<void, handle_closer> ScopedHandle;
using ScopedHandle = std::unique_ptr<void, handle_closer>;
inline HANDLE safe_handle( HANDLE h ) { return (h == INVALID_HANDLE_VALUE) ? nullptr : h; }
@ -245,7 +245,7 @@ namespace
//--------------------------------------------------------------------------------------
// Return the BPP for a particular format
//--------------------------------------------------------------------------------------
size_t BitsPerPixel( _In_ DXGI_FORMAT fmt )
size_t BitsPerPixel( _In_ DXGI_FORMAT fmt ) noexcept
{
switch( fmt )
{
@ -395,7 +395,7 @@ namespace
//--------------------------------------------------------------------------------------
// Determines if the format is block compressed
//--------------------------------------------------------------------------------------
bool IsCompressed( _In_ DXGI_FORMAT fmt )
bool IsCompressed( _In_ DXGI_FORMAT fmt ) noexcept
{
switch ( fmt )
{
@ -437,7 +437,7 @@ namespace
_In_ DXGI_FORMAT fmt,
_Out_opt_ size_t* outNumBytes,
_Out_opt_ size_t* outRowBytes,
_Out_opt_ size_t* outNumRows)
_Out_opt_ size_t* outNumRows) noexcept
{
uint64_t numBytes = 0;
uint64_t rowBytes = 0;
@ -578,7 +578,7 @@ namespace
//--------------------------------------------------------------------------------------
DXGI_FORMAT EnsureNotTypeless( DXGI_FORMAT fmt )
DXGI_FORMAT EnsureNotTypeless( DXGI_FORMAT fmt ) noexcept
{
// Assumes UNORM or FLOAT; doesn't use UINT or SINT
switch( fmt )
@ -612,7 +612,7 @@ namespace
_In_ ID3D11DeviceContext* pContext,
_In_ ID3D11Resource* pSource,
D3D11_TEXTURE2D_DESC& desc,
ComPtr<ID3D11Texture2D>& pStaging )
ComPtr<ID3D11Texture2D>& pStaging ) noexcept
{
if ( !pContext || !pSource )
return E_INVALIDARG;
@ -769,7 +769,7 @@ _Use_decl_annotations_
HRESULT DirectX::SaveDDSTextureToFile(
ID3D11DeviceContext* pContext,
ID3D11Resource* pSource,
const wchar_t* fileName )
const wchar_t* fileName ) noexcept
{
if ( !fileName )
return E_INVALIDARG;
@ -940,7 +940,7 @@ HRESULT DirectX::SaveWICTextureToFile(
const wchar_t* fileName,
const GUID* targetFormat,
std::function<void(IPropertyBag2*)> setCustomProps,
bool forceSRGB)
bool forceSRGB) noexcept
{
if ( !fileName )
return E_INVALIDARG;
@ -1030,16 +1030,16 @@ HRESULT DirectX::SaveWICTextureToFile(
if ( FAILED(hr) )
return hr;
if ( targetFormat && memcmp( &guidContainerFormat, &GUID_ContainerFormatBmp, sizeof(WICPixelFormatGUID) ) == 0 && g_WIC2 )
if (targetFormat && memcmp(&guidContainerFormat, &GUID_ContainerFormatBmp, sizeof(WICPixelFormatGUID)) == 0 && g_WIC2)
{
// Opt-in to the WIC2 support for writing 32-bit Windows BMP files with an alpha channel
PROPBAG2 option = {};
option.pstrName = const_cast<wchar_t*>(L"EnableV5Header32bppBGRA");
VARIANT varValue;
VARIANT varValue;
varValue.vt = VT_BOOL;
varValue.boolVal = VARIANT_TRUE;
(void)props->Write( 1, &option, &varValue );
varValue.boolVal = VARIANT_TRUE;
(void)props->Write(1, &option, &varValue);
}
if ( setCustomProps )
@ -1073,7 +1073,7 @@ HRESULT DirectX::SaveWICTextureToFile(
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)
case DXGI_FORMAT_R32G32B32A32_FLOAT:
case DXGI_FORMAT_R16G16B16A16_FLOAT:
if ( g_WIC2 )
if (g_WIC2)
{
targetGuid = GUID_WICPixelFormat96bppRGBFloat;
}

View File

@ -28,7 +28,7 @@ namespace DirectX
HRESULT __cdecl SaveDDSTextureToFile(
_In_ ID3D11DeviceContext* pContext,
_In_ ID3D11Resource* pSource,
_In_z_ const wchar_t* fileName);
_In_z_ const wchar_t* fileName) noexcept;
HRESULT __cdecl SaveWICTextureToFile(
_In_ ID3D11DeviceContext* pContext,
@ -37,5 +37,5 @@ namespace DirectX
_In_z_ const wchar_t* fileName,
_In_opt_ const GUID* targetFormat = nullptr,
_In_opt_ std::function<void __cdecl(IPropertyBag2*)> setCustomProps = nullptr,
_In_ bool forceSRGB = false);
_In_ bool forceSRGB = false) noexcept;
}

View File

@ -90,7 +90,7 @@ namespace
#define DDS_SURFACE_FLAGS_TEXTURE 0x00001000 // DDSCAPS_TEXTURE
typedef struct
struct DDS_HEADER
{
uint32_t size;
uint32_t flags;
@ -106,16 +106,16 @@ namespace
uint32_t caps3;
uint32_t caps4;
uint32_t reserved2;
} DDS_HEADER;
};
typedef struct
struct DDS_HEADER_DXT10
{
DXGI_FORMAT dxgiFormat;
uint32_t resourceDimension;
uint32_t miscFlag; // see D3D11_RESOURCE_MISC_FLAG
uint32_t arraySize;
uint32_t reserved;
} DDS_HEADER_DXT10;
};
#pragma pack(pop)
@ -200,7 +200,7 @@ namespace
//-----------------------------------------------------------------------------
struct handle_closer { void operator()(HANDLE h) { if (h) CloseHandle(h); } };
typedef std::unique_ptr<void, handle_closer> ScopedHandle;
using ScopedHandle = std::unique_ptr<void, handle_closer>;
inline HANDLE safe_handle( HANDLE h ) { return (h == INVALID_HANDLE_VALUE) ? nullptr : h; }
@ -253,7 +253,7 @@ namespace
//--------------------------------------------------------------------------------------
// Return the BPP for a particular format
//--------------------------------------------------------------------------------------
size_t BitsPerPixel( _In_ DXGI_FORMAT fmt )
size_t BitsPerPixel( _In_ DXGI_FORMAT fmt ) noexcept
{
switch( fmt )
{
@ -406,7 +406,7 @@ namespace
//--------------------------------------------------------------------------------------
// Determines if the format is block compressed
//--------------------------------------------------------------------------------------
bool IsCompressed( _In_ DXGI_FORMAT fmt )
bool IsCompressed( _In_ DXGI_FORMAT fmt ) noexcept
{
switch ( fmt )
{
@ -448,7 +448,7 @@ namespace
_In_ DXGI_FORMAT fmt,
_Out_opt_ size_t* outNumBytes,
_Out_opt_ size_t* outRowBytes,
_Out_opt_ size_t* outNumRows)
_Out_opt_ size_t* outNumRows) noexcept
{
uint64_t numBytes = 0;
uint64_t rowBytes = 0;
@ -590,7 +590,7 @@ namespace
//--------------------------------------------------------------------------------------
DXGI_FORMAT EnsureNotTypeless( DXGI_FORMAT fmt )
DXGI_FORMAT EnsureNotTypeless( DXGI_FORMAT fmt ) noexcept
{
// Assumes UNORM or FLOAT; doesn't use UINT or SINT
switch( fmt )
@ -624,7 +624,7 @@ namespace
_In_ ID3D12GraphicsCommandList* commandList,
_In_ ID3D12Resource* resource,
_In_ D3D12_RESOURCE_STATES stateBefore,
_In_ D3D12_RESOURCE_STATES stateAfter)
_In_ D3D12_RESOURCE_STATES stateAfter) noexcept
{
assert(commandList != nullptr);
assert(resource != nullptr);
@ -651,7 +651,7 @@ namespace
const D3D12_RESOURCE_DESC& desc,
ComPtr<ID3D12Resource>& pStaging,
D3D12_RESOURCE_STATES beforeState,
D3D12_RESOURCE_STATES afterState)
D3D12_RESOURCE_STATES afterState) noexcept
{
if (!pCommandQ || !pSource)
return E_INVALIDARG;
@ -823,7 +823,7 @@ namespace
ifactory)) ? TRUE : FALSE;
}
IWICImagingFactory2* _GetWIC()
IWICImagingFactory2* _GetWIC() noexcept
{
static INIT_ONCE s_initOnce = INIT_ONCE_STATIC_INIT;
@ -848,7 +848,7 @@ HRESULT DirectX::SaveDDSTextureToFile(
ID3D12Resource* pSource,
const wchar_t* fileName,
D3D12_RESOURCE_STATES beforeState,
D3D12_RESOURCE_STATES afterState)
D3D12_RESOURCE_STATES afterState) noexcept
{
if ( !fileName )
return E_INVALIDARG;
@ -1054,7 +1054,7 @@ HRESULT DirectX::SaveWICTextureToFile(
D3D12_RESOURCE_STATES afterState,
const GUID* targetFormat,
std::function<void(IPropertyBag2*)> setCustomProps,
bool forceSRGB)
bool forceSRGB) noexcept
{
if ( !fileName )
return E_INVALIDARG;

View File

@ -30,7 +30,7 @@ namespace DirectX
_In_ ID3D12Resource* pSource,
_In_z_ const wchar_t* fileName,
D3D12_RESOURCE_STATES beforeState = D3D12_RESOURCE_STATE_RENDER_TARGET,
D3D12_RESOURCE_STATES afterState = D3D12_RESOURCE_STATE_RENDER_TARGET);
D3D12_RESOURCE_STATES afterState = D3D12_RESOURCE_STATE_RENDER_TARGET) noexcept;
HRESULT __cdecl SaveWICTextureToFile(
_In_ ID3D12CommandQueue* pCommandQ,
@ -41,5 +41,5 @@ namespace DirectX
D3D12_RESOURCE_STATES afterState = D3D12_RESOURCE_STATE_RENDER_TARGET,
_In_opt_ const GUID* targetFormat = nullptr,
_In_opt_ std::function<void __cdecl(IPropertyBag2*)> setCustomProps = nullptr,
bool forceSRGB = false);
bool forceSRGB = false) noexcept;
}

View File

@ -48,7 +48,7 @@ namespace
{
//--------------------------------------------------------------------------------------
template<UINT TNameLength>
inline void SetDebugObjectName(_In_ ID3D11DeviceChild* resource, _In_ const char(&name)[TNameLength])
inline void SetDebugObjectName(_In_ ID3D11DeviceChild* resource, _In_ const char(&name)[TNameLength]) noexcept
{
#if !defined(NO_D3D11_DEBUG_NAME) && ( defined(_DEBUG) || defined(PROFILE) )
resource->SetPrivateData(WKPDID_D3DDebugObjectName, TNameLength - 1, name);
@ -203,12 +203,13 @@ namespace
#endif
}
IWICImagingFactory* _GetWIC()
IWICImagingFactory* _GetWIC() noexcept
{
static INIT_ONCE s_initOnce = INIT_ONCE_STATIC_INIT;
IWICImagingFactory* factory = nullptr;
if (!InitOnceExecuteOnce(&s_initOnce,
if (!InitOnceExecuteOnce(
&s_initOnce,
InitializeWICFactory,
nullptr,
reinterpret_cast<LPVOID*>(&factory)))
@ -220,7 +221,7 @@ namespace
}
//---------------------------------------------------------------------------------
DXGI_FORMAT _WICToDXGI(const GUID& guid)
DXGI_FORMAT _WICToDXGI(const GUID& guid) noexcept
{
for (size_t i = 0; i < _countof(g_WICFormats); ++i)
{
@ -240,7 +241,7 @@ namespace
}
//---------------------------------------------------------------------------------
size_t _WICBitsPerPixel(REFGUID targetGuid)
size_t _WICBitsPerPixel(REFGUID targetGuid) noexcept
{
auto pWIC = _GetWIC();
if (!pWIC)
@ -270,7 +271,7 @@ namespace
//--------------------------------------------------------------------------------------
DXGI_FORMAT MakeSRGB(_In_ DXGI_FORMAT format)
DXGI_FORMAT MakeSRGB(_In_ DXGI_FORMAT format) noexcept
{
switch (format)
{
@ -312,7 +313,7 @@ namespace
_In_ unsigned int miscFlags,
_In_ unsigned int loadFlags,
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView)
_Outptr_opt_ ID3D11ShaderResourceView** textureView) noexcept
{
UINT width, height;
HRESULT hr = frame->GetSize(&width, &height);
@ -334,20 +335,20 @@ namespace
{
case D3D_FEATURE_LEVEL_9_1:
case D3D_FEATURE_LEVEL_9_2:
maxsize = 2048 /*D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION*/;
maxsize = 2048u /*D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION*/;
break;
case D3D_FEATURE_LEVEL_9_3:
maxsize = 4096 /*D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION*/;
maxsize = 4096u /*D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION*/;
break;
case D3D_FEATURE_LEVEL_10_0:
case D3D_FEATURE_LEVEL_10_1:
maxsize = 8192 /*D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION*/;
maxsize = 8192u /*D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION*/;
break;
default:
maxsize = D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION;
maxsize = size_t(D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION);
break;
}
}
@ -618,10 +619,10 @@ namespace
}
// Create texture
D3D11_TEXTURE2D_DESC desc;
D3D11_TEXTURE2D_DESC desc = {};
desc.Width = twidth;
desc.Height = theight;
desc.MipLevels = (autogen) ? 0 : 1;
desc.MipLevels = (autogen) ? 0u : 1u;
desc.ArraySize = 1;
desc.Format = format;
desc.SampleDesc.Count = 1;
@ -655,7 +656,7 @@ namespace
SRVDesc.Format = desc.Format;
SRVDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
SRVDesc.Texture2D.MipLevels = (autogen) ? UINT(-1) : 1;
SRVDesc.Texture2D.MipLevels = (autogen) ? unsigned(-1) : 1u;
hr = d3dDevice->CreateShaderResourceView(tex, &SRVDesc, textureView);
if (FAILED(hr))
@ -691,7 +692,7 @@ namespace
void SetDebugTextureInfo(
_In_z_ const wchar_t* fileName,
_In_opt_ ID3D11Resource** texture,
_In_opt_ ID3D11ShaderResourceView** textureView)
_In_opt_ ID3D11ShaderResourceView** textureView) noexcept
{
#if !defined(NO_D3D11_DEBUG_NAME) && ( defined(_DEBUG) || defined(PROFILE) )
if (texture || textureView)
@ -751,7 +752,7 @@ HRESULT DirectX::CreateWICTextureFromMemory(
size_t wicDataSize,
ID3D11Resource** texture,
ID3D11ShaderResourceView** textureView,
size_t maxsize)
size_t maxsize) noexcept
{
return CreateWICTextureFromMemoryEx(d3dDevice, nullptr,
wicData, wicDataSize,
@ -769,7 +770,7 @@ HRESULT DirectX::CreateWICTextureFromMemory(
size_t wicDataSize,
ID3D11Resource** texture,
ID3D11ShaderResourceView** textureView,
size_t maxsize)
size_t maxsize) noexcept
{
return CreateWICTextureFromMemoryEx(d3dDevice, d3dContext,
wicData, wicDataSize,
@ -791,7 +792,7 @@ HRESULT DirectX::CreateWICTextureFromMemoryEx(
unsigned int miscFlags,
unsigned int loadFlags,
ID3D11Resource** texture,
ID3D11ShaderResourceView** textureView)
ID3D11ShaderResourceView** textureView) noexcept
{
return CreateWICTextureFromMemoryEx(d3dDevice, nullptr,
wicData, wicDataSize,
@ -814,7 +815,7 @@ HRESULT DirectX::CreateWICTextureFromMemoryEx(
unsigned int miscFlags,
unsigned int loadFlags,
ID3D11Resource** texture,
ID3D11ShaderResourceView** textureView)
ID3D11ShaderResourceView** textureView) noexcept
{
if (texture)
{
@ -895,7 +896,7 @@ HRESULT DirectX::CreateWICTextureFromFile(
const wchar_t* fileName,
ID3D11Resource** texture,
ID3D11ShaderResourceView** textureView,
size_t maxsize)
size_t maxsize) noexcept
{
return CreateWICTextureFromFileEx(d3dDevice, nullptr,
fileName, maxsize,
@ -911,7 +912,7 @@ HRESULT DirectX::CreateWICTextureFromFile(
const wchar_t* fileName,
ID3D11Resource** texture,
ID3D11ShaderResourceView** textureView,
size_t maxsize)
size_t maxsize) noexcept
{
return CreateWICTextureFromFileEx(d3dDevice, d3dContext,
fileName,
@ -932,7 +933,7 @@ HRESULT DirectX::CreateWICTextureFromFileEx(
unsigned int miscFlags,
unsigned int loadFlags,
ID3D11Resource** texture,
ID3D11ShaderResourceView** textureView)
ID3D11ShaderResourceView** textureView) noexcept
{
return CreateWICTextureFromFileEx(d3dDevice, nullptr,
fileName,
@ -954,7 +955,7 @@ HRESULT DirectX::CreateWICTextureFromFileEx(
unsigned int miscFlags,
unsigned int loadFlags,
ID3D11Resource** texture,
ID3D11ShaderResourceView** textureView)
ID3D11ShaderResourceView** textureView) noexcept
{
if (texture)
{

View File

@ -24,14 +24,14 @@
#pragma once
#include <d3d11_1.h>
#include <stdint.h>
#include <cstdint>
namespace DirectX
{
#ifndef WIC_LOADER_FLAGS_DEFINED
#define WIC_LOADER_FLAGS_DEFINED
enum WIC_LOADER_FLAGS
enum WIC_LOADER_FLAGS : uint32_t
{
WIC_LOADER_DEFAULT = 0,
WIC_LOADER_FORCE_SRGB = 0x1,
@ -46,14 +46,14 @@ namespace DirectX
_In_ size_t wicDataSize,
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
_In_ size_t maxsize = 0);
_In_ size_t maxsize = 0) noexcept;
HRESULT CreateWICTextureFromFile(
_In_ ID3D11Device* d3dDevice,
_In_z_ const wchar_t* szFileName,
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
_In_ size_t maxsize = 0);
_In_ size_t maxsize = 0) noexcept;
// Standard version with optional auto-gen mipmap support
HRESULT CreateWICTextureFromMemory(
@ -63,7 +63,7 @@ namespace DirectX
_In_ size_t wicDataSize,
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
_In_ size_t maxsize = 0);
_In_ size_t maxsize = 0) noexcept;
HRESULT CreateWICTextureFromFile(
_In_ ID3D11Device* d3dDevice,
@ -71,7 +71,7 @@ namespace DirectX
_In_z_ const wchar_t* szFileName,
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView,
_In_ size_t maxsize = 0);
_In_ size_t maxsize = 0) noexcept;
// Extended version
HRESULT CreateWICTextureFromMemoryEx(
@ -85,7 +85,7 @@ namespace DirectX
_In_ unsigned int miscFlags,
_In_ unsigned int loadFlags,
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView);
_Outptr_opt_ ID3D11ShaderResourceView** textureView) noexcept;
HRESULT CreateWICTextureFromFileEx(
_In_ ID3D11Device* d3dDevice,
@ -97,7 +97,7 @@ namespace DirectX
_In_ unsigned int miscFlags,
_In_ unsigned int loadFlags,
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView);
_Outptr_opt_ ID3D11ShaderResourceView** textureView) noexcept;
// Extended version with optional auto-gen mipmap support
HRESULT CreateWICTextureFromMemoryEx(
@ -112,7 +112,7 @@ namespace DirectX
_In_ unsigned int miscFlags,
_In_ unsigned int loadFlags,
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView);
_Outptr_opt_ ID3D11ShaderResourceView** textureView) noexcept;
HRESULT CreateWICTextureFromFileEx(
_In_ ID3D11Device* d3dDevice,
@ -125,6 +125,5 @@ namespace DirectX
_In_ unsigned int miscFlags,
_In_ unsigned int loadFlags,
_Outptr_opt_ ID3D11Resource** texture,
_Outptr_opt_ ID3D11ShaderResourceView** textureView);
_Outptr_opt_ ID3D11ShaderResourceView** textureView) noexcept;
}

View File

@ -161,7 +161,7 @@ namespace
ifactory)) ? TRUE : FALSE;
}
IWICImagingFactory2* _GetWIC()
IWICImagingFactory2* _GetWIC() noexcept
{
static INIT_ONCE s_initOnce = INIT_ONCE_STATIC_INIT;
@ -179,7 +179,7 @@ namespace
//---------------------------------------------------------------------------------
template<UINT TNameLength>
inline void SetDebugObjectName(_In_ ID3D12DeviceChild* resource, _In_z_ const wchar_t(&name)[TNameLength])
inline void SetDebugObjectName(_In_ ID3D12DeviceChild* resource, _In_z_ const wchar_t(&name)[TNameLength]) noexcept
{
#if !defined(NO_D3D12_DEBUG_NAME) && ( defined(_DEBUG) || defined(PROFILE) )
resource->SetName(name);
@ -189,7 +189,7 @@ namespace
#endif
}
inline uint32_t CountMips(uint32_t width, uint32_t height)
inline uint32_t CountMips(uint32_t width, uint32_t height) noexcept
{
if (width == 0 || height == 0)
return 0;
@ -205,7 +205,7 @@ namespace
}
//--------------------------------------------------------------------------------------
DXGI_FORMAT MakeSRGB(_In_ DXGI_FORMAT format)
DXGI_FORMAT MakeSRGB(_In_ DXGI_FORMAT format) noexcept
{
switch (format)
{
@ -236,7 +236,7 @@ namespace
}
//---------------------------------------------------------------------------------
DXGI_FORMAT _WICToDXGI(const GUID& guid)
DXGI_FORMAT _WICToDXGI(const GUID& guid) noexcept
{
for (size_t i = 0; i < _countof(g_WICFormats); ++i)
{
@ -248,7 +248,7 @@ namespace
}
//---------------------------------------------------------------------------------
size_t _WICBitsPerPixel(REFGUID targetGuid)
size_t _WICBitsPerPixel(REFGUID targetGuid) noexcept
{
auto pWIC = _GetWIC();
if (!pWIC)
@ -284,7 +284,7 @@ namespace
unsigned int loadFlags,
_Outptr_ ID3D12Resource** texture,
std::unique_ptr<uint8_t[]>& decodedData,
D3D12_SUBRESOURCE_DATA& subresource)
D3D12_SUBRESOURCE_DATA& subresource) noexcept
{
UINT width, height;
HRESULT hr = frame->GetSize(&width, &height);
@ -549,7 +549,7 @@ namespace
//--------------------------------------------------------------------------------------
void SetDebugTextureInfo(
_In_z_ const wchar_t* fileName,
_In_ ID3D12Resource** texture)
_In_ ID3D12Resource** texture) noexcept
{
#if !defined(NO_D3D12_DEBUG_NAME) && ( defined(_DEBUG) || defined(PROFILE) )
if (texture)
@ -586,7 +586,7 @@ HRESULT DirectX::LoadWICTextureFromMemory(
ID3D12Resource** texture,
std::unique_ptr<uint8_t[]>& decodedData,
D3D12_SUBRESOURCE_DATA& subresource,
size_t maxsize)
size_t maxsize) noexcept
{
return LoadWICTextureFromMemoryEx(
d3dDevice,
@ -612,7 +612,7 @@ HRESULT DirectX::LoadWICTextureFromMemoryEx(
unsigned int loadFlags,
ID3D12Resource** texture,
std::unique_ptr<uint8_t[]>& decodedData,
D3D12_SUBRESOURCE_DATA& subresource)
D3D12_SUBRESOURCE_DATA& subresource) noexcept
{
if (texture)
{
@ -675,7 +675,7 @@ HRESULT DirectX::LoadWICTextureFromFile(
ID3D12Resource** texture,
std::unique_ptr<uint8_t[]>& wicData,
D3D12_SUBRESOURCE_DATA& subresource,
size_t maxsize)
size_t maxsize) noexcept
{
return LoadWICTextureFromFileEx(
d3dDevice,
@ -699,7 +699,7 @@ HRESULT DirectX::LoadWICTextureFromFileEx(
unsigned int loadFlags,
ID3D12Resource** texture,
std::unique_ptr<uint8_t[]>& decodedData,
D3D12_SUBRESOURCE_DATA& subresource)
D3D12_SUBRESOURCE_DATA& subresource) noexcept
{
if (texture)
{

View File

@ -21,7 +21,8 @@
#pragma once
#include <d3d12.h>
#include <stdint.h>
#include <cstdint>
#include <memory>
@ -29,7 +30,7 @@ namespace DirectX
{
#ifndef WIC_LOADER_FLAGS_DEFINED
#define WIC_LOADER_FLAGS_DEFINED
enum WIC_LOADER_FLAGS
enum WIC_LOADER_FLAGS : uint32_t
{
WIC_LOADER_DEFAULT = 0,
WIC_LOADER_FORCE_SRGB = 0x1,
@ -47,7 +48,7 @@ namespace DirectX
_Outptr_ ID3D12Resource** texture,
std::unique_ptr<uint8_t[]>& decodedData,
D3D12_SUBRESOURCE_DATA& subresource,
size_t maxsize = 0);
size_t maxsize = 0) noexcept;
HRESULT __cdecl LoadWICTextureFromFile(
_In_ ID3D12Device* d3dDevice,
@ -55,7 +56,7 @@ namespace DirectX
_Outptr_ ID3D12Resource** texture,
std::unique_ptr<uint8_t[]>& decodedData,
D3D12_SUBRESOURCE_DATA& subresource,
size_t maxsize = 0);
size_t maxsize = 0) noexcept;
// Extended version
HRESULT __cdecl LoadWICTextureFromMemoryEx(
@ -67,7 +68,7 @@ namespace DirectX
unsigned int loadFlags,
_Outptr_ ID3D12Resource** texture,
std::unique_ptr<uint8_t[]>& decodedData,
D3D12_SUBRESOURCE_DATA& subresource);
D3D12_SUBRESOURCE_DATA& subresource) noexcept;
HRESULT __cdecl LoadWICTextureFromFileEx(
_In_ ID3D12Device* d3dDevice,
@ -77,5 +78,5 @@ namespace DirectX
unsigned int loadFlags,
_Outptr_ ID3D12Resource** texture,
std::unique_ptr<uint8_t[]>& decodedData,
D3D12_SUBRESOURCE_DATA& subresource);
D3D12_SUBRESOURCE_DATA& subresource) noexcept;
}