GUI: disable late render clear on Metal

fixes a crash
This commit is contained in:
tildearrow 2024-04-22 14:11:01 -05:00
parent 7672a40f19
commit 9edbd57947
2 changed files with 11 additions and 9 deletions

View file

@ -6455,7 +6455,7 @@ bool FurnaceGUI::loop() {
} }
} }
if (!settings.renderClearPos) { if (!settings.renderClearPos || renderBackend==GUI_BACKEND_METAL) {
rend->clear(uiColors[GUI_COLOR_BACKGROUND]); rend->clear(uiColors[GUI_COLOR_BACKGROUND]);
} }
renderTimeBegin=SDL_GetPerformanceCounter(); renderTimeBegin=SDL_GetPerformanceCounter();
@ -6496,7 +6496,7 @@ bool FurnaceGUI::loop() {
} }
} }
rend->present(); rend->present();
if (settings.renderClearPos) { if (settings.renderClearPos && renderBackend!=GUI_BACKEND_METAL) {
rend->clear(uiColors[GUI_COLOR_BACKGROUND]); rend->clear(uiColors[GUI_COLOR_BACKGROUND]);
} }
swapTimeEnd=SDL_GetPerformanceCounter(); swapTimeEnd=SDL_GetPerformanceCounter();

View file

@ -488,6 +488,7 @@ void FurnaceGUI::drawSettings() {
settingsChanged=true; settingsChanged=true;
} }
if (settings.renderBackend!=GUI_BACKEND_METAL) {
bool renderClearPosB=settings.renderClearPos; bool renderClearPosB=settings.renderClearPos;
if (ImGui::Checkbox("Late render clear",&renderClearPosB)) { if (ImGui::Checkbox("Late render clear",&renderClearPosB)) {
settings.renderClearPos=renderClearPosB; settings.renderClearPos=renderClearPosB;
@ -496,6 +497,7 @@ void FurnaceGUI::drawSettings() {
if (ImGui::IsItemHovered()) { if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("calls rend->clear() after rend->present(). might reduce UI latency by one frame in some drivers."); ImGui::SetTooltip("calls rend->clear() after rend->present(). might reduce UI latency by one frame in some drivers.");
} }
}
bool powerSaveB=settings.powerSave; bool powerSaveB=settings.powerSave;
if (ImGui::Checkbox("Power-saving mode",&powerSaveB)) { if (ImGui::Checkbox("Power-saving mode",&powerSaveB)) {