1 // 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 16 #include "render-utils/RenderLib.h" 17 18 #include "aemu/base/Compiler.h" 19 #include "host-common/vm_operations.h" 20 #include "host-common/misc.h" 21 22 #include <memory> 23 24 namespace gfxstream { 25 26 class RenderLibImpl final : public RenderLib { 27 public: 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; 55 virtual void setGrallocImplementation(GrallocImplementation gralloc) override; 56 57 virtual bool getOpt(RenderOpt* opt) override; 58 59 virtual RendererPtr initRenderer(int width, 60 int height, 61 gfxstream::host::FeatureSet features, 62 bool useSubWindow, 63 bool egl2egl) override; 64 65 OnLastColorBufferRef getOnLastColorBufferRef() override; 66 67 private: 68 DISALLOW_COPY_ASSIGN_AND_MOVE(RenderLibImpl); 69 70 private: 71 std::weak_ptr<Renderer> mRenderer; 72 }; 73 74 } // namespace gfxstream 75