From 149801520a0a7954b860acc1043bf0b87f57065b Mon Sep 17 00:00:00 2001 From: kossLAN Date: Mon, 6 Apr 2026 22:19:32 -0400 Subject: [PATCH] backend: fix bug that mistakeningly selected wrong render device --- src/backend.rs | 3 +++ src/backends/metal/video.rs | 4 ++++ src/state.rs | 3 +++ 3 files changed, 10 insertions(+) diff --git a/src/backend.rs b/src/backend.rs index af63d868..f30582ad 100644 --- a/src/backend.rs +++ b/src/backend.rs @@ -585,6 +585,9 @@ pub trait BackendDrmDevice { fn direct_scanout_enabled(&self) -> bool { false } + fn gfx_fast_ram_access(&self) -> bool { + false + } fn create_lease( self: Rc, lessee: Rc, diff --git a/src/backends/metal/video.rs b/src/backends/metal/video.rs index 64cc7c12..eea31b5b 100644 --- a/src/backends/metal/video.rs +++ b/src/backends/metal/video.rs @@ -189,6 +189,10 @@ impl BackendDrmDevice for MetalDrmDevice { .unwrap_or(self.backend.state.direct_scanout_enabled.get()) } + fn gfx_fast_ram_access(&self) -> bool { + self.ctx.get().gfx.fast_ram_access() + } + fn create_lease( self: Rc, lessee: Rc, diff --git a/src/state.rs b/src/state.rs index ea68b130..7bcac2b6 100644 --- a/src/state.rs +++ b/src/state.rs @@ -637,6 +637,9 @@ impl State { { continue; } + if dev.dev.gfx_fast_ram_access() { + continue; + } dev.make_render_device(); if self.render_ctx.is_some() { break;