Unable to run NativeSDK samples on Steam Deck
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
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:
Re: Unable to run NativeSDK samples on Steam Deck
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=1Hello,
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
Re: Unable to run NativeSDK samples on Steam Deck
Any chance you could capture the log? (in Windows, we are using OutputDebugString).It just exits instantly.
Also could you try with the Vulkan renderer? (in the commandline add --render VK).
Re: Unable to run NativeSDK samples on Steam Deck
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:
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
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:
Code: Select all
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();
}*/
}https://drive.google.com/file/d/1hk3bHY ... sp=sharing
thanks
Re: Unable to run NativeSDK samples on Steam Deck
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.
I was able to comment a few things out up to TSF::MoveWindow level and can get it to run on Steam Deck now.
Re: Unable to run NativeSDK samples on Steam Deck
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.
I’ll test it on a Steam Deck as soon as possible.
Re: Unable to run NativeSDK samples on Steam Deck
Sure.
Code: Select all
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));
}
Re: Unable to run NativeSDK samples on Steam Deck
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?
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?
Re: Unable to run NativeSDK samples on Steam Deck
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.
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.
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.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?
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