Flutter Engine
 
Loading...
Searching...
No Matches
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
 
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 11 of file vulkan_native_surface_android.cc.

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

◆ ~VulkanNativeSurfaceAndroid()

vulkan::VulkanNativeSurfaceAndroid::~VulkanNativeSurfaceAndroid ( )

Definition at line 20 of file vulkan_native_surface_android.cc.

20 {
21 if (native_window_ == nullptr) {
22 return;
23 }
24 ANativeWindow_release(native_window_);
25}

Member Function Documentation

◆ CreateSurfaceHandle()

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

Implements vulkan::VulkanNativeSurface.

Definition at line 32 of file vulkan_native_surface_android.cc.

34 {
35 if (!vk.IsValid() || !instance) {
36 return VK_NULL_HANDLE;
37 }
38
39 const VkAndroidSurfaceCreateInfoKHR create_info = {
40 .sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
41 .pNext = nullptr,
42 .flags = 0,
43 .window = native_window_,
44 };
45
46 VkSurfaceKHR surface = VK_NULL_HANDLE;
47
48 if (VK_CALL_LOG_ERROR(vk.CreateAndroidSurfaceKHR(
49 instance, &create_info, nullptr, &surface)) != VK_SUCCESS) {
50 return VK_NULL_HANDLE;
51 }
52
53 return surface;
54}
VkInstance instance
Definition main.cc:64
VkSurfaceKHR surface
Definition main.cc:65
#define VK_CALL_LOG_ERROR(expression)

References instance, vulkan::VulkanProcTable::IsValid(), surface, and VK_CALL_LOG_ERROR.

◆ GetExtensionName()

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

Implements vulkan::VulkanNativeSurface.

Definition at line 27 of file vulkan_native_surface_android.cc.

27 {
28 // https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_android_surface.html
29 return VK_KHR_ANDROID_SURFACE_EXTENSION_NAME;
30}

◆ GetSize()

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

Implements vulkan::VulkanNativeSurface.

Definition at line 60 of file vulkan_native_surface_android.cc.

60 {
61 return native_window_ == nullptr
62 ? SkISize::Make(0, 0)
63 : SkISize::Make(ANativeWindow_getWidth(native_window_),
64 ANativeWindow_getHeight(native_window_));
65}

◆ IsValid()

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

Implements vulkan::VulkanNativeSurface.

Definition at line 56 of file vulkan_native_surface_android.cc.

56 {
57 return native_window_ != nullptr;
58}

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