mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 20:35:50 +00:00
Bug 1351189 - update WR external image callback interface. r=sotaro
The new parameter "channel index" is used to select the specific channel data from a multiple channel textureHost(e.g. yuv format textureHost). MozReview-Commit-ID: Ey1cA25Z6WH
This commit is contained in:
parent
c77714e7cd
commit
ed60edae0c
@ -16,7 +16,7 @@
|
||||
namespace mozilla {
|
||||
namespace wr {
|
||||
|
||||
WrExternalImage LockExternalImage(void* aObj, WrExternalImageId aId)
|
||||
WrExternalImage LockExternalImage(void* aObj, WrExternalImageId aId, uint8_t aChannelIndex)
|
||||
{
|
||||
RendererOGL* renderer = reinterpret_cast<RendererOGL*>(aObj);
|
||||
RenderTextureHost* texture = renderer->GetRenderTexture(aId);
|
||||
@ -42,7 +42,7 @@ WrExternalImage LockExternalImage(void* aObj, WrExternalImageId aId)
|
||||
}
|
||||
}
|
||||
|
||||
void UnlockExternalImage(void* aObj, WrExternalImageId aId)
|
||||
void UnlockExternalImage(void* aObj, WrExternalImageId aId, uint8_t aChannelIndex)
|
||||
{
|
||||
RendererOGL* renderer = reinterpret_cast<RendererOGL*>(aObj);
|
||||
RenderTextureHost* texture = renderer->GetRenderTexture(aId);
|
||||
|
@ -40,8 +40,8 @@ class RenderTextureHost;
|
||||
/// on the render thread instead of the compositor thread.
|
||||
class RendererOGL
|
||||
{
|
||||
friend WrExternalImage LockExternalImage(void* aObj, WrExternalImageId aId);
|
||||
friend void UnlockExternalImage(void* aObj, WrExternalImageId aId);
|
||||
friend WrExternalImage LockExternalImage(void* aObj, WrExternalImageId aId, uint8_t aChannelIndex);
|
||||
friend void UnlockExternalImage(void* aObj, WrExternalImageId aId, uint8_t aChannelIndex);
|
||||
|
||||
public:
|
||||
WrExternalImageHandler GetExternalImageHandler();
|
||||
|
@ -555,8 +555,8 @@ struct WrExternalImage {
|
||||
size: usize,
|
||||
}
|
||||
|
||||
type LockExternalImageCallback = fn(*mut c_void, WrExternalImageId) -> WrExternalImage;
|
||||
type UnlockExternalImageCallback = fn(*mut c_void, WrExternalImageId);
|
||||
type LockExternalImageCallback = fn(*mut c_void, WrExternalImageId, u8) -> WrExternalImage;
|
||||
type UnlockExternalImageCallback = fn(*mut c_void, WrExternalImageId, u8);
|
||||
|
||||
#[repr(C)]
|
||||
pub struct WrExternalImageHandler {
|
||||
@ -568,9 +568,9 @@ pub struct WrExternalImageHandler {
|
||||
impl ExternalImageHandler for WrExternalImageHandler {
|
||||
fn lock(&mut self,
|
||||
id: ExternalImageId,
|
||||
_channel_index: u8)
|
||||
channel_index: u8)
|
||||
-> ExternalImage {
|
||||
let image = (self.lock_func)(self.external_image_obj, id.into());
|
||||
let image = (self.lock_func)(self.external_image_obj, id.into(), channel_index);
|
||||
|
||||
match image.image_type {
|
||||
WrExternalImageType::NativeTexture => {
|
||||
@ -596,8 +596,8 @@ impl ExternalImageHandler for WrExternalImageHandler {
|
||||
|
||||
fn unlock(&mut self,
|
||||
id: ExternalImageId,
|
||||
_channel_index: u8) {
|
||||
(self.unlock_func)(self.external_image_obj, id.into());
|
||||
channel_index: u8) {
|
||||
(self.unlock_func)(self.external_image_obj, id.into(), channel_index);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -485,9 +485,9 @@ struct WrExternalImage {
|
||||
}
|
||||
};
|
||||
|
||||
typedef WrExternalImage (*LockExternalImageCallback)(void*, WrExternalImageId);
|
||||
typedef WrExternalImage (*LockExternalImageCallback)(void*, WrExternalImageId, uint8_t);
|
||||
|
||||
typedef void (*UnlockExternalImageCallback)(void*, WrExternalImageId);
|
||||
typedef void (*UnlockExternalImageCallback)(void*, WrExternalImageId, uint8_t);
|
||||
|
||||
struct WrExternalImageHandler {
|
||||
void* external_image_obj;
|
||||
|
Loading…
Reference in New Issue
Block a user