Bug 1938033 [Wayland] Update DMABuf texture hosts to get DMABuf surface and plave sized r=lsalzman

Differential Revision: https://phabricator.services.mozilla.com/D234911
This commit is contained in:
stransky
2025-02-19 13:54:16 +00:00
parent 8262e23b12
commit d5085a9e31
5 changed files with 29 additions and 0 deletions

View File

@@ -57,6 +57,19 @@ wr::WrExternalImage RenderDMABUFTextureHost::Lock(uint8_t aChannelIndex,
static_cast<float>(size.width), static_cast<float>(size.height)); static_cast<float>(size.width), static_cast<float>(size.height));
} }
gfx::IntSize RenderDMABUFTextureHost::GetSize(uint8_t aChannelIndex) const {
MOZ_ASSERT(mSurface);
MOZ_ASSERT((mSurface->GetTextureCount() == 0)
? (aChannelIndex == mSurface->GetTextureCount())
: (aChannelIndex < mSurface->GetTextureCount()));
if (!mSurface) {
return gfx::IntSize();
}
return gfx::IntSize(mSurface->GetWidth(aChannelIndex),
mSurface->GetHeight(aChannelIndex));
}
void RenderDMABUFTextureHost::Unlock() {} void RenderDMABUFTextureHost::Unlock() {}
void RenderDMABUFTextureHost::DeleteTextureHandle() { void RenderDMABUFTextureHost::DeleteTextureHandle() {

View File

@@ -24,6 +24,8 @@ class RenderDMABUFTextureHost final : public RenderTextureHostSWGL {
public: public:
explicit RenderDMABUFTextureHost(DMABufSurface* aSurface); explicit RenderDMABUFTextureHost(DMABufSurface* aSurface);
RenderDMABUFTextureHost* AsRenderDMABUFTextureHost() override { return this; }
gfx::IntSize GetSize(uint8_t aChannelIndex) const;
wr::WrExternalImage Lock(uint8_t aChannelIndex, gl::GLContext* aGL) override; wr::WrExternalImage Lock(uint8_t aChannelIndex, gl::GLContext* aGL) override;
void Unlock() override; void Unlock() override;
void ClearCachedResources() override; void ClearCachedResources() override;
@@ -32,6 +34,7 @@ class RenderDMABUFTextureHost final : public RenderTextureHostSWGL {
return mSurface->GetWidth() * mSurface->GetHeight() * return mSurface->GetWidth() * mSurface->GetHeight() *
BytesPerPixel(mSurface->GetFormat()); BytesPerPixel(mSurface->GetFormat());
} }
RefPtr<DMABufSurface> GetSurface() { return mSurface; }
// RenderTextureHostSWGL // RenderTextureHostSWGL
gfx::SurfaceFormat GetFormat() const override; gfx::SurfaceFormat GetFormat() const override;

View File

@@ -40,6 +40,7 @@ class RenderMacIOSurfaceTextureHost;
class RenderBufferTextureHost; class RenderBufferTextureHost;
class RenderTextureHostSWGL; class RenderTextureHostSWGL;
class RenderTextureHostWrapper; class RenderTextureHostWrapper;
class RenderDMABUFTextureHost;
void ActivateBindAndTexParameteri(gl::GLContext* aGL, GLenum aActiveTexture, void ActivateBindAndTexParameteri(gl::GLContext* aGL, GLenum aActiveTexture,
GLenum aBindTarget, GLuint aBindTexture); GLenum aBindTarget, GLuint aBindTexture);
@@ -144,6 +145,10 @@ class RenderTextureHost {
return nullptr; return nullptr;
} }
virtual RenderDMABUFTextureHost* AsRenderDMABUFTextureHost() {
return nullptr;
}
virtual void Destroy(); virtual void Destroy();
virtual void SetIsSoftwareDecodedVideo() { virtual void SetIsSoftwareDecodedVideo() {

View File

@@ -127,6 +127,13 @@ RenderTextureHostSWGL* RenderTextureHostWrapper::AsRenderTextureHostSWGL() {
return mTextureHost->AsRenderTextureHostSWGL(); return mTextureHost->AsRenderTextureHostSWGL();
} }
RenderDMABUFTextureHost* RenderTextureHostWrapper::AsRenderDMABUFTextureHost() {
if (!mTextureHost) {
return nullptr;
}
return mTextureHost->AsRenderDMABUFTextureHost();
}
RenderAndroidHardwareBufferTextureHost* RenderAndroidHardwareBufferTextureHost*
RenderTextureHostWrapper::AsRenderAndroidHardwareBufferTextureHost() { RenderTextureHostWrapper::AsRenderAndroidHardwareBufferTextureHost() {
if (!mTextureHost) { if (!mTextureHost) {

View File

@@ -47,6 +47,7 @@ class RenderTextureHostWrapper final : public RenderTextureHostSWGL {
RenderAndroidSurfaceTextureHost* AsRenderAndroidSurfaceTextureHost() override; RenderAndroidSurfaceTextureHost* AsRenderAndroidSurfaceTextureHost() override;
RenderEGLImageTextureHost* AsRenderEGLImageTextureHost() override; RenderEGLImageTextureHost* AsRenderEGLImageTextureHost() override;
RenderTextureHostSWGL* AsRenderTextureHostSWGL() override; RenderTextureHostSWGL* AsRenderTextureHostSWGL() override;
RenderDMABUFTextureHost* AsRenderDMABUFTextureHost() override;
void SetIsSoftwareDecodedVideo() override; void SetIsSoftwareDecodedVideo() override;
bool IsSoftwareDecodedVideo() override; bool IsSoftwareDecodedVideo() override;
RefPtr<RenderTextureHostUsageInfo> GetOrMergeUsageInfo( RefPtr<RenderTextureHostUsageInfo> GetOrMergeUsageInfo(