Berno
Topic Author
Posts: 5
Joined: 17 Jan 2023, 08:31

Unable to run NativeSDK samples on Steam Deck

05 May 2026, 08:49

Hello,
I am evaluating noesis for an app on Steam Deck.
I have built the windows_x86_64 samples and installed the contents of NoesisGUI-NativeSDK-win-3.2.13-Indie\Bin\windows_x86_64 on Steam deck.
It never runs. I have tried installing every VC++ redist and directx to the prefix. It just exits instantly.
I couldn't find a clear list of prerequisites required for the samples to run could anyone give some guidance?
Regards
 
blanchelawson
Posts: 2
Joined: 25 Mar 2026, 04:34

Re: Unable to run NativeSDK samples on Steam Deck

05 May 2026, 10:45

Hello,
I am evaluating noesis for an app on Steam Deck.
I have built the windows_x86_64 samples and installed the contents of NoesisGUI-NativeSDK-win-3.2.13-Indie\Bin\windows_x86_64\ on Steam deck.
It never runs. I have tried installing every VC++ redist and directx to the prefix. It just exits instantly.
I couldn't find a clear list of prerequisites required for the samples to run could anyone give some guidance?
Regards







speed stars
It sounds like a compatibility issue with Proton rather than missing redistributables. Noesis samples can be picky on Steam Deck, so make sure you’re using a recent Proton version (like Proton Experimental) and check the logs with PROTON_LOG=1
 
User avatar
jsantos
Site Admin
Posts: 4823
Joined: 20 Jan 2012, 17:18
Contact:

Re: Unable to run NativeSDK samples on Steam Deck

05 May 2026, 12:05

It just exits instantly.
Any chance you could capture the log? (in Windows, we are using OutputDebugString).

Also could you try with the Vulkan renderer? (in the commandline add --render VK).
 
Berno
Topic Author
Posts: 5
Joined: 17 Jan 2023, 08:31

Re: Unable to run NativeSDK samples on Steam Deck

06 May 2026, 03:53

Thanks for the response guys.

I had been running with the vulkan argument. I even changed the application code to force it to always use vulkan in case the launch options weren't working correctly by changing the following function:
Ptr<RenderContext> Application::GetRenderContextOverride() const
{
    //BD: I want it at vulkan for now
    return RenderContext::Create("VK");

    /*if (mArguments.HasOption("render"))
    {
        return RenderContext::Create(mArguments.FindOption("render", ""));
    }
    else
    {
        return RenderContext::Create();
    }*/
}
Today I tried from scratch again with a new devkit prefix and here is the log it was too big to copy the text and wouldn't work as attachment:
https://drive.google.com/file/d/1hk3bHY ... sp=sharing

thanks
 
Berno
Topic Author
Posts: 5
Joined: 17 Jan 2023, 08:31

Re: Unable to run NativeSDK samples on Steam Deck

06 May 2026, 04:26

I'm a bit more awake today and noticed the log showed the crash occured on CreateTextBoxDocument in TSF.cpp:1103.
I was able to comment a few things out up to TSF::MoveWindow level and can get it to run on Steam Deck now.
 
User avatar
jsantos
Site Admin
Posts: 4823
Joined: 20 Jan 2012, 17:18
Contact:

Re: Unable to run NativeSDK samples on Steam Deck

06 May 2026, 12:44

Interesting, thanks for the details. Could you share a patch with your changes?

I’ll test it on a Steam Deck as soon as possible.
 
Berno
Topic Author
Posts: 5
Joined: 17 Jan 2023, 08:31

Re: Unable to run NativeSDK samples on Steam Deck

08 May 2026, 02:33

Sure.
diff --git a/Packages/App/ApplicationLauncher/Src/Application.cpp b/Packages/App/ApplicationLauncher/Src/Application.cpp
index 802e5ec..6f04d5e 100644
--- a/Packages/App/ApplicationLauncher/Src/Application.cpp
+++ b/Packages/App/ApplicationLauncher/Src/Application.cpp
@@ -337,14 +337,17 @@ const char* Application::GetTitleOverride(UIElement* root) const
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 Ptr<RenderContext> Application::GetRenderContextOverride() const
 {
-    if (mArguments.HasOption("render"))
+    //BD: I want it at vulkan for now
+    return RenderContext::Create("VK");
+
+    /*if (mArguments.HasOption("render"))
     {
         return RenderContext::Create(mArguments.FindOption("render", ""));
     }
     else
     {
         return RenderContext::Create();
-    }
+    }*/
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/Packages/App/ApplicationLauncher/Src/ApplicationLauncher.cpp b/Packages/App/ApplicationLauncher/Src/ApplicationLauncher.cpp
index 46068e5..7c72bf1 100644
--- a/Packages/App/ApplicationLauncher/Src/ApplicationLauncher.cpp
+++ b/Packages/App/ApplicationLauncher/Src/ApplicationLauncher.cpp
@@ -171,7 +171,9 @@ bool ApplicationLauncher::GetRunInBackgroundOverride() const
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 bool ApplicationLauncher::GetLazyRenderOverride() const
 {
-    return false;
+    //BD
+    return true;
+    //return false;
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/Packages/App/Win32Display/Src/TSF.cpp b/Packages/App/Win32Display/Src/TSF.cpp
index 089f701..38699e3 100644
--- a/Packages/App/Win32Display/Src/TSF.cpp
+++ b/Packages/App/Win32Display/Src/TSF.cpp
@@ -1086,32 +1086,32 @@ static void SetCompartmentValue(ITfCompartmentMgr* compartmentMgr, const GUID& k
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 static void CreateTextBoxDocument()
 {
-    V(gThreadMgr->CreateDocumentMgr(&gTextBoxDocumentMgr));
+    //V(gThreadMgr->CreateDocumentMgr(&gTextBoxDocumentMgr));
 
-    gTextBoxStore = new TsfTextStore();
+    //gTextBoxStore = new TsfTextStore();
 
-    TfEditCookie inputCookie;
-    ComPtr<ITfContext> inputContext;
-    V(gTextBoxDocumentMgr->CreateContext(gClientId, 0, (ITextStoreACP*)gTextBoxStore,
-        &inputContext.Ref(), &inputCookie));
+    //TfEditCookie inputCookie;
+    //ComPtr<ITfContext> inputContext;
+    //V(gTextBoxDocumentMgr->CreateContext(gClientId, 0, (ITextStoreACP*)gTextBoxStore,
+    //    &inputContext.Ref(), &inputCookie));
 
-    ComPtr<ITfFunctionProvider> functionProvider;
-    V(gThreadMgr->GetFunctionProvider(GUID_SYSTEM_FUNCTIONPROVIDER,
-        &functionProvider.Ref()));
+    //ComPtr<ITfFunctionProvider> functionProvider;
+    //V(gThreadMgr->GetFunctionProvider(GUID_SYSTEM_FUNCTIONPROVIDER,
+    //    &functionProvider.Ref()));
 
-    ComPtr<ITfFnReconversion> reconversion;
-    V(functionProvider->GetFunction(GUID_NULL, IID_ITfFnReconversion,
-        (IUnknown**)&reconversion.Ref()));
+    //ComPtr<ITfFnReconversion> reconversion;
+    //V(functionProvider->GetFunction(GUID_NULL, IID_ITfFnReconversion,
+    //    (IUnknown**)&reconversion.Ref()));
 
-    gTextBoxStore->SetEditContext(inputContext, inputCookie, reconversion);
+    //gTextBoxStore->SetEditContext(inputContext, inputCookie, reconversion);
 
-    V(gTextBoxDocumentMgr->Push(inputContext));
+    //V(gTextBoxDocumentMgr->Push(inputContext));
 
-    ComPtr<ITfSource> source;
-    V(inputContext->QueryInterface<ITfSource>(&source.Ref()));
+    //ComPtr<ITfSource> source;
+    //V(inputContext->QueryInterface<ITfSource>(&source.Ref()));
 
-    V(source->AdviseSink(IID_ITfTextEditSink, (ITfTextEditSink*)gTextBoxStore,
-        &gTextBoxEditCookie));
+    //V(source->AdviseSink(IID_ITfTextEditSink, (ITfTextEditSink*)gTextBoxStore,
+    //    &gTextBoxEditCookie));
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1239,13 +1239,13 @@ void TSF::MoveWindow(void* hWnd)
     {
         ITfDocumentMgr* doc;
 
-        NS_ASSERT(gTextBoxStore != 0);
+        /*NS_ASSERT(gTextBoxStore != 0);
         if (gTextBoxStore->IsEnabled())
         {
             V(gThreadMgr->AssociateFocus(gCurrentWindow, gTextBoxDocumentMgr, &doc));
             gTextBoxStore->OnLayoutChanged();
         }
-        else
+        else*/
         {
             V(gThreadMgr->AssociateFocus(gCurrentWindow, NULL, &doc));
         }
 
Berno
Topic Author
Posts: 5
Joined: 17 Jan 2023, 08:31

Re: Unable to run NativeSDK samples on Steam Deck

08 May 2026, 02:41

Just on the topic of evaluating if noesis is a good fit for my project.
The samples give more of the feeling that it's a desktop app. Are there any better examples of noesis running in a touch screen setting?
It seems the one area lacking is the touch and feel of mobile with inertial scrolling, rubber banding, overscroll etc...
Is this just missing from the samples or not something noesis does at the moment?
 
User avatar
jsantos
Site Admin
Posts: 4823
Joined: 20 Jan 2012, 17:18
Contact:

Re: Unable to run NativeSDK samples on Steam Deck

08 May 2026, 12:22

Thanks for the patch. It looks like gThreadMgr->GetFunctionProvider() is returning NULL on your Steam Deck machine. I’ll try to reproduce this on one of our devkits here, but if you can confirm that’s the case, we can start working on a proper fix.
The samples give more of the feeling that it's a desktop app. Are there any better examples of noesis running in a touch screen setting?
It seems the one area lacking is the touch and feel of mobile with inertial scrolling, rubber banding, overscroll etc...
Is this just missing from the samples or not something noesis does at the moment?
NoesisGUI does support touch input. For example, you can interact with multiple sliders simultaneously using multi-touch, and all ScrollViewer controls support inertial scrolling when manipulated with touch gestures. There’s more information about this in the Touch Tutorial.

Overscroll/rubber-banding is not implemented at the moment, though. It has been requested a few times already (specifically support for ManipulationBoundaryFeedback). If this is important for you, please let us know.

NoesisGUI is already powering UI on several large-scale mobile products with millions of users, including Meta Horizon, Zwift, Vegas Infinite, and Dragon Mania Legends.

Who is online

Users browsing this forum: No registered users and 2 guests