Expose Metal texture from headless backend (#4267)
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/gfx/headless_backend.hpp>
|
||||
#include <mbgl/mtl/mtl_fwd.hpp>
|
||||
#include <mbgl/mtl/renderer_backend.hpp>
|
||||
#include <memory>
|
||||
#include <functional>
|
||||
@@ -17,12 +18,14 @@ public:
|
||||
void updateAssumedState() override;
|
||||
gfx::Renderable& getDefaultRenderable() override;
|
||||
PremultipliedImage readStillImage() override;
|
||||
MTL::Texture* getMetalTexture();
|
||||
RendererBackend* getRendererBackend() override;
|
||||
SwapBehaviour getSwapBehaviour();
|
||||
|
||||
private:
|
||||
void activate() override;
|
||||
void deactivate() override;
|
||||
void ensureResource();
|
||||
|
||||
private:
|
||||
bool active = false;
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include <mbgl/mtl/renderable_resource.hpp>
|
||||
#include <mbgl/mtl/offscreen_texture.hpp>
|
||||
#include <mbgl/mtl/context.hpp>
|
||||
#include <mbgl/mtl/texture2d.hpp>
|
||||
#include <mbgl/gfx/backend_scope.hpp>
|
||||
|
||||
#include <Metal/Metal.hpp>
|
||||
@@ -29,6 +30,10 @@ public:
|
||||
|
||||
PremultipliedImage readStillImage() { return offscreenTexture->readStillImage(); }
|
||||
|
||||
MTL::Texture* getMetalTexture() {
|
||||
return static_cast<Texture2D*>(offscreenTexture->getTexture().get())->getMetalTexture();
|
||||
}
|
||||
|
||||
const RendererBackend& getBackend() const override { return context.getBackend(); }
|
||||
|
||||
const MTLCommandBufferPtr& getCommandBuffer() const override {
|
||||
@@ -72,10 +77,14 @@ void HeadlessBackend::deactivate() {
|
||||
}
|
||||
|
||||
gfx::Renderable& HeadlessBackend::getDefaultRenderable() {
|
||||
ensureResource();
|
||||
return *this;
|
||||
}
|
||||
|
||||
void HeadlessBackend::ensureResource() {
|
||||
if (!resource) {
|
||||
resource = std::make_unique<HeadlessRenderableResource>(*this, static_cast<mtl::Context&>(getContext()), size);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
void HeadlessBackend::updateAssumedState() {
|
||||
@@ -86,6 +95,11 @@ PremultipliedImage HeadlessBackend::readStillImage() {
|
||||
return getResource<HeadlessRenderableResource>().readStillImage();
|
||||
}
|
||||
|
||||
MTL::Texture* HeadlessBackend::getMetalTexture() {
|
||||
ensureResource();
|
||||
return getResource<HeadlessRenderableResource>().getMetalTexture();
|
||||
}
|
||||
|
||||
RendererBackend* HeadlessBackend::getRendererBackend() {
|
||||
return this;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user