Line data Source code
1 : /* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 : * This Source Code Form is subject to the terms of the Mozilla Public
3 : * License, v. 2.0. If a copy of the MPL was not distributed with this
4 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 :
6 : #include "TextureSourceProviderMLGPU.h"
7 : #include "LayerManagerMLGPU.h"
8 : #include "MLGDevice.h"
9 : #ifdef XP_WIN
10 : # include "mozilla/layers/MLGDeviceD3D11.h"
11 : #endif
12 :
13 : namespace mozilla {
14 : namespace layers {
15 :
16 0 : TextureSourceProviderMLGPU::TextureSourceProviderMLGPU(LayerManagerMLGPU* aLayerManager, MLGDevice* aDevice)
17 : : mLayerManager(aLayerManager),
18 0 : mDevice(aDevice)
19 : {
20 0 : }
21 :
22 0 : TextureSourceProviderMLGPU::~TextureSourceProviderMLGPU()
23 : {
24 0 : }
25 :
26 : int32_t
27 0 : TextureSourceProviderMLGPU::GetMaxTextureSize() const
28 : {
29 0 : if (!mDevice) {
30 0 : return 0;
31 : }
32 0 : return mDevice->GetMaxTextureSize();
33 : }
34 :
35 : bool
36 0 : TextureSourceProviderMLGPU::SupportsEffect(EffectTypes aEffect)
37 : {
38 0 : switch (aEffect) {
39 : case EffectTypes::YCBCR:
40 0 : return true;
41 : default:
42 0 : MOZ_ASSERT_UNREACHABLE("NYI");
43 : }
44 : return false;
45 : }
46 :
47 : bool
48 0 : TextureSourceProviderMLGPU::IsValid() const
49 : {
50 0 : return !!mLayerManager;
51 : }
52 :
53 : void
54 0 : TextureSourceProviderMLGPU::Destroy()
55 : {
56 0 : mLayerManager = nullptr;
57 0 : mDevice = nullptr;
58 0 : TextureSourceProvider::Destroy();
59 0 : }
60 :
61 : #ifdef XP_WIN
62 : ID3D11Device*
63 : TextureSourceProviderMLGPU::GetD3D11Device() const
64 : {
65 : if (!mDevice) {
66 : return nullptr;
67 : }
68 : return mDevice->AsD3D11()->GetD3D11Device();
69 : }
70 : #endif
71 :
72 : TimeStamp
73 0 : TextureSourceProviderMLGPU::GetLastCompositionEndTime() const
74 : {
75 0 : if (!mLayerManager) {
76 0 : return TimeStamp();
77 : }
78 0 : return mLayerManager->GetLastCompositionEndTime();
79 : }
80 :
81 : already_AddRefed<DataTextureSource>
82 0 : TextureSourceProviderMLGPU::CreateDataTextureSource(TextureFlags aFlags)
83 : {
84 0 : RefPtr<DataTextureSource> texture = mDevice->CreateDataTextureSource(aFlags);
85 0 : return texture.forget();
86 : }
87 :
88 : already_AddRefed<DataTextureSource>
89 0 : TextureSourceProviderMLGPU::CreateDataTextureSourceAround(gfx::DataSourceSurface* aSurface)
90 : {
91 0 : MOZ_ASSERT_UNREACHABLE("NYI");
92 : return nullptr;
93 : }
94 :
95 : bool
96 0 : TextureSourceProviderMLGPU::NotifyNotUsedAfterComposition(TextureHost* aTextureHost)
97 : {
98 0 : if (!mDevice) {
99 0 : return false;
100 : }
101 0 : return TextureSourceProvider::NotifyNotUsedAfterComposition(aTextureHost);
102 : }
103 :
104 : } // namespace layers
105 : } // namespace mozilla
|