1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #include "RenderTextureHostWrapper.h"
9 #include "mozilla/gfx/Logging.h"
10 #include "mozilla/webrender/RenderThread.h"
15 RenderTextureHostWrapper::RenderTextureHostWrapper(
16 ExternalImageId aExternalImageId
)
17 : mExternalImageId(aExternalImageId
) {
18 MOZ_COUNT_CTOR_INHERITED(RenderTextureHostWrapper
, RenderTextureHost
);
21 RenderTextureHostWrapper::~RenderTextureHostWrapper() {
22 MOZ_COUNT_DTOR_INHERITED(RenderTextureHostWrapper
, RenderTextureHost
);
25 void RenderTextureHostWrapper::EnsureTextureHost() const {
27 mTextureHost
= RenderThread::Get()->GetRenderTexture(mExternalImageId
);
28 MOZ_ASSERT(mTextureHost
);
30 gfxCriticalNoteOnce
<< "Failed to get RenderTextureHost for extId:"
31 << AsUint64(mExternalImageId
);
36 wr::WrExternalImage
RenderTextureHostWrapper::Lock(
37 uint8_t aChannelIndex
, gl::GLContext
* aGL
, wr::ImageRendering aRendering
) {
40 return InvalidToWrExternalImage();
43 return mTextureHost
->Lock(aChannelIndex
, aGL
, aRendering
);
46 void RenderTextureHostWrapper::Unlock() {
48 mTextureHost
->Unlock();
52 void RenderTextureHostWrapper::ClearCachedResources() {
54 mTextureHost
->ClearCachedResources();
58 RenderMacIOSurfaceTextureHost
*
59 RenderTextureHostWrapper::AsRenderMacIOSurfaceTextureHost() {
64 return mTextureHost
->AsRenderMacIOSurfaceTextureHost();
67 RenderDXGITextureHost
* RenderTextureHostWrapper::AsRenderDXGITextureHost() {
72 return mTextureHost
->AsRenderDXGITextureHost();
75 RenderDXGIYCbCrTextureHost
*
76 RenderTextureHostWrapper::AsRenderDXGIYCbCrTextureHost() {
81 return mTextureHost
->AsRenderDXGIYCbCrTextureHost();
84 RenderTextureHostSWGL
* RenderTextureHostWrapper::EnsureRenderTextureHostSWGL()
90 return mTextureHost
->AsRenderTextureHostSWGL();
93 size_t RenderTextureHostWrapper::GetPlaneCount() const {
94 if (RenderTextureHostSWGL
* swglHost
= EnsureRenderTextureHostSWGL()) {
95 return swglHost
->GetPlaneCount();
100 gfx::SurfaceFormat
RenderTextureHostWrapper::GetFormat() const {
101 if (RenderTextureHostSWGL
* swglHost
= EnsureRenderTextureHostSWGL()) {
102 return swglHost
->GetFormat();
104 return gfx::SurfaceFormat::UNKNOWN
;
107 gfx::ColorDepth
RenderTextureHostWrapper::GetColorDepth() const {
108 if (RenderTextureHostSWGL
* swglHost
= EnsureRenderTextureHostSWGL()) {
109 return swglHost
->GetColorDepth();
111 return gfx::ColorDepth::UNKNOWN
;
114 gfx::YUVColorSpace
RenderTextureHostWrapper::GetYUVColorSpace() const {
115 if (RenderTextureHostSWGL
* swglHost
= EnsureRenderTextureHostSWGL()) {
116 return swglHost
->GetYUVColorSpace();
118 return gfx::YUVColorSpace::UNKNOWN
;
121 bool RenderTextureHostWrapper::MapPlane(RenderCompositor
* aCompositor
,
122 uint8_t aChannelIndex
,
123 PlaneInfo
& aPlaneInfo
) {
124 if (RenderTextureHostSWGL
* swglHost
= EnsureRenderTextureHostSWGL()) {
125 return swglHost
->MapPlane(aCompositor
, aChannelIndex
, aPlaneInfo
);
130 void RenderTextureHostWrapper::UnmapPlanes() {
131 if (RenderTextureHostSWGL
* swglHost
= EnsureRenderTextureHostSWGL()) {
132 swglHost
->UnmapPlanes();
137 } // namespace mozilla