From 9f9b923d9c090058f821f28801112cae2da296e1 Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Wed, 21 Nov 2018 08:10:14 -0800 Subject: Added draw flags and dispatch flags parsing --- RenderScript/src/DrawAttribsParser.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'RenderScript/src') diff --git a/RenderScript/src/DrawAttribsParser.cpp b/RenderScript/src/DrawAttribsParser.cpp index 21f0fb3..9e6e3dd 100644 --- a/RenderScript/src/DrawAttribsParser.cpp +++ b/RenderScript/src/DrawAttribsParser.cpp @@ -39,6 +39,12 @@ namespace Diligent DEFINE_BINDER( m_Bindings, DrawAttribs, NumVertices ); 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_FLAGS_BINDER( m_Bindings, DrawAttribs, Flags, DRAW_FLAGS, m_DrawFlagsEnumMapping ); + DEFINE_ENUM_ELEMENT_MAPPING( m_ValueTypeEnumMapping, VT_UINT16 ); DEFINE_ENUM_ELEMENT_MAPPING( m_ValueTypeEnumMapping, VT_UINT32 ); DEFINE_ENUM_BINDER( m_Bindings, DrawAttribs, IndexType, m_ValueTypeEnumMapping ); @@ -57,6 +63,9 @@ namespace Diligent std::vector AllowedMetatable = { "Metatables.Buffer" }; DEFINE_BINDER_EX( m_Bindings, DrawAttribs, pIndirectDrawAttribs, EngineObjectPtrLoader, AllowedMetatable ); + + DEFINE_ENUM_ELEMENT_MAPPING(m_DispatchFlagsEnumMapping, DISPATCH_FLAG_FLAG_NONE); + DEFINE_ENUM_ELEMENT_MAPPING(m_DispatchFlagsEnumMapping, DISPATCH_FLAG_TRANSITION_INDIRECT_ARGS_BUFFER); }; void DrawAttribsParser::CreateObj( lua_State *L ) @@ -113,10 +122,15 @@ namespace Diligent if( lua_type( L, 1 ) == LUA_TUSERDATA ) { DispatchAttrs.pIndirectDispatchAttribs = *GetUserData( L, 1, m_BufferMetatableName.c_str() ); - if( lua_gettop( L ) > 1 ) + if( lua_gettop( L ) >= 2 ) { DispatchAttrs.DispatchArgsByteOffset = ReadValueFromLua( L, 2 ); } + if (lua_gettop( L ) >= 3 ) + { + FlagsLoader FlagsLoader(0, "DispatchFlags", m_DispatchFlagsEnumMapping); + FlagsLoader.SetValue( L, 3, &DispatchAttrs.Flags); + } } else { -- cgit v1.2.3