blob: 60c4ef3bf2bdde7df470e2d315a7dcee5549db3d [file] [log] [blame]
Lingfeng Yangee4aea32020-10-29 08:52:13 -07001// Copyright (C) 2016 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14#pragma once
15
Joshua Duong13890052022-08-26 13:30:50 -070016#include "render-utils/RenderLib.h"
Lingfeng Yangee4aea32020-10-29 08:52:13 -070017
Joshua Duongef2bbc22022-10-05 11:59:15 -070018#include "aemu/base/Compiler.h"
Lingfeng Yangbfe3c722020-10-29 10:33:18 -070019#include "host-common/vm_operations.h"
20#include "host-common/misc.h"
Lingfeng Yangee4aea32020-10-29 08:52:13 -070021
22#include <memory>
23
Jason Macnaked0c9e62023-03-30 15:58:24 -070024namespace gfxstream {
Lingfeng Yangee4aea32020-10-29 08:52:13 -070025
26class RenderLibImpl final : public RenderLib {
27public:
28 RenderLibImpl() = default;
29
30 virtual void setRenderer(SelectedRenderer renderer) override;
31 virtual void setAvdInfo(bool phone, int api) override;
32 virtual void getGlesVersion(int* maj, int* min) override;
33 virtual void setLogger(emugl_logger_struct logger) override;
34 virtual void setGLObjectCounter(
35 android::base::GLObjectCounter* counter) override;
36 virtual void setCrashReporter(emugl_crash_reporter_t reporter) override;
37 virtual void setFeatureController(emugl_feature_is_enabled_t featureController) override;
38 virtual void setSyncDevice(emugl_sync_create_timeline_t,
39 emugl_sync_create_fence_t,
40 emugl_sync_timeline_inc_t,
41 emugl_sync_destroy_timeline_t,
42 emugl_sync_register_trigger_wait_t,
43 emugl_sync_device_exists_t) override;
44
45 virtual void setDmaOps(emugl_dma_ops) override;
46
47 virtual void setVmOps(const QAndroidVmOperations &vm_operations) override;
48 virtual void setAddressSpaceDeviceControlOps(struct address_space_device_control_ops* ops) override;
49
50 virtual void setWindowOps(const QAndroidEmulatorWindowAgent &window_operations,
51 const QAndroidMultiDisplayAgent &multi_display_operations) override;
52
53 virtual void setUsageTracker(android::base::CpuUsage* cpuUsage,
54 android::base::MemoryTracker* memUsage) override;
Joshua Duonge3b2c5c2022-05-31 08:27:47 -070055 virtual void setGrallocImplementation(GrallocImplementation gralloc) override;
Lingfeng Yangee4aea32020-10-29 08:52:13 -070056
Lingfeng Yangee4aea32020-10-29 08:52:13 -070057 virtual bool getOpt(RenderOpt* opt) override;
58
59 virtual RendererPtr initRenderer(int width,
60 int height,
Jason Macnak26872122024-02-23 10:46:09 -080061 gfxstream::host::FeatureSet features,
Lingfeng Yangee4aea32020-10-29 08:52:13 -070062 bool useSubWindow,
63 bool egl2egl) override;
64
65 OnLastColorBufferRef getOnLastColorBufferRef() override;
66
67private:
68 DISALLOW_COPY_ASSIGN_AND_MOVE(RenderLibImpl);
69
70private:
71 std::weak_ptr<Renderer> mRenderer;
72};
73
Jason Macnaked0c9e62023-03-30 15:58:24 -070074} // namespace gfxstream