|  | // 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_H_ | 
|  | #define FLUTTER_VULKAN_VULKAN_NATIVE_SURFACE_H_ | 
|  |  | 
|  | #include "flutter/fml/macros.h" | 
|  | #include "flutter/vulkan/procs/vulkan_handle.h" | 
|  | #include "flutter/vulkan/procs/vulkan_proc_table.h" | 
|  | #include "third_party/skia/include/core/SkSize.h" | 
|  |  | 
|  | namespace vulkan { | 
|  |  | 
|  | class VulkanNativeSurface { | 
|  | public: | 
|  | virtual ~VulkanNativeSurface() = default; | 
|  |  | 
|  | virtual const char* GetExtensionName() const = 0; | 
|  |  | 
|  | virtual uint32_t GetSkiaExtensionName() const = 0; | 
|  |  | 
|  | virtual VkSurfaceKHR CreateSurfaceHandle( | 
|  | VulkanProcTable& vk, | 
|  | const VulkanHandle<VkInstance>& instance) const = 0; | 
|  |  | 
|  | virtual bool IsValid() const = 0; | 
|  |  | 
|  | virtual SkISize GetSize() const = 0; | 
|  | }; | 
|  |  | 
|  | }  // namespace vulkan | 
|  |  | 
|  | #endif  // FLUTTER_VULKAN_VULKAN_NATIVE_SURFACE_H_ |