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