diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2018-12-03 16:32:53 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2018-12-03 16:32:53 +0000 |
| commit | 403145600f3ae1d2379652546210091af0a93b70 (patch) | |
| tree | 2dfc8b1ff63e861eab45fdb94b493fb64b44e833 /RenderScript | |
| parent | Replaced COMMIT_SHADER_RESOURCES_FLAGS with RESOURCE_STATE_TRANSITION_MODE (diff) | |
| download | DiligentTools-403145600f3ae1d2379652546210091af0a93b70.tar.gz DiligentTools-403145600f3ae1d2379652546210091af0a93b70.zip | |
Updated lua bindings for SetVertexBuffers and SetIndexBuffer plus other updates to match API changes
Diffstat (limited to 'RenderScript')
| -rw-r--r-- | RenderScript/include/BufferParser.h | 1 | ||||
| -rw-r--r-- | RenderScript/include/DrawAttribsParser.h | 3 | ||||
| -rw-r--r-- | RenderScript/src/BufferParser.cpp | 32 | ||||
| -rw-r--r-- | RenderScript/src/DrawAttribsParser.cpp | 20 |
4 files changed, 36 insertions, 20 deletions
diff --git a/RenderScript/include/BufferParser.h b/RenderScript/include/BufferParser.h index b8d7f53..be96d4d 100644 --- a/RenderScript/include/BufferParser.h +++ b/RenderScript/include/BufferParser.h @@ -63,5 +63,6 @@ namespace Diligent NumericArrayLoader m_ArrayLoader; EnumMapping<BUFFER_MODE> m_BuffModeEnumMapping; EnumMapping<SET_VERTEX_BUFFERS_FLAGS> m_SetVBFlagEnumMapping; + StateTransitionModeEnumMapping m_StateTransitionModeMapping; }; } diff --git a/RenderScript/include/DrawAttribsParser.h b/RenderScript/include/DrawAttribsParser.h index 3f0c6b9..924a3e6 100644 --- a/RenderScript/include/DrawAttribsParser.h +++ b/RenderScript/include/DrawAttribsParser.h @@ -31,7 +31,6 @@ namespace std { DEFINE_ENUM_HASH( Diligent::DRAW_FLAGS ) - DEFINE_ENUM_HASH( Diligent::DISPATCH_FLAGS ) } namespace Diligent @@ -57,8 +56,8 @@ namespace Diligent ClassMethodCaller<DrawAttribsParser> m_DispatchComputeBinding; EnumMapping<DRAW_FLAGS> m_DrawFlagsEnumMapping; - EnumMapping<DISPATCH_FLAGS> m_DispatchFlagsEnumMapping; EnumMapping<VALUE_TYPE> m_ValueTypeEnumMapping; + StateTransitionModeEnumMapping m_StateTransitionModeEnumMapping; String m_BufferMetatableName; }; 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 |
