Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
vulkan
vulkan_native_surface_android.cc
Go to the documentation of this file.
1
// Copyright 2013 The Flutter Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#include "
vulkan_native_surface_android.h
"
6
7
#include <
android/native_window.h
>
8
9
#include "
third_party/skia/include/gpu/vk/GrVkBackendContext.h
"
10
11
namespace
vulkan
{
12
13
VulkanNativeSurfaceAndroid::VulkanNativeSurfaceAndroid
(
14
ANativeWindow
* native_window)
15
: native_window_(native_window) {
16
if
(native_window_ ==
nullptr
) {
17
return
;
18
}
19
ANativeWindow_acquire(native_window_);
20
}
21
22
VulkanNativeSurfaceAndroid::~VulkanNativeSurfaceAndroid
() {
23
if
(native_window_ ==
nullptr
) {
24
return
;
25
}
26
ANativeWindow_release(native_window_);
27
}
28
29
const
char
*
VulkanNativeSurfaceAndroid::GetExtensionName
()
const
{
30
return
VK_KHR_ANDROID_SURFACE_EXTENSION_NAME
;
31
}
32
33
uint32_t
VulkanNativeSurfaceAndroid::GetSkiaExtensionName
()
const
{
34
return
kKHR_android_surface_GrVkExtensionFlag
;
35
}
36
37
VkSurfaceKHR
VulkanNativeSurfaceAndroid::CreateSurfaceHandle
(
38
VulkanProcTable
& vk,
39
const
VulkanHandle<VkInstance>
&
instance
)
const
{
40
if
(!vk.IsValid() || !
instance
) {
41
return
VK_NULL_HANDLE
;
42
}
43
44
const
VkAndroidSurfaceCreateInfoKHR
create_info = {
45
.
sType
=
VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR
,
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
}
60
61
bool
VulkanNativeSurfaceAndroid::IsValid
()
const
{
62
return
native_window_ !=
nullptr
;
63
}
64
65
SkISize
VulkanNativeSurfaceAndroid::GetSize
()
const
{
66
return
native_window_ ==
nullptr
67
?
SkISize::Make
(0, 0)
68
:
SkISize::Make
(ANativeWindow_getWidth(native_window_),
69
ANativeWindow_getHeight(native_window_));
70
}
71
72
}
// namespace vulkan
GrVkBackendContext.h
kKHR_android_surface_GrVkExtensionFlag
@ kKHR_android_surface_GrVkExtensionFlag
Definition
GrVkBackendContext.h:23
vulkan::VulkanHandle
Definition
vulkan_handle.h:17
vulkan::VulkanNativeSurfaceAndroid::VulkanNativeSurfaceAndroid
VulkanNativeSurfaceAndroid(ANativeWindow *native_window)
Definition
vulkan_native_surface_android.cc:13
vulkan::VulkanNativeSurfaceAndroid::CreateSurfaceHandle
VkSurfaceKHR CreateSurfaceHandle(VulkanProcTable &vk, const VulkanHandle< VkInstance > &instance) const override
Definition
vulkan_native_surface_android.cc:37
vulkan::VulkanNativeSurfaceAndroid::GetExtensionName
const char * GetExtensionName() const override
Definition
vulkan_native_surface_android.cc:29
vulkan::VulkanNativeSurfaceAndroid::GetSize
SkISize GetSize() const override
Definition
vulkan_native_surface_android.cc:65
vulkan::VulkanNativeSurfaceAndroid::IsValid
bool IsValid() const override
Definition
vulkan_native_surface_android.cc:61
vulkan::VulkanNativeSurfaceAndroid::~VulkanNativeSurfaceAndroid
~VulkanNativeSurfaceAndroid()
Definition
vulkan_native_surface_android.cc:22
vulkan::VulkanNativeSurfaceAndroid::GetSkiaExtensionName
uint32_t GetSkiaExtensionName() const override
Definition
vulkan_native_surface_android.cc:33
vulkan::VulkanProcTable
Definition
vulkan_proc_table.h:17
instance
VkInstance instance
Definition
main.cc:48
surface
VkSurfaceKHR surface
Definition
main.cc:49
vulkan
Definition
vulkan_handle.cc:7
native_window.h
SkISize
Definition
SkSize.h:16
SkISize::Make
static constexpr SkISize Make(int32_t w, int32_t h)
Definition
SkSize.h:20
VkAndroidSurfaceCreateInfoKHR
Definition
vulkan_android.h:28
VkAndroidSurfaceCreateInfoKHR::sType
VkStructureType sType
Definition
vulkan_android.h:29
VK_KHR_ANDROID_SURFACE_EXTENSION_NAME
#define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME
Definition
vulkan_android.h:26
VK_SUCCESS
@ VK_SUCCESS
Definition
vulkan_core.h:141
VK_NULL_HANDLE
#define VK_NULL_HANDLE
Definition
vulkan_core.h:46
VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR
@ VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR
Definition
vulkan_core.h:432
VK_CALL_LOG_ERROR
#define VK_CALL_LOG_ERROR(expression)
Definition
vulkan_interface.h:30
vulkan_native_surface_android.h
ANativeWindow
struct ANativeWindow ANativeWindow
Definition
vulkan_native_surface_android.h:12
Generated on Fri Apr 26 2024 06:18:17 for Flutter Engine by
1.9.8