flutter_flutter/engine/src/flutter/vulkan/vulkan_native_surface_android.cc
Kaylee Lubick 2e2f3e35cd Update uses of GrVkBackendContext and other deprecated type names (flutter/engine#53491)
As of [this CL](https://skia-review.googlesource.com/c/skia/+/859125),
`GrVkBackendContext` is an alias for `skgpu::VulkanBackendContext`, so
this updates Flutter to use the GPU-backend agnostic version. See
<https://issues.skia.org/issues/309785258>.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide] and the [C++,
Objective-C, Java style guides].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I added new tests to check the change I am making or feature I am
adding, or the PR is [test-exempt]. See [testing the engine] for
instructions on writing and running engine tests.
- [ ] I updated/added relevant documentation (doc comments with `///`).
- [x] I signed the [CLA].
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[C++, Objective-C, Java style guides]:
https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
[testing the engine]:
https://github.com/flutter/flutter/wiki/Testing-the-engine
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
2024-06-24 07:39:16 -04:00

68 lines
1.8 KiB
C++

// 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.
#include "vulkan_native_surface_android.h"
#include <android/native_window.h>
namespace vulkan {
VulkanNativeSurfaceAndroid::VulkanNativeSurfaceAndroid(
ANativeWindow* native_window)
: native_window_(native_window) {
if (native_window_ == nullptr) {
return;
}
ANativeWindow_acquire(native_window_);
}
VulkanNativeSurfaceAndroid::~VulkanNativeSurfaceAndroid() {
if (native_window_ == nullptr) {
return;
}
ANativeWindow_release(native_window_);
}
const char* VulkanNativeSurfaceAndroid::GetExtensionName() const {
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_android_surface.html
return VK_KHR_ANDROID_SURFACE_EXTENSION_NAME;
}
VkSurfaceKHR VulkanNativeSurfaceAndroid::CreateSurfaceHandle(
VulkanProcTable& vk,
const VulkanHandle<VkInstance>& instance) const {
if (!vk.IsValid() || !instance) {
return VK_NULL_HANDLE;
}
const VkAndroidSurfaceCreateInfoKHR create_info = {
.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
.pNext = nullptr,
.flags = 0,
.window = native_window_,
};
VkSurfaceKHR surface = VK_NULL_HANDLE;
if (VK_CALL_LOG_ERROR(vk.CreateAndroidSurfaceKHR(
instance, &create_info, nullptr, &surface)) != VK_SUCCESS) {
return VK_NULL_HANDLE;
}
return surface;
}
bool VulkanNativeSurfaceAndroid::IsValid() const {
return native_window_ != nullptr;
}
SkISize VulkanNativeSurfaceAndroid::GetSize() const {
return native_window_ == nullptr
? SkISize::Make(0, 0)
: SkISize::Make(ANativeWindow_getWidth(native_window_),
ANativeWindow_getHeight(native_window_));
}
} // namespace vulkan