29class QOpenXRGraphicsMetal :
public QAbstractOpenXRGraphics
32 QOpenXRGraphicsMetal();
34 bool initialize(
const QVector<XrExtensionProperties> &extensions) override;
35 QVector<
const char *> getRequiredExtensions()
const override;
36 const XrBaseInStructure *handle()
const override;
37 bool setupGraphics(
const XrInstance &instance, XrSystemId &systemId,
const QQuickGraphicsConfiguration &quickConfig) override;
38 bool finializeGraphics(QRhi *rhi) override;
39 int64_t colorSwapchainFormat(
const QVector<int64_t> &swapchainFormats)
const override;
40 int64_t depthSwapchainFormat(
const QVector<int64_t> &swapchainFormats)
const override;
41 QVector<XrSwapchainImageBaseHeader *> allocateSwapchainImages(
int count, XrSwapchain swapchain) override;
42 QQuickRenderTarget renderTarget(
const XrSwapchainSubImage &subImage,
const XrSwapchainImageBaseHeader *swapchainImage, quint64 swapchainFormat,
int samples,
int arraySize,
const XrSwapchainImageBaseHeader *depthSwapchainImage, quint64 depthSwapchainFormat)
const override;
43 QRhi *rhi()
const override;
44 void setupWindow(QQuickWindow *) override;
46 QRhi *m_rhi =
nullptr;
47 MTLDevice *m_device =
nullptr;
48 MTLCommandQueue *m_commandQueue =
nullptr;
49 XrGraphicsBindingMetalKHR m_graphicsBinding = {XR_TYPE_GRAPHICS_BINDING_METAL_KHR,
nullptr,
nullptr};
50 QMap<XrSwapchain, QVector<XrSwapchainImageMetalKHR>> m_swapchainImageBuffer;
51 XrGraphicsRequirementsMetalKHR m_graphicsRequirements = {XR_TYPE_GRAPHICS_REQUIREMENTS_METAL_KHR,
nullptr,
nullptr};