// Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef FLUTTER_VULKAN_VULKAN_NATIVE_SURFACE_ANDROID_H_ #define FLUTTER_VULKAN_VULKAN_NATIVE_SURFACE_ANDROID_H_ #include "flutter/fml/macros.h" #include "vulkan_native_surface.h" struct ANativeWindow; typedef struct ANativeWindow ANativeWindow; namespace vulkan { class VulkanNativeSurfaceAndroid : public VulkanNativeSurface { public: /// Create a native surface from the valid ANativeWindow reference. Ownership /// of the ANativeWindow is assumed by this instance. explicit VulkanNativeSurfaceAndroid(ANativeWindow* native_window); ~VulkanNativeSurfaceAndroid(); const char* GetExtensionName() const override; uint32_t GetSkiaExtensionName() const override; VkSurfaceKHR CreateSurfaceHandle( VulkanProcTable& vk, const VulkanHandle& instance) const override; bool IsValid() const override; SkISize GetSize() const override; private: ANativeWindow* native_window_; FML_DISALLOW_COPY_AND_ASSIGN(VulkanNativeSurfaceAndroid); }; } // namespace vulkan #endif // FLUTTER_VULKAN_VULKAN_NATIVE_SURFACE_ANDROID_H_