From 3143f62446c373f600583de07ba0e2e33364149d Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Mon, 4 Mar 2019 23:34:50 -0800 Subject: Updates to comply with addition of ShaderFlags to IPipelineState::BindStaticResources --- RenderScript/src/PSODescParser.cpp | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'RenderScript/src') diff --git a/RenderScript/src/PSODescParser.cpp b/RenderScript/src/PSODescParser.cpp index 46cdc33..46130fd 100644 --- a/RenderScript/src/PSODescParser.cpp +++ b/RenderScript/src/PSODescParser.cpp @@ -623,33 +623,43 @@ namespace Diligent try { auto NumArgs = lua_gettop( L ); - if( NumArgs < 2 ) + if( NumArgs < 3 ) { - SCRIPT_PARSING_ERROR( L, "At least 1 argument (resource mapping) is expected" ); + SCRIPT_PARSING_ERROR( L, "At least 2 arguments (shader flags and resource mapping) are expected" ); } - auto *pPSO = *GetUserData( L, 1, m_MetatableRegistryName.c_str() ); + int ArgStackInd = 1; + + auto *pPSO = *GetUserData( L, ArgStackInd, m_MetatableRegistryName.c_str() ); VERIFY( pPSO, "PSO pointer is null" ); if( !pPSO )return 0; - auto *pResourceMapping = *GetUserData( L, 2, m_ResMappingMetatableName.c_str() ); + ++ArgStackInd; + Uint32 ShaderFlags = 0; + { + FlagsLoader FlagsLoader(0, "BindShaderResourceFlags", m_ShaderTypeEnumMapping); + FlagsLoader.SetValue( L, ArgStackInd, &ShaderFlags ); + } + + ++ArgStackInd; + auto *pResourceMapping = *GetUserData( L, ArgStackInd, m_ResMappingMetatableName.c_str() ); if( !pResourceMapping ) { - SCRIPT_PARSING_ERROR( L, "Incorrect 1st argument type: resource mapping is expected" ); + SCRIPT_PARSING_ERROR( L, "Incorrect 2nd argument type: resource mapping is expected" ); } + ++ArgStackInd; Uint32 Flags = 0; // The last argument may be flags - const int FlagsArgInd = 3; - if( NumArgs >= FlagsArgInd && - (lua_type( L, FlagsArgInd ) == LUA_TSTRING || lua_type( L, FlagsArgInd ) == LUA_TTABLE ) ) + if( NumArgs >= ArgStackInd && + (lua_type( L, ArgStackInd ) == LUA_TSTRING || lua_type( L, ArgStackInd ) == LUA_TTABLE ) ) { FlagsLoader FlagsLoader(0, "BindShaderResourceFlags", m_BindShaderResFlagEnumMapping); - FlagsLoader.SetValue( L, FlagsArgInd, &Flags ); + FlagsLoader.SetValue( L, ArgStackInd, &Flags ); } - pPSO->BindStaticResources( pResourceMapping, Flags ); + pPSO->BindStaticResources( ShaderFlags, pResourceMapping, Flags ); } catch( const std::runtime_error& ) { -- cgit v1.2.3