enable vsync if required (#765)

* enable vsync if required

* add note

* more

* more
This commit is contained in:
Logan McNaughton 2026-04-17 15:07:15 +02:00 committed by GitHub
parent a592d0eb84
commit f8a7153fdd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 11 additions and 5 deletions

View File

@ -254,7 +254,8 @@ static ImageHandle create_message_image(Vulkan::Device &device, int width,
}
void rdp_init(void *_window, GFX_INFO _gfx_info, const void *font,
size_t font_size, uint32_t save_state_slot) {
size_t font_size, uint32_t save_state_slot,
bool netplay_enabled) {
memset(&rdp_device, 0, sizeof(RDP_DEVICE));
window = (SDL_Window *)_window;
@ -275,13 +276,17 @@ void rdp_init(void *_window, GFX_INFO _gfx_info, const void *font,
fragment_size = sizeof(plain_fragment_spirv);
}
bool window_vsync = 0;
wsi = new WSI;
wsi_platform = new SDL_WSIPlatform;
wsi_platform->set_window(window);
wsi->set_platform(wsi_platform);
wsi->set_present_mode(window_vsync ? PresentMode::SyncToVBlank
: PresentMode::UnlockedMaybeTear);
if (netplay_enabled) {
// VK_PRESENT_MODE_MAILBOX_KHR, fallback to VK_PRESENT_MODE_IMMEDIATE_KHR
wsi->set_present_mode(PresentMode::UnlockedMaybeTear);
} else {
// VK_PRESENT_MODE_MAILBOX_KHR, fallback to VK_PRESENT_MODE_FIFO_KHR
wsi->set_present_mode(PresentMode::UnlockedNoTearing);
}
wsi->set_backbuffer_srgb(false);
Context::SystemHandles handles = {};
if (!::Vulkan::Context::init_loader(

View File

@ -37,7 +37,7 @@ typedef struct {
} CALL_BACK;
void rdp_init(void *_window, GFX_INFO _gfx_info, const void *font,
size_t font_size, uint32_t save_state_slot);
size_t font_size, uint32_t save_state_slot, bool netplay_enabled);
void rdp_close();
void rdp_set_vi_register(uint32_t reg, uint32_t value);
void rdp_update_screen();

View File

@ -99,6 +99,7 @@ pub fn init(device: &mut device::Device) {
font_bytes.as_ptr() as *const std::ffi::c_void,
font_bytes.len(),
device.ui.storage.save_state_slot,
device.netplay.is_some(),
)
}
}