allocator: don't require render usage for bridged buffers
This commit is contained in:
parent
1bacaa7b02
commit
bf65da4c76
15 changed files with 152 additions and 54 deletions
|
|
@ -70,7 +70,7 @@ impl Global for JayCompositorGlobal {
|
|||
}
|
||||
|
||||
fn version(&self) -> u32 {
|
||||
8
|
||||
9
|
||||
}
|
||||
|
||||
fn required_caps(&self) -> ClientCaps {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue