summaryrefslogtreecommitdiffstats
path: root/RenderScript/src
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2018-12-03 16:32:53 +0000
committerEgor Yusov <egor.yusov@gmail.com>2018-12-03 16:32:53 +0000
commit403145600f3ae1d2379652546210091af0a93b70 (patch)
tree2dfc8b1ff63e861eab45fdb94b493fb64b44e833 /RenderScript/src
parentReplaced COMMIT_SHADER_RESOURCES_FLAGS with RESOURCE_STATE_TRANSITION_MODE (diff)
downloadDiligentTools-403145600f3ae1d2379652546210091af0a93b70.tar.gz
DiligentTools-403145600f3ae1d2379652546210091af0a93b70.zip
Updated lua bindings for SetVertexBuffers and SetIndexBuffer plus other updates to match API changes
Diffstat (limited to 'RenderScript/src')
-rw-r--r--RenderScript/src/BufferParser.cpp32
-rw-r--r--RenderScript/src/DrawAttribsParser.cpp20
2 files changed, 34 insertions, 18 deletions
diff --git a/RenderScript/src/BufferParser.cpp b/RenderScript/src/BufferParser.cpp
index 5a996a6..9c49866 100644
--- a/RenderScript/src/BufferParser.cpp
+++ b/RenderScript/src/BufferParser.cpp
@@ -141,6 +141,7 @@ namespace Diligent
}
SET_VERTEX_BUFFERS_FLAGS Flags = SET_VERTEX_BUFFERS_FLAG_NONE;
+ RESOURCE_STATE_TRANSITION_MODE StateTransitionMode = RESOURCE_STATE_TRANSITION_MODE_NONE;
Uint32 NumBuffers = 0;
IBuffer *pBuffs[MaxBufferSlots] = {};
Uint32 Offsets[MaxBufferSlots] = {};
@@ -165,6 +166,13 @@ namespace Diligent
else
Offsets[NumBuffers] = 0;
+ if( CurrArgInd >= NumArgs-1 && lua_type( L, CurrArgInd ) == LUA_TSTRING)
+ {
+ EnumMemberBinder<RESOURCE_STATE_TRANSITION_MODE> StateTransitionModeLoader(0, "StateTransitionMode", m_StateTransitionModeMapping);
+ StateTransitionModeLoader.SetValue( L, CurrArgInd, &StateTransitionMode );
+ ++CurrArgInd;
+ }
+
// The last argument may be flags
if( CurrArgInd == NumArgs &&
(lua_type( L, CurrArgInd ) == LUA_TSTRING ||
@@ -180,7 +188,7 @@ namespace Diligent
}
auto *pContext = LoadDeviceContextFromRegistry( L );
- pContext->SetVertexBuffers( StartSlot, NumBuffers, pBuffs, Offsets, Flags );
+ pContext->SetVertexBuffers( StartSlot, NumBuffers, pBuffs, Offsets, StateTransitionMode, Flags );
// Return no values to Lua
return 0;
@@ -191,14 +199,26 @@ namespace Diligent
auto *pIndexBuff = *GetUserData<IBuffer**>( L, 1, m_MetatableRegistryName.c_str() );
Uint32 Offset = 0;
auto NumArgs = lua_gettop( L );
- if( NumArgs > 2 )
+ if( NumArgs > 3 )
+ {
+ SCRIPT_PARSING_ERROR( L, "SetIndexBuffer() expects offset and state transition mode as optional 2nd and 3rd parameters. ", NumArgs, " arguments are provided." );
+ }
+ int CurrArg = 2;
+ if( CurrArg <= NumArgs && lua_isnumber( L, CurrArg ) )
{
- SCRIPT_PARSING_ERROR( L, "SetIndexBuffer() expects offset as optional 2nd parameter. ", NumArgs, " arguments are provided." );
+ Offset = ReadValueFromLua<Uint32>( L, CurrArg );
+ ++CurrArg;
}
- if( lua_isnumber( L, 2 ) )
- Offset = ReadValueFromLua<Uint32>( L, 2 );
+
+ RESOURCE_STATE_TRANSITION_MODE StateTransitionMode = RESOURCE_STATE_TRANSITION_MODE_NONE;
+ if( CurrArg <= NumArgs && lua_type( L, CurrArg ) == LUA_TSTRING)
+ {
+ EnumMemberBinder<RESOURCE_STATE_TRANSITION_MODE> StateTransitionModeLoader(0, "StateTransitionMode", m_StateTransitionModeMapping);
+ StateTransitionModeLoader.SetValue( L, CurrArg, &StateTransitionMode );
+ }
+
auto *pContext = LoadDeviceContextFromRegistry( L );
- pContext->SetIndexBuffer( pIndexBuff, Offset );
+ pContext->SetIndexBuffer( pIndexBuff, Offset, StateTransitionMode );
// Return no values to Lua
return 0;
diff --git a/RenderScript/src/DrawAttribsParser.cpp b/RenderScript/src/DrawAttribsParser.cpp
index a400c2d..1c2e230 100644
--- a/RenderScript/src/DrawAttribsParser.cpp
+++ b/RenderScript/src/DrawAttribsParser.cpp
@@ -40,11 +40,9 @@ namespace Diligent
DEFINE_BINDER( m_Bindings, DrawAttribs, NumIndices );
DEFINE_ENUM_ELEMENT_MAPPING( m_DrawFlagsEnumMapping, DRAW_FLAG_NONE );
- DEFINE_ENUM_ELEMENT_MAPPING( m_DrawFlagsEnumMapping, DRAW_FLAG_TRANSITION_INDEX_BUFFER );
- DEFINE_ENUM_ELEMENT_MAPPING( m_DrawFlagsEnumMapping, DRAW_FLAG_TRANSITION_VERTEX_BUFFERS );
- DEFINE_ENUM_ELEMENT_MAPPING( m_DrawFlagsEnumMapping, DRAW_FLAG_TRANSITION_INDIRECT_ARGS_BUFFER );
DEFINE_ENUM_ELEMENT_MAPPING( m_DrawFlagsEnumMapping, DRAW_FLAG_VERIFY_STATES );
DEFINE_FLAGS_BINDER( m_Bindings, DrawAttribs, Flags, DRAW_FLAGS, m_DrawFlagsEnumMapping );
+ DEFINE_ENUM_BINDER( m_Bindings, DrawAttribs, IndirectAttribsBufferStateTransitionMode, m_StateTransitionModeEnumMapping);
DEFINE_ENUM_ELEMENT_MAPPING( m_ValueTypeEnumMapping, VT_UINT16 );
DEFINE_ENUM_ELEMENT_MAPPING( m_ValueTypeEnumMapping, VT_UINT32 );
@@ -64,10 +62,6 @@ namespace Diligent
std::vector<String> AllowedMetatable = { "Metatables.Buffer" };
DEFINE_BINDER_EX( m_Bindings, DrawAttribs, pIndirectDrawAttribs, EngineObjectPtrLoader<IBuffer>, AllowedMetatable );
-
- DEFINE_ENUM_ELEMENT_MAPPING(m_DispatchFlagsEnumMapping, DISPATCH_FLAG_FLAG_NONE);
- DEFINE_ENUM_ELEMENT_MAPPING(m_DispatchFlagsEnumMapping, DISPATCH_FLAG_TRANSITION_INDIRECT_ARGS_BUFFER);
- DEFINE_ENUM_ELEMENT_MAPPING(m_DispatchFlagsEnumMapping, DISPATCH_FLAG_VERIFY_STATES);
};
void DrawAttribsParser::CreateObj( lua_State *L )
@@ -124,14 +118,16 @@ namespace Diligent
if( lua_type( L, 1 ) == LUA_TUSERDATA )
{
DispatchAttrs.pIndirectDispatchAttribs = *GetUserData<IBuffer**>( L, 1, m_BufferMetatableName.c_str() );
- if( lua_gettop( L ) >= 2 )
+ int CurrArgInd = 2;
+ if( CurrArgInd <= lua_gettop( L ) && lua_isnumber( L, CurrArgInd ) )
{
- DispatchAttrs.DispatchArgsByteOffset = ReadValueFromLua<Uint32>( L, 2 );
+ DispatchAttrs.DispatchArgsByteOffset = ReadValueFromLua<Uint32>( L, CurrArgInd );
+ ++CurrArgInd;
}
- if (lua_gettop( L ) >= 3 )
+ if( CurrArgInd <= lua_gettop( L ) && lua_type( L, CurrArgInd ) == LUA_TSTRING )
{
- FlagsLoader<DISPATCH_FLAGS> FlagsLoader(0, "DispatchFlags", m_DispatchFlagsEnumMapping);
- FlagsLoader.SetValue( L, 3, &DispatchAttrs.Flags);
+ EnumMemberBinder<RESOURCE_STATE_TRANSITION_MODE> StateTransitionModeLoader(0, "StateTransitionMode", m_StateTransitionModeEnumMapping);
+ StateTransitionModeLoader.SetValue( L, CurrArgInd, &DispatchAttrs.IndirectAttribsBufferStateTransitionMode );
}
}
else