summaryrefslogtreecommitdiffstats
path: root/RenderScript/src/BufferParser.cpp
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/BufferParser.cpp
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/BufferParser.cpp')
-rw-r--r--RenderScript/src/BufferParser.cpp32
1 files changed, 26 insertions, 6 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;