summaryrefslogtreecommitdiff
path: root/chromium/device/vr/openxr/openxr_statics.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/device/vr/openxr/openxr_statics.cc')
-rw-r--r--chromium/device/vr/openxr/openxr_statics.cc23
1 files changed, 22 insertions, 1 deletions
diff --git a/chromium/device/vr/openxr/openxr_statics.cc b/chromium/device/vr/openxr/openxr_statics.cc
index 4b6096f31ad..c10611cb143 100644
--- a/chromium/device/vr/openxr/openxr_statics.cc
+++ b/chromium/device/vr/openxr/openxr_statics.cc
@@ -31,4 +31,25 @@ bool OpenXrStatics::IsApiAvailable() {
XR_SUCCEEDED(CreateInstance(&instance_));
}
-} // namespace device \ No newline at end of file
+#if defined(OS_WIN)
+// Returns the LUID of the adapter the OpenXR runtime is on. Returns {0, 0} if
+// the LUID could not be determined.
+LUID OpenXrStatics::GetLuid() {
+ if (!IsApiAvailable())
+ return {0, 0};
+
+ XrSystemId system;
+ if (XR_FAILED(GetSystem(instance_, &system)))
+ return {0, 0};
+
+ XrGraphicsRequirementsD3D11KHR graphics_requirements = {
+ XR_TYPE_GRAPHICS_REQUIREMENTS_D3D11_KHR};
+ if (XR_FAILED(xrGetD3D11GraphicsRequirementsKHR(instance_, system,
+ &graphics_requirements)))
+ return {0, 0};
+
+ return graphics_requirements.adapterLuid;
+}
+#endif
+
+} // namespace device