[Bf-blender-cvs] [09872df1c71] soc-2019-openxr: Check runtime DirectX requirements for graphics binding too

Julian Eisel noreply at git.blender.org
Thu Jul 11 21:06:07 CEST 2019


Commit: 09872df1c7141ee010da4071f7f7faa2ca1fbc2c
Author: Julian Eisel
Date:   Thu Jul 11 21:05:13 2019 +0200
Branches: soc-2019-openxr
https://developer.blender.org/rB09872df1c7141ee010da4071f7f7faa2ca1fbc2c

Check runtime DirectX requirements for graphics binding too

===================================================================

M	intern/ghost/intern/GHOST_IXrGraphicsBinding.h
M	intern/ghost/intern/GHOST_XrGraphicsBinding.cpp

===================================================================

diff --git a/intern/ghost/intern/GHOST_IXrGraphicsBinding.h b/intern/ghost/intern/GHOST_IXrGraphicsBinding.h
index 66073643317..e426312ba30 100644
--- a/intern/ghost/intern/GHOST_IXrGraphicsBinding.h
+++ b/intern/ghost/intern/GHOST_IXrGraphicsBinding.h
@@ -22,7 +22,9 @@
 #define __GHOST_IXRGRAPHICSBINDING_H__
 
 #include <memory>
+#include <string>
 #include <vector>
+
 #include "GHOST_Xr_openxr_includes.h"
 
 class GHOST_IXrGraphicsBinding {
diff --git a/intern/ghost/intern/GHOST_XrGraphicsBinding.cpp b/intern/ghost/intern/GHOST_XrGraphicsBinding.cpp
index b0b53888a80..8120dccfcd7 100644
--- a/intern/ghost/intern/GHOST_XrGraphicsBinding.cpp
+++ b/intern/ghost/intern/GHOST_XrGraphicsBinding.cpp
@@ -152,12 +152,26 @@ class GHOST_XrGraphicsBindingOpenGL : public GHOST_IXrGraphicsBinding {
 #ifdef WIN32
 class GHOST_XrGraphicsBindingD3D : public GHOST_IXrGraphicsBinding {
  public:
-  bool checkVersionRequirements(GHOST_Context * /*ghost_ctx*/,
-                                XrInstance /*instance*/,
-                                XrSystemId /*system_id*/,
-                                std::string * /*r_requirement_info*/) const override
+  bool checkVersionRequirements(GHOST_Context *ghost_ctx,
+                                XrInstance instance,
+                                XrSystemId system_id,
+                                std::string *r_requirement_info) const override
   {
-    // TODO
+
+    GHOST_ContextD3D *ctx_dx = static_cast<GHOST_ContextD3D *>(ghost_ctx);
+    XrGraphicsRequirementsD3D11KHR gpu_requirements{XR_TYPE_GRAPHICS_REQUIREMENTS_D3D11_KHR};
+
+    xrGetD3D11GraphicsRequirementsKHR(instance, system_id, &gpu_requirements);
+
+    if (r_requirement_info) {
+      std::ostringstream strstream;
+      strstream << "Min DirectX 11 Feature Level " << gpu_requirements.minFeatureLevel
+                << std::endl;
+
+      *r_requirement_info = std::move(strstream.str());
+    }
+
+    return ctx_dx->m_device->GetFeatureLevel() >= gpu_requirements.minFeatureLevel;
   }
 
   void initFromGhostContext(GHOST_Context *ghost_ctx) override



More information about the Bf-blender-cvs mailing list