Blender V4.5
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 XrGraphicsBindingEGLMNDX egl;
23 XrGraphicsBindingOpenGLXlibKHR glx;
24#elif defined(WIN32)
25 XrGraphicsBindingOpenGLWin32KHR wgl;
26 XrGraphicsBindingD3D11KHR d3d11;
27#endif
28#if defined(WITH_GHOST_WAYLAND)
29 XrGraphicsBindingOpenGLWaylandKHR wl;
30#endif
31#ifdef WITH_VULKAN_BACKEND
32 XrGraphicsBindingVulkanKHR vk;
33#endif
35
36 virtual ~GHOST_IXrGraphicsBinding() = default;
37
45 virtual bool checkVersionRequirements(class GHOST_Context &ghost_ctx,
46 XrInstance instance,
47 XrSystemId system_id,
48 std::string *r_requirement_info) const = 0;
49 virtual void initFromGhostContext(class GHOST_Context &ghost_ctx,
50 XrInstance instance,
51 XrSystemId system_id) = 0;
52 virtual std::optional<int64_t> chooseSwapchainFormat(const std::vector<int64_t> &runtime_formats,
53 GHOST_TXrSwapchainFormat &r_format,
54 bool &r_is_rgb_format) const = 0;
55 virtual std::vector<XrSwapchainImageBaseHeader *> createSwapchainImages(
56 uint32_t image_count) = 0;
57 virtual void submitToSwapchainBegin() = 0;
58 virtual void submitToSwapchainImage(XrSwapchainImageBaseHeader &swapchain_image,
59 const GHOST_XrDrawViewInfo &draw_info) = 0;
60 virtual void submitToSwapchainEnd() = 0;
61 virtual bool needsUpsideDownDrawing(GHOST_Context &ghost_ctx) const = 0;
62
63 protected:
64 /* Use GHOST_XrGraphicsBindingCreateFromType! */
66};
67
68std::unique_ptr<GHOST_IXrGraphicsBinding> GHOST_XrGraphicsBindingCreateFromType(
69 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
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
union GHOST_IXrGraphicsBinding::@052027211213132075133072231143274046066047207046 oxr_binding
virtual void submitToSwapchainImage(XrSwapchainImageBaseHeader &swapchain_image, const GHOST_XrDrawViewInfo &draw_info)=0