diff --git a/filament/src/details/Engine.cpp b/filament/src/details/Engine.cpp index ecb60e49e1..feafe41df4 100644 --- a/filament/src/details/Engine.cpp +++ b/filament/src/details/Engine.cpp @@ -73,7 +73,7 @@ struct Engine::BuilderDetails { FeatureLevel mFeatureLevel = FeatureLevel::FEATURE_LEVEL_1; void* mSharedContext = nullptr; bool mPaused = false; - static Config validateConfig(const Config* pConfig) noexcept; + static Config validateConfig(Config config) noexcept; }; Engine* FEngine::create(Engine::Builder const& builder) { @@ -1306,7 +1306,7 @@ Engine::Builder& Engine::Builder::platform(Platform* platform) noexcept { } Engine::Builder& Engine::Builder::config(Engine::Config const* config) noexcept { - mImpl->mConfig = BuilderDetails::validateConfig(config); + mImpl->mConfig = config ? *config : Engine::Config{}; return *this; } @@ -1334,22 +1334,15 @@ void Engine::Builder::build(Invocable&& callback) const { #endif Engine* Engine::Builder::build() const { + mImpl->mConfig = BuilderDetails::validateConfig(mImpl->mConfig); return FEngine::create(*this); } -Engine::Config Engine::BuilderDetails::validateConfig(const Config* const pConfig) noexcept { +Engine::Config Engine::BuilderDetails::validateConfig(Config config) noexcept { // Rule of thumb: perRenderPassArenaMB must be roughly 1 MB larger than perFrameCommandsMB constexpr uint32_t COMMAND_ARENA_OVERHEAD = 1; constexpr uint32_t CONCURRENT_FRAME_COUNT = 3; - Config config; - if (!pConfig) { - return config; - } - - // make sure to copy all the fields - config = *pConfig; - // Use at least the defaults set by the build system config.minCommandBufferSizeMB = std::max( config.minCommandBufferSizeMB,