mirror of
https://github.com/neovide/neovide.git
synced 2026-09-10 07:16:25 -04:00
refactor: refactor metal renderer to use settings parameter
- update `metal.rs` to use `settings` parameter in various places instead of `settings` - add `settings` parameter to the `new` function in `metalskiarenderer` in `metal.rs` - modify `create_skia_renderer` function in `mod.rs` to pass `settings` parameter to `metalskiarenderer`
This commit is contained in:
parent
133b05bd06
commit
18325b66c7
|
|
@ -1,3 +1,5 @@
|
|||
use std::sync::Arc;
|
||||
|
||||
use objc2::{rc::Retained, runtime::ProtocolObject};
|
||||
use objc2_app_kit::NSColorSpace;
|
||||
use objc2_foundation::{CGFloat, CGSize};
|
||||
|
|
@ -19,10 +21,12 @@ use winit::{event_loop::EventLoopProxy, window::Window};
|
|||
|
||||
use crate::{
|
||||
profiling::tracy_gpu_zone,
|
||||
renderer::{RendererSettings, SkiaRenderer, VSync, SETTINGS},
|
||||
renderer::{RendererSettings, SkiaRenderer, VSync},
|
||||
window::{macos::get_ns_window, UserEvent},
|
||||
};
|
||||
|
||||
use super::Settings;
|
||||
|
||||
struct MetalDrawableSurface {
|
||||
pub _drawable: Retained<ProtocolObject<dyn CAMetalDrawable>>,
|
||||
pub metal_drawable: Retained<ProtocolObject<dyn MTLDrawable>>,
|
||||
|
|
@ -33,6 +37,7 @@ impl MetalDrawableSurface {
|
|||
fn new(
|
||||
drawable: Retained<ProtocolObject<dyn CAMetalDrawable>>,
|
||||
context: &mut DirectContext,
|
||||
settings: &Settings,
|
||||
) -> MetalDrawableSurface {
|
||||
tracy_gpu_zone!("MetalDrawableSurface.new");
|
||||
|
||||
|
|
@ -46,7 +51,7 @@ impl MetalDrawableSurface {
|
|||
let metal_drawable =
|
||||
unsafe { Retained::cast::<ProtocolObject<dyn MTLDrawable>>(drawable.clone()) };
|
||||
|
||||
let render_settings = SETTINGS.get::<RendererSettings>();
|
||||
let render_settings = settings.get::<RendererSettings>();
|
||||
|
||||
let surface_props = SurfaceProps::new_with_text_properties(
|
||||
SurfacePropsFlags::default(),
|
||||
|
|
@ -85,10 +90,11 @@ pub struct MetalSkiaRenderer {
|
|||
_backend: BackendContext,
|
||||
context: DirectContext,
|
||||
metal_drawable_surface: Option<MetalDrawableSurface>,
|
||||
settings: Arc<Settings>,
|
||||
}
|
||||
|
||||
impl MetalSkiaRenderer {
|
||||
pub fn new(window: Window, srgb: bool, vsync: bool) -> Self {
|
||||
pub fn new(window: Window, srgb: bool, vsync: bool, settings: Arc<Settings>) -> Self {
|
||||
log::info!("Initialize MetalSkiaRenderer...");
|
||||
|
||||
let draw_size = window.inner_size();
|
||||
|
|
@ -147,6 +153,7 @@ impl MetalSkiaRenderer {
|
|||
_backend: backend,
|
||||
context,
|
||||
metal_drawable_surface: None,
|
||||
settings,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -159,7 +166,11 @@ impl MetalSkiaRenderer {
|
|||
.expect("Failed to get next drawable of metal layer.")
|
||||
};
|
||||
|
||||
self.metal_drawable_surface = Some(MetalDrawableSurface::new(drawable, &mut self.context));
|
||||
self.metal_drawable_surface = Some(MetalDrawableSurface::new(
|
||||
drawable,
|
||||
&mut self.context,
|
||||
&self.settings,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -576,9 +576,12 @@ pub fn create_skia_renderer(
|
|||
Box::new(d3d::D3DSkiaRenderer::new(window.window, settings.clone()))
|
||||
}
|
||||
#[cfg(target_os = "macos")]
|
||||
WindowConfigType::Metal => {
|
||||
Box::new(metal::MetalSkiaRenderer::new(window.window, srgb, vsync))
|
||||
}
|
||||
WindowConfigType::Metal => Box::new(metal::MetalSkiaRenderer::new(
|
||||
window.window,
|
||||
srgb,
|
||||
vsync,
|
||||
settings.clone(),
|
||||
)),
|
||||
};
|
||||
tracy_create_gpu_context("main_render_context", renderer.as_ref());
|
||||
renderer
|
||||
|
|
|
|||
Loading…
Reference in a new issue