summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2018-11-30 06:45:16 +0000
committerEgor Yusov <egor.yusov@gmail.com>2018-11-30 06:45:16 +0000
commita294546bcc7c883edd113f2c80d7f278ff8219ed (patch)
treec876be23d46c758a38ef92efd248400fa5fe9fe2
parentAdded DRAW_FLAG_VERIFY_STATES and DISPATCH_FLAG_VERIFY_STATES flags (diff)
downloadDiligentTools-a294546bcc7c883edd113f2c80d7f278ff8219ed.tar.gz
DiligentTools-a294546bcc7c883edd113f2c80d7f278ff8219ed.zip
Improved type safety of flag enums
-rw-r--r--RenderScript/include/DeviceContextFuncBindings.h4
-rw-r--r--RenderScript/include/EnumMappings.h4
-rw-r--r--RenderScript/include/LuaBindings.h8
-rw-r--r--RenderScript/include/TextureParser.h4
-rw-r--r--RenderScript/src/BufferParser.cpp5
-rw-r--r--RenderScript/src/DeviceContextFuncBindings.cpp8
-rw-r--r--RenderScript/src/EnumMappings.cpp1
-rw-r--r--RenderScript/src/TextureParser.cpp5
-rw-r--r--TextureLoader/include/DDSLoader.h6
-rw-r--r--TextureLoader/interface/TextureLoader.h6
-rw-r--r--TextureLoader/src/DDSLoader.cpp20
-rw-r--r--TextureLoader/src/TextureLoader.cpp2
12 files changed, 39 insertions, 34 deletions
diff --git a/RenderScript/include/DeviceContextFuncBindings.h b/RenderScript/include/DeviceContextFuncBindings.h
index f3bfa98..85fd527 100644
--- a/RenderScript/include/DeviceContextFuncBindings.h
+++ b/RenderScript/include/DeviceContextFuncBindings.h
@@ -29,7 +29,7 @@
namespace std
{
- DEFINE_ENUM_HASH( Diligent::COMMIT_SHADER_RESOURCES_FLAG )
+ DEFINE_ENUM_HASH( Diligent::COMMIT_SHADER_RESOURCES_FLAGS )
}
namespace Diligent
@@ -61,7 +61,7 @@ namespace Diligent
int TransitionShaderResources( lua_State * );
ClassMethodCaller<DeviceContextFuncBindings> m_TransitionShaderResourcesBinding;
- EnumMapping<COMMIT_SHADER_RESOURCES_FLAG> m_CommitShaderResFlagsEnumMapping;
+ EnumMapping<COMMIT_SHADER_RESOURCES_FLAGS> m_CommitShaderResFlagsEnumMapping;
String m_TexViewMetatableName;
String m_ShaderResBindingMetatableName;
diff --git a/RenderScript/include/EnumMappings.h b/RenderScript/include/EnumMappings.h
index 5e0231e..db0b699 100644
--- a/RenderScript/include/EnumMappings.h
+++ b/RenderScript/include/EnumMappings.h
@@ -43,7 +43,7 @@ namespace std
// Explicit namespace declaraion is necesseary to avoid
// name conflicts when building for windows store
DEFINE_ENUM_HASH( Diligent::BIND_FLAGS )
- DEFINE_ENUM_HASH( Diligent::CPU_ACCESS_FLAG )
+ DEFINE_ENUM_HASH( Diligent::CPU_ACCESS_FLAGS )
DEFINE_ENUM_HASH( Diligent::COMPARISON_FUNCTION )
DEFINE_ENUM_HASH( Diligent::BIND_SHADER_RESOURCES_FLAGS )
DEFINE_ENUM_HASH( Diligent::SHADER_TYPE )
@@ -65,7 +65,7 @@ namespace Diligent
};
#define DEFINE_ENUM_ELEMENT_MAPPING(EnumMapping, Elem) EnumMapping.AddMapping(#Elem, Elem)
- class CpuAccessFlagEnumMapping : public EnumMapping < Diligent::CPU_ACCESS_FLAG >
+ class CpuAccessFlagEnumMapping : public EnumMapping < Diligent::CPU_ACCESS_FLAGS >
{
public:
CpuAccessFlagEnumMapping();
diff --git a/RenderScript/include/LuaBindings.h b/RenderScript/include/LuaBindings.h
index e43b9a3..a09e1d0 100644
--- a/RenderScript/include/LuaBindings.h
+++ b/RenderScript/include/LuaBindings.h
@@ -461,7 +461,7 @@ namespace Diligent
BindingsMap.insert( std::make_pair( #Member, std::unique_ptr<MemberBinderBase>(pNewBinder) ) ); \
}while(false)
- template< typename EnumType, typename FlagsType = Uint32 >
+ template< typename EnumType, typename FlagsType = std::underlying_type<EnumType>::type >
class FlagsLoader : public MemberBinderBase
{
public:
@@ -478,7 +478,7 @@ namespace Diligent
int ArrayInd = 1;
for( auto it = m_EnumMapping.m_Val2StrMap.begin(); it != m_EnumMapping.m_Val2StrMap.end(); ++it )
{
- if( static_cast<EnumType>(Flags & it->first) == it->first )
+ if( it->first != 0 && static_cast<EnumType>(Flags & it->first) == it->first || Flags == 0 && it->first == 0)
{
lua_pushnumber( L, ArrayInd ); // -0 | +1 -> +1
PushValue<const String&>( L, it->second ); // -0 | +1 -> +1
@@ -490,7 +490,7 @@ namespace Diligent
virtual void SetValue( lua_State *L, int Index, void* pBasePointer )
{
- FlagsType Flags = 0;
+ FlagsType Flags = static_cast<FlagsType>(0);
if( lua_isnumber( L, Index ) )
{
Flags = static_cast<FlagsType>( ReadValueFromLua<Uint32>( L, Index ) );
@@ -528,7 +528,7 @@ namespace Diligent
{
String AllowableValues = GetEnumMappingsString<EnumType>( m_EnumMapping );
SCRIPT_PARSING_ERROR( L, "Unknown flag (\"", CurrFlagName, "\") provided for parameter ", m_MemberName, ". Only the following flags are allowed:\n", AllowableValues );
- return 0;
+ return static_cast<FlagsType>(0);
}
}
diff --git a/RenderScript/include/TextureParser.h b/RenderScript/include/TextureParser.h
index c35e3dd..0e0e542 100644
--- a/RenderScript/include/TextureParser.h
+++ b/RenderScript/include/TextureParser.h
@@ -30,7 +30,7 @@
namespace std
{
- DEFINE_ENUM_HASH( Diligent::MISC_TEXTURE_FLAG )
+ DEFINE_ENUM_HASH( Diligent::MISC_TEXTURE_FLAGS )
}
namespace Diligent
@@ -58,7 +58,7 @@ namespace Diligent
// Explicit namespace declaraion is necesseary to avoid
// name conflicts when building for windows store
- EnumMapping<Diligent::MISC_TEXTURE_FLAG> m_MiscFlagEnumMapping;
+ EnumMapping<Diligent::MISC_TEXTURE_FLAGS> m_MiscFlagEnumMapping;
UsageEnumMapping m_UsageEnumMapping;
CpuAccessFlagEnumMapping m_CpuAccessFlagEnumMapping;
diff --git a/RenderScript/src/BufferParser.cpp b/RenderScript/src/BufferParser.cpp
index ebf04d0..5a996a6 100644
--- a/RenderScript/src/BufferParser.cpp
+++ b/RenderScript/src/BufferParser.cpp
@@ -51,7 +51,7 @@ namespace Diligent
DEFINE_FLAGS_BINDER( m_Bindings, SBuffDescWrapper, BindFlags, Diligent::BIND_FLAGS, m_BindFlagEnumMapping );
DEFINE_ENUM_BINDER( m_Bindings, SBuffDescWrapper, Usage, m_UsageEnumMapping );
- DEFINE_FLAGS_BINDER( m_Bindings, SBuffDescWrapper, CPUAccessFlags, CPU_ACCESS_FLAG, m_CpuAccessFlagEnumMapping );
+ DEFINE_FLAGS_BINDER( m_Bindings, SBuffDescWrapper, CPUAccessFlags, CPU_ACCESS_FLAGS, m_CpuAccessFlagEnumMapping );
DEFINE_ENUM_ELEMENT_MAPPING( m_BuffModeEnumMapping, BUFFER_MODE_UNDEFINED );
DEFINE_ENUM_ELEMENT_MAPPING( m_BuffModeEnumMapping, BUFFER_MODE_FORMATTED );
@@ -66,6 +66,7 @@ namespace Diligent
DEFINE_BINDER( m_Bindings, SBuffDescWrapper, ElementByteStride );
+ DEFINE_ENUM_ELEMENT_MAPPING( m_SetVBFlagEnumMapping, SET_VERTEX_BUFFERS_FLAG_NONE );
DEFINE_ENUM_ELEMENT_MAPPING( m_SetVBFlagEnumMapping, SET_VERTEX_BUFFERS_FLAG_RESET );
};
@@ -139,7 +140,7 @@ namespace Diligent
}
}
- Uint32 Flags = 0;
+ SET_VERTEX_BUFFERS_FLAGS Flags = SET_VERTEX_BUFFERS_FLAG_NONE;
Uint32 NumBuffers = 0;
IBuffer *pBuffs[MaxBufferSlots] = {};
Uint32 Offsets[MaxBufferSlots] = {};
diff --git a/RenderScript/src/DeviceContextFuncBindings.cpp b/RenderScript/src/DeviceContextFuncBindings.cpp
index 3a154d2..f32f350 100644
--- a/RenderScript/src/DeviceContextFuncBindings.cpp
+++ b/RenderScript/src/DeviceContextFuncBindings.cpp
@@ -46,7 +46,9 @@ namespace Diligent
m_ShaderResBindingMetatableName( pSRBParser->GetMetatableName() ),
m_PSOMetatableName(pPSOParser->GetMetatableName())
{
+ DEFINE_ENUM_ELEMENT_MAPPING( m_CommitShaderResFlagsEnumMapping, COMMIT_SHADER_RESOURCES_FLAG_NONE );
DEFINE_ENUM_ELEMENT_MAPPING( m_CommitShaderResFlagsEnumMapping, COMMIT_SHADER_RESOURCES_FLAG_TRANSITION_RESOURCES );
+ DEFINE_ENUM_ELEMENT_MAPPING( m_CommitShaderResFlagsEnumMapping, COMMIT_SHADER_RESOURCES_FLAG_VERIFY_STATES );
};
int DeviceContextFuncBindings::SetRenderTargets( lua_State *L )
@@ -123,7 +125,7 @@ namespace Diligent
ITextureView *pView = nullptr;
Float32 fDepth = 1.f;
Uint8 Stencil = 0;
- Uint32 ClearFlags = 0;
+ CLEAR_DEPTH_STENCIL_FLAGS ClearFlags = CLEAR_DEPTH_FLAG_NONE;
int CurrArg = 1;
if( CurrArg <= NumArgs )
@@ -199,12 +201,12 @@ namespace Diligent
}
}
- Uint32 Flags = 0;
+ COMMIT_SHADER_RESOURCES_FLAGS Flags = COMMIT_SHADER_RESOURCES_FLAG_NONE;
if(NumArgs >= CurrArg &&
(lua_type( L, CurrArg ) == LUA_TSTRING ||
lua_type( L, CurrArg ) == LUA_TTABLE ) )
{
- FlagsLoader<COMMIT_SHADER_RESOURCES_FLAG> CommitShaderResFlagsLoader(0, "CommitShaderResourcesFlag", m_CommitShaderResFlagsEnumMapping);
+ FlagsLoader<COMMIT_SHADER_RESOURCES_FLAGS> CommitShaderResFlagsLoader(0, "CommitShaderResourcesFlag", m_CommitShaderResFlagsEnumMapping);
CommitShaderResFlagsLoader.SetValue( L, CurrArg, &Flags );
++CurrArg;
}
diff --git a/RenderScript/src/EnumMappings.cpp b/RenderScript/src/EnumMappings.cpp
index bcefd89..84ce7d9 100644
--- a/RenderScript/src/EnumMappings.cpp
+++ b/RenderScript/src/EnumMappings.cpp
@@ -30,6 +30,7 @@ namespace Diligent
{
CpuAccessFlagEnumMapping::CpuAccessFlagEnumMapping()
{
+ DEFINE_ENUM_ELEMENT_MAPPING( (*this), CPU_ACCESS_NONE );
DEFINE_ENUM_ELEMENT_MAPPING( (*this), CPU_ACCESS_READ );
DEFINE_ENUM_ELEMENT_MAPPING( (*this), CPU_ACCESS_WRITE );
}
diff --git a/RenderScript/src/TextureParser.cpp b/RenderScript/src/TextureParser.cpp
index 2ccd683..6515ebd 100644
--- a/RenderScript/src/TextureParser.cpp
+++ b/RenderScript/src/TextureParser.cpp
@@ -145,10 +145,11 @@ namespace Diligent
DEFINE_FLAGS_BINDER( m_Bindings, STexDescWrapper, BindFlags, Diligent::BIND_FLAGS, m_BindFlagEnumMapping );
DEFINE_ENUM_BINDER( m_Bindings, STexDescWrapper, Usage, m_UsageEnumMapping );
- DEFINE_FLAGS_BINDER( m_Bindings, STexDescWrapper, CPUAccessFlags, CPU_ACCESS_FLAG, m_CpuAccessFlagEnumMapping );
+ DEFINE_FLAGS_BINDER( m_Bindings, STexDescWrapper, CPUAccessFlags, CPU_ACCESS_FLAGS, m_CpuAccessFlagEnumMapping );
+ DEFINE_ENUM_ELEMENT_MAPPING( m_MiscFlagEnumMapping, MISC_TEXTURE_FLAG_NONE );
DEFINE_ENUM_ELEMENT_MAPPING( m_MiscFlagEnumMapping, MISC_TEXTURE_FLAG_GENERATE_MIPS );
- DEFINE_FLAGS_BINDER( m_Bindings, STexDescWrapper, MiscFlags, Diligent::MISC_TEXTURE_FLAG, m_MiscFlagEnumMapping );
+ DEFINE_FLAGS_BINDER( m_Bindings, STexDescWrapper, MiscFlags, Diligent::MISC_TEXTURE_FLAGS, m_MiscFlagEnumMapping );
DEFINE_BINDER_EX( m_Bindings, STexDescWrapper, ClearValue, OptimizedClearValue, 0 );
};
diff --git a/TextureLoader/include/DDSLoader.h b/TextureLoader/include/DDSLoader.h
index 242d856..792c97b 100644
--- a/TextureLoader/include/DDSLoader.h
+++ b/TextureLoader/include/DDSLoader.h
@@ -63,9 +63,9 @@ void CreateDDSTextureFromMemoryEx(
size_t maxsize,
Diligent::USAGE usage,
const char* name,
- unsigned int bindFlags,
- unsigned int cpuAccessFlags,
- unsigned int miscFlags,
+ Diligent::BIND_FLAGS bindFlags,
+ Diligent::CPU_ACCESS_FLAGS cpuAccessFlags,
+ Diligent::MISC_TEXTURE_FLAGS miscFlags,
bool forceSRGB,
Diligent::ITexture** texture/*,
D2D1_ALPHA_MODE* alphaMode*/
diff --git a/TextureLoader/interface/TextureLoader.h b/TextureLoader/interface/TextureLoader.h
index 3cb1d24..49b01d0 100644
--- a/TextureLoader/interface/TextureLoader.h
+++ b/TextureLoader/interface/TextureLoader.h
@@ -40,13 +40,13 @@ namespace Diligent
USAGE Usage;
/// Bind flags
- Uint32 BindFlags;
+ BIND_FLAGS BindFlags;
/// Number of mip levels
Uint32 MipLevels;
/// CPU access flags
- Uint32 CPUAccessFlags;
+ CPU_ACCESS_FLAGS CPUAccessFlags;
/// Flag indicating if this texture uses sRGB gamma encoding
Bool IsSRGB;
@@ -62,7 +62,7 @@ namespace Diligent
Usage( USAGE_STATIC ),
BindFlags( BIND_SHADER_RESOURCE ),
MipLevels(0),
- CPUAccessFlags(0),
+ CPUAccessFlags(CPU_ACCESS_NONE),
IsSRGB(false),
GenerateMips(true),
Format(TEX_FORMAT_UNKNOWN)
diff --git a/TextureLoader/src/DDSLoader.cpp b/TextureLoader/src/DDSLoader.cpp
index 4f30fd9..d347433 100644
--- a/TextureLoader/src/DDSLoader.cpp
+++ b/TextureLoader/src/DDSLoader.cpp
@@ -932,9 +932,9 @@ static void CreateTexture(
_In_ DXGI_FORMAT format,
_In_ USAGE usage,
_In_ const char *name,
- _In_ unsigned int bindFlags,
- _In_ unsigned int cpuAccessFlags,
- _In_ unsigned int miscFlags,
+ _In_ BIND_FLAGS bindFlags,
+ _In_ CPU_ACCESS_FLAGS cpuAccessFlags,
+ _In_ MISC_TEXTURE_FLAGS miscFlags,
_In_ bool forceSRGB,
_In_ bool isCubeMap,
_In_ TextureSubResData* initData,
@@ -1154,9 +1154,9 @@ static void CreateTextureFromDDS(
_In_ size_t maxsize,
_In_ USAGE usage,
_In_ const char *name,
- _In_ unsigned int bindFlags,
- _In_ unsigned int cpuAccessFlags,
- _In_ unsigned int miscFlags,
+ _In_ BIND_FLAGS bindFlags,
+ _In_ CPU_ACCESS_FLAGS cpuAccessFlags,
+ _In_ MISC_TEXTURE_FLAGS miscFlags,
_In_ bool forceSRGB,
_Outptr_opt_ ITexture** texture
)
@@ -1411,7 +1411,7 @@ void CreateDDSTextureFromMemory(
/*D2D1_ALPHA_MODE* alphaMode,*/
const char* name)
{
- return CreateDDSTextureFromMemoryEx(pDevice, ddsData, ddsDataSize, maxsize, USAGE_DEFAULT, name, BIND_SHADER_RESOURCE, 0, 0, false, texture/*, alphaMode*/);
+ return CreateDDSTextureFromMemoryEx(pDevice, ddsData, ddsDataSize, maxsize, USAGE_DEFAULT, name, BIND_SHADER_RESOURCE, CPU_ACCESS_NONE, MISC_TEXTURE_FLAG_NONE, false, texture/*, alphaMode*/);
}
@@ -1423,9 +1423,9 @@ void CreateDDSTextureFromMemoryEx(
size_t maxsize,
USAGE usage,
const char *name,
- unsigned int bindFlags,
- unsigned int cpuAccessFlags,
- unsigned int miscFlags,
+ BIND_FLAGS bindFlags,
+ CPU_ACCESS_FLAGS cpuAccessFlags,
+ MISC_TEXTURE_FLAGS miscFlags,
bool forceSRGB,
ITexture** texture/*,
D2D1_ALPHA_MODE* alphaMode*/
diff --git a/TextureLoader/src/TextureLoader.cpp b/TextureLoader/src/TextureLoader.cpp
index 9a660fd..7fc9a40 100644
--- a/TextureLoader/src/TextureLoader.cpp
+++ b/TextureLoader/src/TextureLoader.cpp
@@ -249,7 +249,7 @@ namespace Diligent
TexLoadInfo.Name,
TexLoadInfo.BindFlags,
TexLoadInfo.CPUAccessFlags,
- 0, // miscFlags
+ MISC_TEXTURE_FLAG_NONE, // miscFlags
TexLoadInfo.IsSRGB, // forceSRGB
ppTexture );
}