mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
various fixes
- Renames `Drawer::view` to `Drawer::surface_view`. - Only set present mode if it's supported in `set_render_mode`. - Don't create view in `Drawer::drop`. - Format changes.
This commit is contained in:
parent
6d45d21d95
commit
2f544868ef
@ -185,6 +185,7 @@ pub struct Renderer {
|
||||
/// The texture format used for the intermediate rendering passes
|
||||
intermediate_format: wgpu::TextureFormat,
|
||||
|
||||
/// Supported present modes.
|
||||
present_modes: Vec<PresentMode>,
|
||||
}
|
||||
|
||||
@ -649,17 +650,10 @@ impl Renderer {
|
||||
if self.other_modes != other_modes {
|
||||
self.other_modes = other_modes;
|
||||
|
||||
// Update present mode in swap chain descriptor
|
||||
self.surface_config.present_mode =
|
||||
if self.present_modes.contains(&self.other_modes.present_mode) {
|
||||
self.other_modes.present_mode
|
||||
} else {
|
||||
*self
|
||||
.present_modes
|
||||
.first()
|
||||
.expect("There should never be no supported present modes")
|
||||
}
|
||||
.into();
|
||||
// Update present mode in swap chain descriptor if it is supported.
|
||||
if self.present_modes.contains(&self.other_modes.present_mode) {
|
||||
self.surface_config.present_mode = self.other_modes.present_mode.into()
|
||||
}
|
||||
|
||||
// Only enable profiling if the wgpu features are enabled
|
||||
self.other_modes.profiler_enabled &= self.profiler_features_enabled;
|
||||
|
@ -87,7 +87,7 @@ struct RendererBorrow<'frame> {
|
||||
}
|
||||
|
||||
pub struct Drawer<'frame> {
|
||||
view: wgpu::TextureView,
|
||||
surface_view: wgpu::TextureView,
|
||||
encoder: Option<ManualOwningScope<'frame, wgpu::CommandEncoder>>,
|
||||
borrow: RendererBorrow<'frame>,
|
||||
surface_texture: Option<wgpu::SurfaceTexture>,
|
||||
@ -143,7 +143,7 @@ impl<'frame> Drawer<'frame> {
|
||||
ManualOwningScope::start("frame", &mut renderer.profiler, encoder, borrow.device);
|
||||
|
||||
// Create a view to the surface texture.
|
||||
let view = surface_texture
|
||||
let surface_view = surface_texture
|
||||
.texture
|
||||
.create_view(&wgpu::TextureViewDescriptor {
|
||||
label: Some("Surface texture view"),
|
||||
@ -151,7 +151,7 @@ impl<'frame> Drawer<'frame> {
|
||||
});
|
||||
|
||||
Self {
|
||||
view,
|
||||
surface_view,
|
||||
encoder: Some(encoder),
|
||||
borrow,
|
||||
surface_texture: Some(surface_texture),
|
||||
@ -514,6 +514,7 @@ impl<'frame> Drawer<'frame> {
|
||||
/// to complete any pending image uploads for the UI.
|
||||
pub fn third_pass(&mut self) -> ThirdPassDrawer {
|
||||
self.run_ui_premultiply_passes();
|
||||
|
||||
let encoder = self.encoder.as_mut().unwrap();
|
||||
let device = self.borrow.device;
|
||||
let mut render_pass =
|
||||
@ -525,7 +526,7 @@ impl<'frame> Drawer<'frame> {
|
||||
view: self
|
||||
.taking_screenshot
|
||||
.as_ref()
|
||||
.map_or(&self.view, |s| s.texture_view()),
|
||||
.map_or(&self.surface_view, |s| s.texture_view()),
|
||||
resolve_target: None,
|
||||
ops: wgpu::Operations {
|
||||
load: wgpu::LoadOp::Clear(wgpu::Color::TRANSPARENT),
|
||||
@ -580,7 +581,7 @@ impl<'frame> Drawer<'frame> {
|
||||
self.encoder.as_mut().unwrap(),
|
||||
self.taking_screenshot
|
||||
.as_ref()
|
||||
.map_or(&self.view, |s| s.texture_view()),
|
||||
.map_or(&self.surface_view, |s| s.texture_view()),
|
||||
&paint_jobs,
|
||||
&screen_descriptor,
|
||||
None,
|
||||
@ -754,13 +755,6 @@ impl<'frame> Drop for Drawer<'frame> {
|
||||
.take()
|
||||
.zip(self.borrow.pipelines.blit())
|
||||
.map(|(screenshot, blit)| {
|
||||
let view = self.surface_texture.as_ref().unwrap().texture.create_view(
|
||||
&wgpu::TextureViewDescriptor {
|
||||
label: Some("Surface texture view"),
|
||||
..Default::default()
|
||||
},
|
||||
);
|
||||
|
||||
// Image needs to be copied from the screenshot texture to the swapchain texture
|
||||
let mut render_pass = encoder.scoped_render_pass(
|
||||
"screenshot blit",
|
||||
@ -768,7 +762,7 @@ impl<'frame> Drop for Drawer<'frame> {
|
||||
&wgpu::RenderPassDescriptor {
|
||||
label: Some("Blit screenshot pass"),
|
||||
color_attachments: &[Some(wgpu::RenderPassColorAttachment {
|
||||
view: &view,
|
||||
view: &self.surface_view,
|
||||
resolve_target: None,
|
||||
ops: wgpu::Operations {
|
||||
load: wgpu::LoadOp::Clear(wgpu::Color::TRANSPARENT),
|
||||
|
@ -1039,9 +1039,10 @@ impl Window {
|
||||
pub fn is_cursor_grabbed(&self) -> bool { self.cursor_grabbed }
|
||||
|
||||
pub fn grab_cursor(&mut self, grab: bool) {
|
||||
use winit::window::CursorGrabMode;
|
||||
|
||||
self.cursor_grabbed = grab;
|
||||
self.window.set_cursor_visible(!grab);
|
||||
use winit::window::CursorGrabMode;
|
||||
let res = if grab {
|
||||
self.window
|
||||
.set_cursor_grab(CursorGrabMode::Locked)
|
||||
|
Loading…
Reference in New Issue
Block a user