mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-23 07:40:14 +00:00
fix: correct water refraction barrier srcAccessMask to prevent VK_ERROR_DEVICE_LOST
The captureSceneHistory barrier was using srcAccessMask=0 with VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT when transitioning the swapchain image from PRESENT_SRC_KHR to TRANSFER_SRC_OPTIMAL. This does not flush the GPU's color attachment write caches, causing VK_ERROR_DEVICE_LOST on strict drivers (AMD, Mali) that require explicit cache invalidation before transfer reads. Fix: use VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT + COLOR_ATTACHMENT_OUTPUT as the source mask so color writes are properly made visible to the transfer unit before the image copy begins. Also remove the now-unnecessary "requires FSR" restriction in the settings UI — water refraction can be enabled independently of FSR.
This commit is contained in:
parent
8abb65a813
commit
fa3a5ec67e
2 changed files with 8 additions and 11 deletions
|
|
@ -15928,18 +15928,11 @@ void GameScreen::renderSettingsWindow() {
|
|||
}
|
||||
}
|
||||
{
|
||||
bool fsrActive = renderer && (renderer->isFSREnabled() || renderer->isFSR2Enabled());
|
||||
if (!fsrActive && pendingWaterRefraction) {
|
||||
// FSR was disabled while refraction was on — auto-disable
|
||||
pendingWaterRefraction = false;
|
||||
if (renderer) renderer->setWaterRefractionEnabled(false);
|
||||
}
|
||||
if (!fsrActive) ImGui::BeginDisabled();
|
||||
if (ImGui::Checkbox("Water Refraction (requires FSR)", &pendingWaterRefraction)) {
|
||||
if (ImGui::Checkbox("Water Refraction", &pendingWaterRefraction)) {
|
||||
if (renderer) renderer->setWaterRefractionEnabled(pendingWaterRefraction);
|
||||
updateGraphicsPresetFromCurrentSettings();
|
||||
saveSettings();
|
||||
}
|
||||
if (!fsrActive) ImGui::EndDisabled();
|
||||
}
|
||||
{
|
||||
const char* aaLabels[] = { "Off", "2x MSAA", "4x MSAA", "8x MSAA" };
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue