diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2019-03-05 07:34:50 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2019-03-05 07:34:50 +0000 |
| commit | 3143f62446c373f600583de07ba0e2e33364149d (patch) | |
| tree | 349055d7fbb2d6af859d9785845504b6daf1171a /RenderScript/src/PSODescParser.cpp | |
| parent | Fixed few issues with pipeline resource layout parsing (diff) | |
| download | DiligentTools-3143f62446c373f600583de07ba0e2e33364149d.tar.gz DiligentTools-3143f62446c373f600583de07ba0e2e33364149d.zip | |
Updates to comply with addition of ShaderFlags to IPipelineState::BindStaticResources
Diffstat (limited to 'RenderScript/src/PSODescParser.cpp')
| -rw-r--r-- | RenderScript/src/PSODescParser.cpp | 30 |
1 files changed, 20 insertions, 10 deletions
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<IPipelineState**>( L, 1, m_MetatableRegistryName.c_str() ); + int ArgStackInd = 1; + + auto *pPSO = *GetUserData<IPipelineState**>( L, ArgStackInd, m_MetatableRegistryName.c_str() ); VERIFY( pPSO, "PSO pointer is null" ); if( !pPSO )return 0; - auto *pResourceMapping = *GetUserData<IResourceMapping**>( L, 2, m_ResMappingMetatableName.c_str() ); + ++ArgStackInd; + Uint32 ShaderFlags = 0; + { + FlagsLoader<SHADER_TYPE> FlagsLoader(0, "BindShaderResourceFlags", m_ShaderTypeEnumMapping); + FlagsLoader.SetValue( L, ArgStackInd, &ShaderFlags ); + } + + ++ArgStackInd; + auto *pResourceMapping = *GetUserData<IResourceMapping**>( 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<BIND_SHADER_RESOURCES_FLAGS> 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& ) { |
