Blender V5.0
GHOST_IXrGraphicsBinding.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2020-2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include <memory>
12#include <optional>
13#include <string>
14#include <vector>
15
17
19 public:
20 union {
21#if defined(WITH_GHOST_X11)
22# if defined(WITH_OPENGL_BACKEND)
23 XrGraphicsBindingEGLMNDX egl;
24 XrGraphicsBindingOpenGLXlibKHR glx;
25# endif
26#endif
27#if defined(WIN32)
28# if defined(WITH_OPENGL_BACKEND)
29 XrGraphicsBindingOpenGLWin32KHR wgl;
30# endif
31 XrGraphicsBindingD3D11KHR d3d11;
32#endif
33#if defined(WITH_GHOST_WAYLAND)
34# if defined(WITH_OPENGL_BACKEND)
35 XrGraphicsBindingOpenGLWaylandKHR wl;
36# endif
37#endif
38#ifdef WITH_VULKAN_BACKEND
39 XrGraphicsBindingVulkanKHR vk;
40#endif
42
43 virtual ~GHOST_IXrGraphicsBinding() = default;
44
52 virtual bool checkVersionRequirements(class GHOST_Context &ghost_ctx,
53 XrInstance instance,
54 XrSystemId system_id,
55 std::string *r_requirement_info) const = 0;
56 virtual void initFromGhostContext(class GHOST_Context &ghost_ctx,
57 XrInstance instance,
58 XrSystemId system_id) = 0;
59 virtual std::optional<int64_t> chooseSwapchainFormat(const std::vector<int64_t> &runtime_formats,
60 GHOST_TXrSwapchainFormat &r_format,
61 bool &r_is_rgb_format) const = 0;
62 virtual std::vector<XrSwapchainImageBaseHeader *> createSwapchainImages(
63 uint32_t image_count) = 0;
64 virtual void submitToSwapchainBegin() = 0;
65 virtual void submitToSwapchainImage(XrSwapchainImageBaseHeader &swapchain_image,
66 const GHOST_XrDrawViewInfo &draw_info) = 0;
67 virtual void submitToSwapchainEnd() = 0;
68 virtual bool needsUpsideDownDrawing(GHOST_Context &ghost_ctx) const = 0;
69
70 protected:
71 /* Use GHOST_XrGraphicsBindingCreateFromType! */
73};
74
75std::unique_ptr<GHOST_IXrGraphicsBinding> GHOST_XrGraphicsBindingCreateFromType(
76 GHOST_TXrGraphicsBinding type, GHOST_Context &context);
std::unique_ptr< GHOST_IXrGraphicsBinding > GHOST_XrGraphicsBindingCreateFromType(GHOST_TXrGraphicsBinding type, GHOST_Context &context)
virtual ~GHOST_IXrGraphicsBinding()=default
GHOST_IXrGraphicsBinding()=default
virtual bool needsUpsideDownDrawing(GHOST_Context &ghost_ctx) const =0
virtual std::vector< XrSwapchainImageBaseHeader * > createSwapchainImages(uint32_t image_count)=0
virtual void submitToSwapchainEnd()=0
virtual bool checkVersionRequirements(class GHOST_Context &ghost_ctx, XrInstance instance, XrSystemId system_id, std::string *r_requirement_info) const =0
union GHOST_IXrGraphicsBinding::@316344103261324226161313226323037304250053225267 oxr_binding
virtual std::optional< int64_t > chooseSwapchainFormat(const std::vector< int64_t > &runtime_formats, GHOST_TXrSwapchainFormat &r_format, bool &r_is_rgb_format) const =0
virtual void submitToSwapchainBegin()=0
virtual void initFromGhostContext(class GHOST_Context &ghost_ctx, XrInstance instance, XrSystemId system_id)=0
virtual void submitToSwapchainImage(XrSwapchainImageBaseHeader &swapchain_image, const GHOST_XrDrawViewInfo &draw_info)=0