Implement Android surface pre-rotation for Vulkan (#2955)

This commit is contained in:
Adrian Cojocaru
2024-11-20 15:17:39 +02:00
committed by GitHub
parent 5642b1ffa4
commit d282b3ba6b
24 changed files with 195 additions and 55 deletions

View File

@@ -25,6 +25,11 @@ public:
auto& backendImpl = static_cast<AndroidVulkanRendererBackend&>(backend);
const vk::AndroidSurfaceCreateInfoKHR createInfo({}, backendImpl.getWindow());
surface = backendImpl.getInstance()->createAndroidSurfaceKHRUnique(createInfo);
const int apiLevel = android_get_device_api_level();
if (apiLevel < __ANDROID_API_Q__) {
setSurfaceTransformPollingInterval(30);
}
}
void bind() override {}
@@ -42,7 +47,7 @@ private:
AndroidVulkanRendererBackend::AndroidVulkanRendererBackend(ANativeWindow* window_)
: vulkan::RendererBackend(gfx::ContextMode::Unique),
mbgl::gfx::Renderable({64, 64}, std::make_unique<AndroidVulkanRenderableResource>(*this)),
vulkan::Renderable({64, 64}, std::make_unique<AndroidVulkanRenderableResource>(*this)),
window(window_) {
init();
}

View File

@@ -1,6 +1,6 @@
#pragma once
#include <mbgl/gfx/renderable.hpp>
#include <mbgl/vulkan/renderable_resource.hpp>
#include <mbgl/vulkan/renderer_backend.hpp>
#include "android_renderer_backend.hpp"
#include <android/native_window.h>
@@ -10,7 +10,7 @@ namespace android {
class AndroidVulkanRendererBackend : public AndroidRendererBackend,
public vulkan::RendererBackend,
public mbgl::gfx::Renderable {
public vulkan::Renderable {
public:
AndroidVulkanRendererBackend(ANativeWindow*);
~AndroidVulkanRendererBackend() override;