Implement Android surface pre-rotation for Vulkan (#2955)
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user