More Steam Link performance optimizations

This commit is contained in:
Cameron Gutman 2019-04-28 15:57:57 -07:00
parent 4f00f62674
commit dfb006d264
3 changed files with 17 additions and 4 deletions

View File

@ -5,5 +5,9 @@
# pairing data will be lost each reboot. # pairing data will be lost each reboot.
HOME=/usr/local/moonlight HOME=/usr/local/moonlight
# Renice PE_Single_CPU which seems to host A/V stuff
renice -10 -p $(pidof PE_Single_CPU)
# Renice Moonlight itself to avoid preemption by background tasks
# Write output to a logfile in /tmp # Write output to a logfile in /tmp
exec ./bin/moonlight > /tmp/moonlight.log exec nice -n -10 ./bin/moonlight > /tmp/moonlight.log

View File

@ -111,8 +111,11 @@ void Session::arDecodeAndPlaySample(char* sampleData, int sampleLength)
{ {
int samplesDecoded; int samplesDecoded;
// Set this thread to high priority to reduce #ifndef STEAM_LINK
// the chance of missing our sample delivery time // Set this thread to high priority to reduce the chance of missing
// our sample delivery time. On Steam Link, this causes starvation
// of other threads due to severely restricted CPU time available,
// so we will skip it on that platform.
if (s_ActiveSession->m_AudioSampleCount == 0) { if (s_ActiveSession->m_AudioSampleCount == 0) {
if (SDL_SetThreadPriority(SDL_THREAD_PRIORITY_HIGH) < 0) { if (SDL_SetThreadPriority(SDL_THREAD_PRIORITY_HIGH) < 0) {
SDL_LogWarn(SDL_LOG_CATEGORY_APPLICATION, SDL_LogWarn(SDL_LOG_CATEGORY_APPLICATION,
@ -120,6 +123,7 @@ void Session::arDecodeAndPlaySample(char* sampleData, int sampleLength)
SDL_GetError()); SDL_GetError());
} }
} }
#endif
// See if we need to drop this sample // See if we need to drop this sample
if (s_ActiveSession->m_DropAudioEndTime != 0) { if (s_ActiveSession->m_DropAudioEndTime != 0) {

View File

@ -49,7 +49,12 @@ AUDIO_RENDERER_CALLBACKS Session::k_AudioCallbacks = {
nullptr, nullptr,
Session::arCleanup, Session::arCleanup,
Session::arDecodeAndPlaySample, Session::arDecodeAndPlaySample,
CAPABILITY_DIRECT_SUBMIT CAPABILITY_DIRECT_SUBMIT |
#ifdef STEAM_LINK
CAPABILITY_SLOW_OPUS_DECODER
#else
0
#endif
}; };
Session* Session::s_ActiveSession; Session* Session::s_ActiveSession;