diff --git a/src/cascadia/TerminalControl/ControlCore.cpp b/src/cascadia/TerminalControl/ControlCore.cpp
index 2ed9f2d7efe..60776282cd8 100644
--- a/src/cascadia/TerminalControl/ControlCore.cpp
+++ b/src/cascadia/TerminalControl/ControlCore.cpp
@@ -256,7 +256,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
return false;
}
- if (Feature_AtlasEngine::IsEnabled() && _settings->UseAtlasEngine())
+ if (_settings->UseAtlasEngine())
{
_renderEngine = std::make_unique<::Microsoft::Console::Render::AtlasEngine>();
}
diff --git a/src/cascadia/TerminalControl/TermControl.cpp b/src/cascadia/TerminalControl/TermControl.cpp
index b3e7fd1e26d..db46f122c29 100644
--- a/src/cascadia/TerminalControl/TermControl.cpp
+++ b/src/cascadia/TerminalControl/TermControl.cpp
@@ -2087,7 +2087,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
// GH#10211 - UNDER NO CIRCUMSTANCE should this fail. If it does, the
// whole app will crash instantaneously on launch, which is no good.
double scale;
- if (Feature_AtlasEngine::IsEnabled() && settings.UseAtlasEngine())
+ if (settings.UseAtlasEngine())
{
auto engine = std::make_unique<::Microsoft::Console::Render::AtlasEngine>();
LOG_IF_FAILED(engine->UpdateDpi(dpi));
diff --git a/src/cascadia/TerminalSettingsEditor/ProfileViewModel.cpp b/src/cascadia/TerminalSettingsEditor/ProfileViewModel.cpp
index f733626b465..fadf3d0a6b6 100644
--- a/src/cascadia/TerminalSettingsEditor/ProfileViewModel.cpp
+++ b/src/cascadia/TerminalSettingsEditor/ProfileViewModel.cpp
@@ -293,11 +293,6 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
return _unfocusedAppearanceViewModel;
}
- bool ProfileViewModel::AtlasEngineAvailable() const noexcept
- {
- return Feature_AtlasEngine::IsEnabled();
- }
-
bool ProfileViewModel::VtPassthroughAvailable() const noexcept
{
return Feature_VtPassthroughMode::IsEnabled() && Feature_VtPassthroughModeSettingInUI::IsEnabled();
diff --git a/src/cascadia/TerminalSettingsEditor/ProfileViewModel.h b/src/cascadia/TerminalSettingsEditor/ProfileViewModel.h
index a4bc0f22bcb..1b61c7062c7 100644
--- a/src/cascadia/TerminalSettingsEditor/ProfileViewModel.h
+++ b/src/cascadia/TerminalSettingsEditor/ProfileViewModel.h
@@ -72,7 +72,6 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
bool ShowUnfocusedAppearance();
void CreateUnfocusedAppearance();
void DeleteUnfocusedAppearance();
- bool AtlasEngineAvailable() const noexcept;
bool VtPassthroughAvailable() const noexcept;
VIEW_MODEL_OBSERVABLE_PROPERTY(ProfileSubPage, CurrentPage);
diff --git a/src/cascadia/TerminalSettingsEditor/ProfileViewModel.idl b/src/cascadia/TerminalSettingsEditor/ProfileViewModel.idl
index b05b76317a0..143fa3ca477 100644
--- a/src/cascadia/TerminalSettingsEditor/ProfileViewModel.idl
+++ b/src/cascadia/TerminalSettingsEditor/ProfileViewModel.idl
@@ -62,7 +62,6 @@ namespace Microsoft.Terminal.Settings.Editor
Boolean EditableUnfocusedAppearance { get; };
Boolean ShowUnfocusedAppearance { get; };
AppearanceViewModel UnfocusedAppearance { get; };
- Boolean AtlasEngineAvailable { get; };
Boolean VtPassthroughAvailable { get; };
void CreateUnfocusedAppearance();
diff --git a/src/cascadia/TerminalSettingsEditor/Profiles_Advanced.xaml b/src/cascadia/TerminalSettingsEditor/Profiles_Advanced.xaml
index 8b1cbea41bd..b17296fe0ae 100644
--- a/src/cascadia/TerminalSettingsEditor/Profiles_Advanced.xaml
+++ b/src/cascadia/TerminalSettingsEditor/Profiles_Advanced.xaml
@@ -122,8 +122,7 @@
+ SettingOverrideSource="{x:Bind Profile.UseAtlasEngineOverrideSource, Mode=OneWay}">
diff --git a/src/cascadia/TerminalSettingsModel/MTSMSettings.h b/src/cascadia/TerminalSettingsModel/MTSMSettings.h
index d95dbdfe43e..b6dcf7e37c6 100644
--- a/src/cascadia/TerminalSettingsModel/MTSMSettings.h
+++ b/src/cascadia/TerminalSettingsModel/MTSMSettings.h
@@ -77,7 +77,7 @@ Author(s):
X(CloseOnExitMode, CloseOnExit, "closeOnExit", CloseOnExitMode::Automatic) \
X(hstring, TabTitle, "tabTitle") \
X(Model::BellStyle, BellStyle, "bellStyle", BellStyle::Audible) \
- X(bool, UseAtlasEngine, "experimental.useAtlasEngine", false) \
+ X(bool, UseAtlasEngine, "experimental.useAtlasEngine", Feature_AtlasEngine::IsEnabled()) \
X(Windows::Foundation::Collections::IVector, BellSound, "bellSound", nullptr) \
X(bool, Elevate, "elevate", false) \
X(bool, VtPassthrough, "experimental.connection.passthroughMode", false) \
diff --git a/src/features.xml b/src/features.xml
index 6e5dc85dfef..beab19b0f2d 100644
--- a/src/features.xml
+++ b/src/features.xml
@@ -34,6 +34,16 @@
WindowsInbox
+
+
+ Feature_ConhostAtlasEngine
+ Controls whether conhost supports the Atlas engine
+ AlwaysEnabled
+
+ WindowsInbox
+
+
+
Feature_DxEngineShaderSupport
Controls whether the DX engine is built with shader support.
@@ -59,7 +69,7 @@
Feature_AtlasEngine
- If enabled, AtlasEngine and the experimental.useAtlasEngine setting are compiled into the project
+ If enabled, AtlasEngine is used by default
AlwaysEnabled
Release
diff --git a/src/interactivity/win32/window.cpp b/src/interactivity/win32/window.cpp
index 7a8aad419a2..ca2300e4ced 100644
--- a/src/interactivity/win32/window.cpp
+++ b/src/interactivity/win32/window.cpp
@@ -26,7 +26,7 @@
#include "../../renderer/base/renderer.hpp"
#include "../../renderer/gdi/gdirenderer.hpp"
-#if TIL_FEATURE_ATLASENGINE_ENABLED
+#if TIL_FEATURE_CONHOSTATLASENGINE_ENABLED
#include "../../renderer/atlas/AtlasEngine.h"
#endif
#if TIL_FEATURE_CONHOSTDXENGINE_ENABLED
@@ -74,7 +74,7 @@ Window::~Window()
#if TIL_FEATURE_CONHOSTDXENGINE_ENABLED
delete pDxEngine;
#endif
-#if TIL_FEATURE_ATLASENGINE_ENABLED
+#if TIL_FEATURE_CONHOSTATLASENGINE_ENABLED
delete pAtlasEngine;
#endif
#endif
@@ -231,7 +231,7 @@ void Window::_UpdateSystemMetrics() const
g.pRender->AddRenderEngine(pDxEngine);
break;
#endif
-#if TIL_FEATURE_ATLASENGINE_ENABLED
+#if TIL_FEATURE_CONHOSTATLASENGINE_ENABLED
case UseDx::AtlasEngine:
pAtlasEngine = new AtlasEngine();
g.pRender->AddRenderEngine(pAtlasEngine);
@@ -344,14 +344,14 @@ void Window::_UpdateSystemMetrics() const
}
else
#endif
-#if TIL_FEATURE_ATLASENGINE_ENABLED
+#if TIL_FEATURE_CONHOSTATLASENGINE_ENABLED
if (pAtlasEngine)
{
status = NTSTATUS_FROM_WIN32(HRESULT_CODE((pAtlasEngine->SetHwnd(hWnd))));
}
else
-#endif
{
+#endif
status = NTSTATUS_FROM_WIN32(HRESULT_CODE((pGdiEngine->SetHwnd(hWnd))));
}
diff --git a/src/interactivity/win32/window.hpp b/src/interactivity/win32/window.hpp
index ba00662cd1a..c7a53aa74cf 100644
--- a/src/interactivity/win32/window.hpp
+++ b/src/interactivity/win32/window.hpp
@@ -116,7 +116,7 @@ namespace Microsoft::Console::Interactivity::Win32
#if TIL_FEATURE_CONHOSTDXENGINE_ENABLED
Render::DxEngine* pDxEngine = nullptr;
#endif
-#if TIL_FEATURE_ATLASENGINE_ENABLED
+#if TIL_FEATURE_CONHOSTATLASENGINE_ENABLED
Render::AtlasEngine* pAtlasEngine = nullptr;
#endif