GUI: hide setting for multi-threaded playback

This commit is contained in:
tildearrow 2023-09-06 20:17:51 -05:00
parent 7e50ffe1f0
commit 5b5dc5de1b
2 changed files with 32 additions and 24 deletions

View file

@ -1577,6 +1577,7 @@ class FurnaceGUI {
int wasapiEx; int wasapiEx;
int chanOscThreads; int chanOscThreads;
int renderPoolThreads; int renderPoolThreads;
int showPool;
unsigned int maxUndoSteps; unsigned int maxUndoSteps;
String mainFontPath; String mainFontPath;
String headFontPath; String headFontPath;
@ -1755,6 +1756,7 @@ class FurnaceGUI {
wasapiEx(0), wasapiEx(0),
chanOscThreads(0), chanOscThreads(0),
renderPoolThreads(0), renderPoolThreads(0),
showPool(0),
maxUndoSteps(100), maxUndoSteps(100),
mainFontPath(""), mainFontPath(""),
headFontPath(""), headFontPath(""),

View file

@ -892,34 +892,36 @@ void FurnaceGUI::drawSettings() {
ImGui::EndTable(); ImGui::EndTable();
} }
bool renderPoolThreadsB=(settings.renderPoolThreads>0); if (settings.showPool) {
if (ImGui::Checkbox("Multi-threaded (EXPERIMENTAL)",&renderPoolThreadsB)) { bool renderPoolThreadsB=(settings.renderPoolThreads>0);
if (renderPoolThreadsB) { if (ImGui::Checkbox("Multi-threaded (EXPERIMENTAL)",&renderPoolThreadsB)) {
settings.renderPoolThreads=2; if (renderPoolThreadsB) {
} else { settings.renderPoolThreads=2;
settings.renderPoolThreads=0; } else {
settings.renderPoolThreads=0;
}
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("runs chip emulation on separate threads.\nmay increase performance on multi-core CPUs.\n\nwarnings:\n- experimental! currently broken/not working well.\n- only useful on multi-chip songs.");
} }
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("runs chip emulation on separate threads.\nmay increase performance on multi-core CPUs.\n\nwarnings:\n- experimental! currently broken/not working well.\n- only useful on multi-chip songs.");
}
if (renderPoolThreadsB) { if (renderPoolThreadsB) {
pushWarningColor(settings.renderPoolThreads>cpuCores,settings.renderPoolThreads>cpuCores); pushWarningColor(settings.renderPoolThreads>cpuCores,settings.renderPoolThreads>cpuCores);
if (ImGui::InputInt("Number of threads",&settings.renderPoolThreads)) { if (ImGui::InputInt("Number of threads",&settings.renderPoolThreads)) {
if (settings.renderPoolThreads<2) settings.renderPoolThreads=2; if (settings.renderPoolThreads<2) settings.renderPoolThreads=2;
if (settings.renderPoolThreads>32) settings.renderPoolThreads=32; if (settings.renderPoolThreads>32) settings.renderPoolThreads=32;
}
if (settings.renderPoolThreads>=DIV_MAX_CHIPS) {
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("that's the limit!");
} }
} else if (settings.renderPoolThreads>cpuCores) { if (settings.renderPoolThreads>=DIV_MAX_CHIPS) {
if (ImGui::IsItemHovered()) { if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("it is a VERY bad idea to set this number higher than your CPU core count (%d)!",cpuCores); ImGui::SetTooltip("that's the limit!");
}
} else if (settings.renderPoolThreads>cpuCores) {
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("it is a VERY bad idea to set this number higher than your CPU core count (%d)!",cpuCores);
}
} }
popWarningColor();
} }
popWarningColor();
} }
bool lowLatencyB=settings.lowLatency; bool lowLatencyB=settings.lowLatency;
@ -3063,6 +3065,7 @@ void FurnaceGUI::drawSettings() {
// "Nice Amiga cover of the song!" - enables hidden systems (YMU759/SoundUnit/Dummy) // "Nice Amiga cover of the song!" - enables hidden systems (YMU759/SoundUnit/Dummy)
// "42 63" - enables all instrument types // "42 63" - enables all instrument types
// "4-bit FDS" - enables partial pitch linearity option // "4-bit FDS" - enables partial pitch linearity option
// "Power of the Chip" - enables options for multi-threaded audio
// "????" - enables stuff // "????" - enables stuff
CONFIG_SECTION("Cheat Codes") { CONFIG_SECTION("Cheat Codes") {
// SUBSECTION ENTER CODE: // SUBSECTION ENTER CODE:
@ -3317,6 +3320,7 @@ void FurnaceGUI::syncSettings() {
settings.wasapiEx=e->getConfInt("wasapiEx",0); settings.wasapiEx=e->getConfInt("wasapiEx",0);
settings.chanOscThreads=e->getConfInt("chanOscThreads",0); settings.chanOscThreads=e->getConfInt("chanOscThreads",0);
settings.renderPoolThreads=e->getConfInt("renderPoolThreads",0); settings.renderPoolThreads=e->getConfInt("renderPoolThreads",0);
settings.showPool=e->getConfInt("showPool",0);
clampSetting(settings.mainFontSize,2,96); clampSetting(settings.mainFontSize,2,96);
clampSetting(settings.headFontSize,2,96); clampSetting(settings.headFontSize,2,96);
@ -3467,7 +3471,8 @@ void FurnaceGUI::syncSettings() {
clampSetting(settings.classicChipOptions,0,1); clampSetting(settings.classicChipOptions,0,1);
clampSetting(settings.wasapiEx,0,1); clampSetting(settings.wasapiEx,0,1);
clampSetting(settings.chanOscThreads,0,256); clampSetting(settings.chanOscThreads,0,256);
clampSetting(settings.renderPoolThreads,0,256); clampSetting(settings.renderPoolThreads,0,DIV_MAX_CHIPS);
clampSetting(settings.showPool,0,1);
if (settings.exportLoops<0.0) settings.exportLoops=0.0; if (settings.exportLoops<0.0) settings.exportLoops=0.0;
if (settings.exportFadeOut<0.0) settings.exportFadeOut=0.0; if (settings.exportFadeOut<0.0) settings.exportFadeOut=0.0;
@ -3726,6 +3731,7 @@ void FurnaceGUI::commitSettings() {
e->setConf("wasapiEx",settings.wasapiEx); e->setConf("wasapiEx",settings.wasapiEx);
e->setConf("chanOscThreads",settings.chanOscThreads); e->setConf("chanOscThreads",settings.chanOscThreads);
e->setConf("renderPoolThreads",settings.renderPoolThreads); e->setConf("renderPoolThreads",settings.renderPoolThreads);
e->setConf("showPool",settings.showPool);
// colors // colors
for (int i=0; i<GUI_COLOR_MAX; i++) { for (int i=0; i<GUI_COLOR_MAX; i++) {