uidev: make window translucent

This commit is contained in:
Aleksander
2025-09-21 19:06:09 +02:00
parent 46eb1ee00f
commit 858c5da21c
4 changed files with 15 additions and 21 deletions

View File

@@ -22,7 +22,7 @@
<elements> <elements>
<!-- background for testing --> <!-- background for testing -->
<rectangle position="absolute" color="#333333" width="100%" height="100%" /> <!-- <rectangle position="absolute" color="#333333" width="100%" height="100%" /> -->
<!-- left/right separator (menu and rest) --> <!-- left/right separator (menu and rest) -->
<div flex_direction="row" gap="8" width="100%" height="100%"> <div flex_direction="row" gap="8" width="100%" height="100%">

View File

@@ -13,8 +13,8 @@ use vulkano::{
format::Format, format::Format,
image::{ImageUsage, view::ImageView}, image::{ImageUsage, view::ImageView},
swapchain::{ swapchain::{
PresentMode, Surface, SurfaceInfo, Swapchain, SwapchainCreateInfo, SwapchainPresentInfo, CompositeAlpha, PresentMode, Surface, SurfaceInfo, Swapchain, SwapchainCreateInfo,
acquire_next_image, SwapchainPresentInfo, acquire_next_image,
}, },
sync::GpuFuture, sync::GpuFuture,
}; };
@@ -53,7 +53,8 @@ fn init_logging() {
/* read RUST_LOG env var */ /* read RUST_LOG env var */
EnvFilter::builder() EnvFilter::builder()
.with_default_directive(LevelFilter::DEBUG.into()) .with_default_directive(LevelFilter::DEBUG.into())
.from_env_lossy(), .from_env_lossy()
.add_directive("cosmic_text=info".parse().unwrap()),
) )
.init(); .init();
} }
@@ -108,7 +109,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut render_context = renderer_vk::context::Context::new(&mut shared_context, scale)?; let mut render_context = renderer_vk::context::Context::new(&mut shared_context, scale)?;
render_context.update_viewport(&mut shared_context, swapchain_size, scale)?; render_context.update_viewport(&mut shared_context, swapchain_size, scale)?;
println!("new swapchain_size: {swapchain_size:?}"); log::trace!("new swapchain_size: {swapchain_size:?}");
let mut profiler = profiler::Profiler::new(1000); let mut profiler = profiler::Profiler::new(1000);
let mut frame_index: u64 = 0; let mut frame_index: u64 = 0;
@@ -263,7 +264,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
.update_viewport(&mut shared_context, swapchain_size, scale) .update_viewport(&mut shared_context, swapchain_size, scale)
.unwrap(); .unwrap();
println!("new swapchain_size: {swapchain_size:?}"); log::trace!("new swapchain_size: {swapchain_size:?}");
recreate = false; recreate = false;
window.request_redraw(); window.request_redraw();
} }
@@ -351,12 +352,14 @@ fn swapchain_create_info(
surface: Arc<Surface>, surface: Arc<Surface>,
extent: [u32; 2], extent: [u32; 2],
) -> SwapchainCreateInfo { ) -> SwapchainCreateInfo {
let surface_capabilities = graphics let mut surface_capabilities = graphics
.device .device
.physical_device() .physical_device()
.surface_capabilities(&surface, SurfaceInfo::default()) .surface_capabilities(&surface, SurfaceInfo::default())
.unwrap(); // want panic .unwrap(); // want panic
surface_capabilities.supported_composite_alpha = CompositeAlpha::PreMultiplied.into();
SwapchainCreateInfo { SwapchainCreateInfo {
min_image_count: surface_capabilities.min_image_count.max(2), min_image_count: surface_capabilities.min_image_count.max(2),
present_mode: PresentMode::Mailbox, present_mode: PresentMode::Mailbox,

View File

@@ -41,7 +41,7 @@ pub fn init_window() -> anyhow::Result<(
#[allow(deprecated)] #[allow(deprecated)]
let window = Arc::new( let window = Arc::new(
event_loop event_loop
.create_window(Window::default_attributes()) .create_window(Window::default_attributes().with_transparent(true))
.unwrap(), // want panic .unwrap(), // want panic
); );
let surface = Surface::from_window(instance.clone(), window.clone())?; let surface = Surface::from_window(instance.clone(), window.clone())?;

View File

@@ -4,9 +4,8 @@ use vulkano::{
DeviceSize, DeviceSize,
buffer::{Buffer, BufferCreateInfo, BufferUsage, Subbuffer}, buffer::{Buffer, BufferCreateInfo, BufferUsage, Subbuffer},
command_buffer::{ command_buffer::{
AutoCommandBufferBuilder, CommandBufferExecFuture, CopyBufferToImageInfo, CopyImageInfo, AutoCommandBufferBuilder, CommandBufferExecFuture, CopyBufferToImageInfo, CopyImageInfo, PrimaryAutoCommandBuffer,
PrimaryAutoCommandBuffer, PrimaryCommandBufferAbstract, RenderingAttachmentInfo, RenderingInfo, PrimaryCommandBufferAbstract, RenderingAttachmentInfo, RenderingInfo, SubpassContents,
SubpassContents,
}, },
device::Queue, device::Queue,
format::Format, format::Format,
@@ -68,9 +67,7 @@ impl WCommandBuffer<CmdBufGfx> {
where where
T: Sized, T: Sized,
{ {
self self.command_buffer.execute_commands(pass.command_buffer.clone())?;
.command_buffer
.execute_commands(pass.command_buffer.clone())?;
Ok(()) Ok(())
} }
@@ -81,13 +78,7 @@ impl WCommandBuffer<CmdBufGfx> {
} }
impl WCommandBuffer<CmdBufXfer> { impl WCommandBuffer<CmdBufXfer> {
pub fn upload_image( pub fn upload_image(&mut self, width: u32, height: u32, format: Format, data: &[u8]) -> anyhow::Result<Arc<Image>> {
&mut self,
width: u32,
height: u32,
format: Format,
data: &[u8],
) -> anyhow::Result<Arc<Image>> {
let image = Image::new( let image = Image::new(
self.graphics.memory_allocator.clone(), self.graphics.memory_allocator.clone(),
ImageCreateInfo { ImageCreateInfo {