Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
vulkan::VulkanNativeSurfaceAndroid Class Reference

#include <vulkan_native_surface_android.h>

Inheritance diagram for vulkan::VulkanNativeSurfaceAndroid:
vulkan::VulkanNativeSurface

Public Member Functions

 VulkanNativeSurfaceAndroid (ANativeWindow *native_window)
 
 ~VulkanNativeSurfaceAndroid ()
 
const char * GetExtensionName () const override
 
uint32_t GetSkiaExtensionName () const override
 
VkSurfaceKHR CreateSurfaceHandle (VulkanProcTable &vk, const VulkanHandle< VkInstance > &instance) const override
 
bool IsValid () const override
 
SkISize GetSize () const override
 
- Public Member Functions inherited from vulkan::VulkanNativeSurface
virtual ~VulkanNativeSurface ()=default
 

Detailed Description

Definition at line 16 of file vulkan_native_surface_android.h.

Constructor & Destructor Documentation

◆ VulkanNativeSurfaceAndroid()

vulkan::VulkanNativeSurfaceAndroid::VulkanNativeSurfaceAndroid ( ANativeWindow native_window)
explicit

Create a native surface from the valid ANativeWindow reference. Ownership of the ANativeWindow is assumed by this instance.

Definition at line 13 of file vulkan_native_surface_android.cc.

15 : native_window_(native_window) {
16 if (native_window_ == nullptr) {
17 return;
18 }
19 ANativeWindow_acquire(native_window_);
20}

◆ ~VulkanNativeSurfaceAndroid()

vulkan::VulkanNativeSurfaceAndroid::~VulkanNativeSurfaceAndroid ( )

Definition at line 22 of file vulkan_native_surface_android.cc.

22 {
23 if (native_window_ == nullptr) {
24 return;
25 }
26 ANativeWindow_release(native_window_);
27}

Member Function Documentation

◆ CreateSurfaceHandle()

VkSurfaceKHR vulkan::VulkanNativeSurfaceAndroid::CreateSurfaceHandle ( VulkanProcTable vk,
const VulkanHandle< VkInstance > &  instance 
) const
overridevirtual

Implements vulkan::VulkanNativeSurface.

Definition at line 37 of file vulkan_native_surface_android.cc.

39 {
40 if (!vk.IsValid() || !instance) {
41 return VK_NULL_HANDLE;
42 }
43
44 const VkAndroidSurfaceCreateInfoKHR create_info = {
46 .pNext = nullptr,
47 .flags = 0,
48 .window = native_window_,
49 };
50
51 VkSurfaceKHR surface = VK_NULL_HANDLE;
52
53 if (VK_CALL_LOG_ERROR(vk.CreateAndroidSurfaceKHR(
54 instance, &create_info, nullptr, &surface)) != VK_SUCCESS) {
55 return VK_NULL_HANDLE;
56 }
57
58 return surface;
59}
VkInstance instance
Definition main.cc:48
VkSurfaceKHR surface
Definition main.cc:49
@ VK_SUCCESS
#define VK_NULL_HANDLE
Definition vulkan_core.h:46
@ VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR
#define VK_CALL_LOG_ERROR(expression)

◆ GetExtensionName()

const char * vulkan::VulkanNativeSurfaceAndroid::GetExtensionName ( ) const
overridevirtual

Implements vulkan::VulkanNativeSurface.

Definition at line 29 of file vulkan_native_surface_android.cc.

29 {
31}
#define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME

◆ GetSize()

SkISize vulkan::VulkanNativeSurfaceAndroid::GetSize ( ) const
overridevirtual

Implements vulkan::VulkanNativeSurface.

Definition at line 65 of file vulkan_native_surface_android.cc.

65 {
66 return native_window_ == nullptr
67 ? SkISize::Make(0, 0)
68 : SkISize::Make(ANativeWindow_getWidth(native_window_),
69 ANativeWindow_getHeight(native_window_));
70}
static std::unique_ptr< SkEncoder > Make(SkWStream *dst, const SkPixmap *src, const SkYUVAPixmaps *srcYUVA, const SkColorSpace *srcYUVAColorSpace, const SkJpegEncoder::Options &options)
static constexpr SkISize Make(int32_t w, int32_t h)
Definition SkSize.h:20

◆ GetSkiaExtensionName()

uint32_t vulkan::VulkanNativeSurfaceAndroid::GetSkiaExtensionName ( ) const
overridevirtual

Implements vulkan::VulkanNativeSurface.

Definition at line 33 of file vulkan_native_surface_android.cc.

33 {
35}
@ kKHR_android_surface_GrVkExtensionFlag

◆ IsValid()

bool vulkan::VulkanNativeSurfaceAndroid::IsValid ( ) const
overridevirtual

Implements vulkan::VulkanNativeSurface.

Definition at line 61 of file vulkan_native_surface_android.cc.

61 {
62 return native_window_ != nullptr;
63}

The documentation for this class was generated from the following files: