1
0
Fork 0
forked from wry/wry

allocator: don't require render usage for bridged buffers

This commit is contained in:
Julian Orth 2024-09-05 11:48:30 +02:00
parent 1bacaa7b02
commit bf65da4c76
15 changed files with 152 additions and 54 deletions

View file

@ -70,7 +70,7 @@ impl Global for JayCompositorGlobal {
}
fn version(&self) -> u32 {
8
9
}
fn required_caps(&self) -> ClientCaps {

View file

@ -12,6 +12,7 @@ use {
};
pub const FORMATS_SINCE: Version = Version(7);
pub const WRITE_MODIFIER_2_SINCE: Version = Version(9);
pub struct JayRenderCtx {
pub id: JayRenderCtxId,
@ -30,12 +31,21 @@ impl JayRenderCtx {
self_id: self.id,
format: format.format.drm,
});
for modifier in &format.write_modifiers {
self.client.event(WriteModifier {
self_id: self.id,
format: format.format.drm,
modifier: *modifier,
});
for (modifier, gwm) in &format.write_modifiers {
if self.version >= WRITE_MODIFIER_2_SINCE {
self.client.event(WriteModifier2 {
self_id: self.id,
format: format.format.drm,
modifier: *modifier,
needs_render_usage: gwm.needs_render_usage as _,
});
} else {
self.client.event(WriteModifier {
self_id: self.id,
format: format.format.drm,
modifier: *modifier,
});
}
}
for modifier in &format.read_modifiers {
self.client.event(ReadModifier {

View file

@ -414,10 +414,10 @@ impl JayScreencast {
}
let mut usage = BO_USE_RENDERING;
let modifiers = match self.linear.get() {
true if format.write_modifiers.contains(&LINEAR_MODIFIER) => {
true if format.write_modifiers.contains_key(&LINEAR_MODIFIER) => {
vec![LINEAR_MODIFIER]
}
true if format.write_modifiers.contains(&INVALID_MODIFIER) => {
true if format.write_modifiers.contains_key(&INVALID_MODIFIER) => {
usage |= BO_USE_LINEAR;
vec![INVALID_MODIFIER]
}
@ -425,7 +425,7 @@ impl JayScreencast {
false if format.write_modifiers.is_empty() => {
return Err(JayScreencastError::XRGB8888Writing)
}
false => format.write_modifiers.iter().copied().collect(),
false => format.write_modifiers.keys().copied().collect(),
};
let buffer = ctx.allocator().create_bo(
&self.client.state.dma_buf_ids,