From 050826a31b497016ea270c27107a95a5baf5f0a9 Mon Sep 17 00:00:00 2001 From: Matt Borgerson Date: Thu, 12 Jun 2025 14:06:24 -0700 Subject: [PATCH] apu/vp: Make number of voice workers configurable --- config_spec.yml | 4 ++++ hw/xbox/mcpx/apu/vp/vp.c | 2 ++ hw/xbox/mcpx/apu/vp/vp.h | 5 +++-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/config_spec.yml b/config_spec.yml index 5b86484934..84ce232ffb 100644 --- a/config_spec.yml +++ b/config_spec.yml @@ -214,6 +214,10 @@ display: default: false audio: + vp: + num_workers: + type: integer + default: 16 use_dsp: bool hrtf: type: bool diff --git a/hw/xbox/mcpx/apu/vp/vp.c b/hw/xbox/mcpx/apu/vp/vp.c index 4bcb8559db..9e8c9cce9c 100644 --- a/hw/xbox/mcpx/apu/vp/vp.c +++ b/hw/xbox/mcpx/apu/vp/vp.c @@ -1761,6 +1761,8 @@ static void voice_work_init(MCPXAPUState *d) { VoiceWorkDispatch *vwd = &d->vp.voice_work_dispatch; + g_config.audio.vp.num_workers = MAX(1, MIN(g_config.audio.vp.num_workers, MAX_VOICE_WORKERS)); + vwd->workers_should_exit = false; vwd->workers_pending = 0; vwd->queue_len = 0; diff --git a/hw/xbox/mcpx/apu/vp/vp.h b/hw/xbox/mcpx/apu/vp/vp.h index 8f9ae3af69..6b576c79f4 100644 --- a/hw/xbox/mcpx/apu/vp/vp.h +++ b/hw/xbox/mcpx/apu/vp/vp.h @@ -31,7 +31,8 @@ #include "svf.h" #include "hrtf.h" -#define NUM_VOICE_WORKERS 4 +#define NUM_VOICE_WORKERS g_config.audio.vp.num_workers +#define MAX_VOICE_WORKERS 16 typedef struct MCPXAPUState MCPXAPUState; @@ -65,7 +66,7 @@ typedef struct VoiceWorker { typedef struct VoiceWorkDispatch { QemuMutex lock; - VoiceWorker workers[NUM_VOICE_WORKERS]; + VoiceWorker workers[MAX_VOICE_WORKERS]; bool workers_should_exit; QemuCond work_pending; uint64_t workers_pending;