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
|
|
@ -1,10 +1,11 @@
|
|||
use {
|
||||
crate::{
|
||||
format::formats,
|
||||
gfx_api::GfxFormat,
|
||||
gfx_api::{GfxFormat, GfxWriteModifier},
|
||||
ifs::jay_render_ctx::FORMATS_SINCE,
|
||||
object::Version,
|
||||
utils::clonecell::CloneCell,
|
||||
video::Modifier,
|
||||
wire::{jay_render_ctx::*, JayRenderCtxId},
|
||||
wl_usr::{usr_object::UsrObject, UsrCon},
|
||||
},
|
||||
|
|
@ -29,6 +30,16 @@ pub trait UsrJayRenderCtxOwner {
|
|||
}
|
||||
}
|
||||
|
||||
impl UsrJayRenderCtx {
|
||||
fn add_write_modifier(&self, format: u32, modifier: Modifier, needs_render_usage: bool) {
|
||||
if let Some(format) = self.formats.borrow_mut().get_mut(&format) {
|
||||
format
|
||||
.write_modifiers
|
||||
.insert(modifier, GfxWriteModifier { needs_render_usage });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl JayRenderCtxEventHandler for UsrJayRenderCtx {
|
||||
type Error = Infallible;
|
||||
|
||||
|
|
@ -57,9 +68,7 @@ impl JayRenderCtxEventHandler for UsrJayRenderCtx {
|
|||
}
|
||||
|
||||
fn write_modifier(&self, ev: WriteModifier, _slf: &Rc<Self>) -> Result<(), Self::Error> {
|
||||
if let Some(format) = self.formats.borrow_mut().get_mut(&ev.format) {
|
||||
format.write_modifiers.insert(ev.modifier);
|
||||
}
|
||||
self.add_write_modifier(ev.format, ev.modifier, true);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
@ -76,6 +85,11 @@ impl JayRenderCtxEventHandler for UsrJayRenderCtx {
|
|||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn write_modifier2(&self, ev: WriteModifier2, _slf: &Rc<Self>) -> Result<(), Self::Error> {
|
||||
self.add_write_modifier(ev.format, ev.modifier, ev.needs_render_usage != 0);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
usr_object_base! {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue