Blender V5.0
GHOST_XrGraphicsBindingD3D.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2025 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8#pragma once
9
10#ifndef _WIN32
11# error "GHOST_XrGraphcisBindingD3D can only be compiled on Windows platforms."
12#endif
13
14#include "GHOST_ContextD3D.hh"
15#include "GHOST_ContextWGL.hh"
16#ifdef WITH_VULKAN_BACKEND
17# include "GHOST_ContextVK.hh"
18#endif
20
27 public:
30
35 XrInstance instance,
36 XrSystemId system_id,
37 std::string *r_requirement_info) const override;
38
39 void initFromGhostContext(GHOST_Context &ghost_ctx,
40 XrInstance instance,
41 XrSystemId system_id) override;
42 std::optional<int64_t> chooseSwapchainFormat(const std::vector<int64_t> &runtime_formats,
43 GHOST_TXrSwapchainFormat &r_format,
44 bool &r_is_srgb_format) const override;
45 std::vector<XrSwapchainImageBaseHeader *> createSwapchainImages(uint32_t image_count) override;
46
47 void submitToSwapchainBegin() override {}
48 void submitToSwapchainEnd() override {}
49
50 bool needsUpsideDownDrawing(GHOST_Context &ghost_ctx) const override;
51
52 protected:
55
56 std::list<std::vector<XrSwapchainImageD3D11KHR>> image_cache_;
57};
58
65 public:
68
69 void submitToSwapchainImage(XrSwapchainImageBaseHeader &swapchain_image,
70 const GHOST_XrDrawViewInfo &draw_info) override;
71
72 private:
74 GHOST_ContextWGL &ghost_wgl_ctx_;
76 GHOST_SharedOpenGLResource *shared_resource_ = nullptr;
77};
78
79#ifdef WITH_VULKAN_BACKEND
83class GHOST_XrGraphicsBindingVulkanD3D : public GHOST_XrGraphicsBindingD3D {
84 public:
85 GHOST_XrGraphicsBindingVulkanD3D(GHOST_Context &ghost_ctx);
86 ~GHOST_XrGraphicsBindingVulkanD3D();
87
88 void submitToSwapchainImage(XrSwapchainImageBaseHeader &swapchain_image,
89 const GHOST_XrDrawViewInfo &draw_info) override;
90
91 private:
93 GHOST_ContextVK &ghost_ctx_;
94};
95#endif
GHOST_IXrGraphicsBinding()=default
virtual void submitToSwapchainImage(XrSwapchainImageBaseHeader &swapchain_image, const GHOST_XrDrawViewInfo &draw_info)=0
bool checkVersionRequirements(GHOST_Context &ghost_ctx, XrInstance instance, XrSystemId system_id, std::string *r_requirement_info) const override
std::list< std::vector< XrSwapchainImageD3D11KHR > > image_cache_
std::optional< int64_t > chooseSwapchainFormat(const std::vector< int64_t > &runtime_formats, GHOST_TXrSwapchainFormat &r_format, bool &r_is_srgb_format) const override
std::vector< XrSwapchainImageBaseHeader * > createSwapchainImages(uint32_t image_count) override
bool needsUpsideDownDrawing(GHOST_Context &ghost_ctx) const override
void initFromGhostContext(GHOST_Context &ghost_ctx, XrInstance instance, XrSystemId system_id) override
GHOST_XrGraphicsBindingOpenGLD3D(GHOST_Context &ghost_ctx)
void submitToSwapchainImage(XrSwapchainImageBaseHeader &swapchain_image, const GHOST_XrDrawViewInfo &draw_info) override