Bug 1699062 - Flatten toolkit/themes/*/global/alerts/. r=desktop-theme-reviewers,dao
[gecko.git] / gfx / webrender_bindings / RenderTextureHostWrapper.cpp
blob84ad644a4dc81e2cc87c3a79244eb8bfb59dd7d0
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"
12 namespace mozilla {
13 namespace wr {
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 {
26 if (!mTextureHost) {
27 mTextureHost = RenderThread::Get()->GetRenderTexture(mExternalImageId);
28 MOZ_ASSERT(mTextureHost);
29 if (!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) {
38 EnsureTextureHost();
39 if (!mTextureHost) {
40 return InvalidToWrExternalImage();
43 return mTextureHost->Lock(aChannelIndex, aGL, aRendering);
46 void RenderTextureHostWrapper::Unlock() {
47 if (mTextureHost) {
48 mTextureHost->Unlock();
52 void RenderTextureHostWrapper::ClearCachedResources() {
53 if (mTextureHost) {
54 mTextureHost->ClearCachedResources();
58 RenderMacIOSurfaceTextureHost*
59 RenderTextureHostWrapper::AsRenderMacIOSurfaceTextureHost() {
60 EnsureTextureHost();
61 if (!mTextureHost) {
62 return nullptr;
64 return mTextureHost->AsRenderMacIOSurfaceTextureHost();
67 RenderDXGITextureHost* RenderTextureHostWrapper::AsRenderDXGITextureHost() {
68 EnsureTextureHost();
69 if (!mTextureHost) {
70 return nullptr;
72 return mTextureHost->AsRenderDXGITextureHost();
75 RenderDXGIYCbCrTextureHost*
76 RenderTextureHostWrapper::AsRenderDXGIYCbCrTextureHost() {
77 EnsureTextureHost();
78 if (!mTextureHost) {
79 return nullptr;
81 return mTextureHost->AsRenderDXGIYCbCrTextureHost();
84 RenderTextureHostSWGL* RenderTextureHostWrapper::EnsureRenderTextureHostSWGL()
85 const {
86 EnsureTextureHost();
87 if (!mTextureHost) {
88 return nullptr;
90 return mTextureHost->AsRenderTextureHostSWGL();
93 size_t RenderTextureHostWrapper::GetPlaneCount() const {
94 if (RenderTextureHostSWGL* swglHost = EnsureRenderTextureHostSWGL()) {
95 return swglHost->GetPlaneCount();
97 return 0;
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);
127 return false;
130 void RenderTextureHostWrapper::UnmapPlanes() {
131 if (RenderTextureHostSWGL* swglHost = EnsureRenderTextureHostSWGL()) {
132 swglHost->UnmapPlanes();
136 } // namespace wr
137 } // namespace mozilla