overflow: hidden/scroll scissor support, remove depth

This commit is contained in:
Aleksander
2025-09-25 23:21:11 +02:00
parent 8f75d451e4
commit eb12a6a319
28 changed files with 299 additions and 182 deletions

View File

@@ -9,7 +9,7 @@ use std::{
},
};
use wgui::gfx::{WGfx, pass::WGfxPass, pipeline::WGfxPipeline};
use wgui::gfx::{WGfx, cmd::WGfxClearMode, pass::WGfxPass, pipeline::WGfxPipeline};
use crate::{
backend::openxr::helpers,
@@ -71,6 +71,7 @@ impl LinePool {
0..4,
0..1,
vec![set0],
&Default::default(),
)?;
Ok(Self {
@@ -161,7 +162,7 @@ impl LinePool {
let mut cmd_buffer = app
.gfx
.create_gfx_command_buffer(CommandBufferUsage::OneTimeSubmit)?;
cmd_buffer.begin_rendering(tgt)?;
cmd_buffer.begin_rendering(tgt, WGfxClearMode::DontCare)?;
cmd_buffer.run_ref(&self.pass)?;
cmd_buffer.end_rendering()?;

View File

@@ -11,6 +11,7 @@ use vulkano::{
image::view::ImageView,
pipeline::graphics::{color_blend::AttachmentBlend, input_assembly::PrimitiveTopology},
};
use wgui::gfx::cmd::WGfxClearMode;
use crate::{
backend::openxr::{helpers::translation_rotation_to_posef, swapchain::SwapchainOpts},
@@ -112,12 +113,13 @@ impl Skybox {
0..4,
0..1,
vec![set0, set1],
&Default::default(),
)?;
let mut cmd_buffer = app
.gfx
.create_gfx_command_buffer(CommandBufferUsage::OneTimeSubmit)?;
cmd_buffer.begin_rendering(tgt)?;
cmd_buffer.begin_rendering(tgt, WGfxClearMode::DontCare)?;
cmd_buffer.run_ref(&pass)?;
cmd_buffer.end_rendering()?;
@@ -160,12 +162,13 @@ impl Skybox {
0..4,
0..1,
vec![],
&Default::default(),
)?;
let mut cmd_buffer = app
.gfx
.create_gfx_command_buffer(CommandBufferUsage::OneTimeSubmit)?;
cmd_buffer.begin_rendering(tgt)?;
cmd_buffer.begin_rendering(tgt, WGfxClearMode::Clear([0.0, 0.0, 0.0, 0.0]))?;
cmd_buffer.run_ref(&pass)?;
cmd_buffer.end_rendering()?;

View File

@@ -308,7 +308,7 @@ impl Display {
}
pub fn tick_render(&mut self, renderer: &mut GlesRenderer, time_ms: u64) -> anyhow::Result<()> {
renderer.bind(self.gles_texture.clone())?;
renderer.bind(&mut self.gles_texture)?;
let size = Size::from((i32::from(self.width), i32::from(self.height)));
let damage: Rectangle<i32, smithay::utils::Physical> = Rectangle::from_size(size);

View File

@@ -243,8 +243,15 @@ impl<S> OverlayBackend for GuiPanel<S> {
.create_gfx_command_buffer(CommandBufferUsage::OneTimeSubmit)
.unwrap(); // want panic
cmd_buf.begin_rendering(tgt)?;
let primitives = wgui::drawing::draw(&self.layout)?;
cmd_buf.begin_rendering(
tgt,
wgui::gfx::cmd::WGfxClearMode::Clear([0.0, 0.0, 0.0, 0.0]),
)?;
let primitives = wgui::drawing::draw(&wgui::drawing::DrawParams {
layout: &self.layout,
debug_draw: false,
})?;
self.context
.draw(&mut app.wgui_shared, &mut cmd_buf, &primitives)?;
cmd_buf.end_rendering()?;

View File

@@ -6,21 +6,22 @@ use vulkano::{
command_buffer::CommandBufferUsage,
device::Queue,
format::Format,
image::{sampler::Filter, view::ImageView, Image},
image::{Image, sampler::Filter, view::ImageView},
pipeline::graphics::{color_blend::AttachmentBlend, input_assembly::PrimitiveTopology},
};
use wgui::gfx::{pass::WGfxPass, pipeline::WGfxPipeline, WGfx};
use wgui::gfx::{WGfx, cmd::WGfxClearMode, pass::WGfxPass, pipeline::WGfxPipeline};
use wlx_capture::{
frame::{self as wlx_frame, DrmFormat, FrameFormat, MouseMeta, Transform, WlxFrame},
WlxCapture,
frame::{self as wlx_frame, DrmFormat, FrameFormat, MouseMeta, Transform, WlxFrame},
};
use crate::{
backend::overlay::FrameMeta,
config::GeneralConfig,
graphics::{
dmabuf::{fourcc_to_vk, WGfxDmabuf},
upload_quad_vertices, CommandBuffers, Vert2Uv,
CommandBuffers, Vert2Uv,
dmabuf::{WGfxDmabuf, fourcc_to_vk},
upload_quad_vertices,
},
state::AppState,
};
@@ -91,6 +92,7 @@ impl ScreenPipeline {
0..4,
0..1,
vec![set0, set1],
&Default::default(),
)
}
@@ -123,7 +125,14 @@ impl ScreenPipeline {
let set0 = pipeline.uniform_sampler(0, view, Filter::Nearest)?;
let set1 = pipeline.buffer(1, buf_alpha)?;
let pass = pipeline.create_pass(extentf, buf_vert.clone(), 0..4, 0..1, vec![set0, set1])?;
let pass = pipeline.create_pass(
extentf,
buf_vert.clone(),
0..4,
0..1,
vec![set0, set1],
&Default::default(),
)?;
cmd_xfer.build_and_execute_now()?;
Ok(MousePass { pass, buf_vert })
@@ -145,7 +154,7 @@ impl ScreenPipeline {
let mut cmd = app
.gfx
.create_gfx_command_buffer(CommandBufferUsage::OneTimeSubmit)?;
cmd.begin_rendering(tgt)?;
cmd.begin_rendering(tgt, WGfxClearMode::DontCare)?;
cmd.run_ref(&self.pass)?;
if let Some(mouse) = capture.mouse.as_ref() {

View File

@@ -147,6 +147,7 @@ impl WayVRBackend {
0..4,
0..1,
vec![set0, set1],
&Default::default(),
)?;
Ok(Self {
@@ -683,7 +684,10 @@ impl OverlayBackend for WayVRBackend {
let mut cmd_buffer = app
.gfx
.create_gfx_command_buffer(CommandBufferUsage::OneTimeSubmit)?;
cmd_buffer.begin_rendering(tgt)?;
cmd_buffer.begin_rendering(
tgt,
wgui::gfx::cmd::WGfxClearMode::Clear([0.0, 0.0, 0.0, 1.0]),
)?;
cmd_buffer.run_ref(&self.pass)?;
cmd_buffer.end_rendering()?;
buf.push(cmd_buffer.build()?);

View File

@@ -96,10 +96,7 @@ impl AppState {
toast_sound: toast_sound_wav,
wgui_globals: WguiGlobals::new(
Box::new(gui::asset::GuiAsset {}),
wgui::globals::Defaults {
dark_mode: true,
text_color: wgui::drawing::Color::new(1.0, 1.0, 1.0, 1.0),
},
wgui::globals::Defaults::default(),
)?,
#[cfg(feature = "osc")]