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