Skip to content

Commit e647dd4

Browse files
committed
fallback from hw accelerated display if needed
1 parent ac1e062 commit e647dd4

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

sulis_core/src/io/glium_adapter.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,7 @@ impl Error for DisplayCreationError {
398398

399399
fn try_get_display(
400400
event_loop: &EventLoop<()>,
401+
hardware_acceleration: bool,
401402
) -> Result<(glium::Display<WindowSurface>, Window), DisplayCreationError> {
402403
let (res_x, res_y) = Config::display_resolution();
403404
let vsync = Config::vsync_enabled();
@@ -408,9 +409,11 @@ fn try_get_display(
408409
.with_title("Sulis")
409410
.with_inner_size(dims);
410411

412+
let hardware_accelerated = if hardware_acceleration { Some(true) } else { None };
413+
411414
let config_template_builder = ConfigTemplateBuilder::new()
412415
.with_depth_size(24)
413-
.prefer_hardware_accelerated(Some(true))
416+
.prefer_hardware_accelerated(hardware_accelerated)
414417
.with_alpha_size(8)
415418
.with_buffer_type(ColorBufferType::Rgb { r_size: 8, g_size: 8, b_size: 8 });
416419

@@ -494,7 +497,13 @@ impl GliumDisplay {
494497
debug!("Initialize Glium Display adapter.");
495498
let event_loop = EventLoop::new()?;
496499

497-
let (display, window) = try_get_display(&event_loop)?;
500+
let (display, window) = match try_get_display(&event_loop, true) {
501+
Err(e) => {
502+
log::warn!("Error creating hardware accelerated display: {e}");
503+
log::warn!("Falling back to software display");
504+
try_get_display(&event_loop, false)?
505+
}, Ok(val) => val,
506+
};
498507

499508
let monitor = get_monitor(&window);
500509

@@ -663,7 +672,7 @@ impl ApplicationHandler for GliumApp {
663672
if Config::vsync_enabled() {
664673
self.io.window.request_redraw();
665674
}
666-
675+
667676
if let StartCause::ResumeTimeReached { .. } = cause {
668677
self.io.window.request_redraw();
669678
}

0 commit comments

Comments
 (0)