The open source OpenXR runtime
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

st/oxr: Track graphics extension used to create session

authored by

Jakob Bornecrantz and committed by
Simon Zeni
24ecd455 fb023e00

+38 -11
+18
src/xrt/state_trackers/oxr/oxr_defines.h
··· 102 102 103 103 OXR_SPACE_TYPE_ACTION, 104 104 }; 105 + 106 + /*! 107 + * What graphics API was this session created with. 108 + * 109 + * @ingroup oxr_main 110 + */ 111 + enum oxr_session_graphics_ext 112 + { 113 + OXR_SESSION_GRAPHICS_EXT_HEADLESS, 114 + // Can't reliable tell the difference between Vulkan 1 & 2. 115 + OXR_SESSION_GRAPHICS_EXT_VULKAN, 116 + OXR_SESSION_GRAPHICS_EXT_D3D11, 117 + OXR_SESSION_GRAPHICS_EXT_D3D12, 118 + OXR_SESSION_GRAPHICS_EXT_WIN32_GL, 119 + OXR_SESSION_GRAPHICS_EXT_XLIB_GL, 120 + OXR_SESSION_GRAPHICS_EXT_ANDROID_GLES, 121 + OXR_SESSION_GRAPHICS_EXT_EGL, 122 + };
+3
src/xrt/state_trackers/oxr/oxr_objects.h
··· 1505 1505 struct oxr_handle_base handle; 1506 1506 struct oxr_system *sys; 1507 1507 1508 + //! What graphics type was this session created with. 1509 + enum oxr_session_graphics_ext gfx_ext; 1510 + 1508 1511 //! Native compositor that is wrapped by client compositors. 1509 1512 struct xrt_compositor_native *xcn; 1510 1513
+17 -11
src/xrt/state_trackers/oxr/oxr_session.c
··· 686 686 } 687 687 688 688 static XrResult 689 - oxr_session_allocate_and_init(struct oxr_logger *log, struct oxr_system *sys, struct oxr_session **out_session) 689 + oxr_session_allocate_and_init(struct oxr_logger *log, 690 + struct oxr_system *sys, 691 + enum oxr_session_graphics_ext gfx_ext, 692 + struct oxr_session **out_session) 690 693 { 691 694 struct oxr_session *sess = NULL; 692 695 OXR_ALLOCATE_HANDLE_OR_RETURN(log, sess, OXR_XR_DEBUG_SESSION, oxr_session_destroy, &sys->inst->handle); 696 + 697 + // What graphics API type was this created with. 698 + sess->gfx_ext = gfx_ext; 693 699 694 700 // What system is this session based on. 695 701 sess->sys = sys; ··· 742 748 } \ 743 749 } while (false) 744 750 745 - #define OXR_SESSION_ALLOCATE_AND_INIT(LOG, SYS, OUT) \ 751 + #define OXR_SESSION_ALLOCATE_AND_INIT(LOG, SYS, GFX_TYPE, OUT) \ 746 752 do { \ 747 - XrResult ret = oxr_session_allocate_and_init(LOG, SYS, &OUT); \ 753 + XrResult ret = oxr_session_allocate_and_init(LOG, SYS, GFX_TYPE, &OUT); \ 748 754 if (ret != XR_SUCCESS) { \ 749 755 return ret; \ 750 756 } \ ··· 774 780 "xrGetOpenGL[ES]GraphicsRequirementsKHR"); 775 781 } 776 782 777 - OXR_SESSION_ALLOCATE_AND_INIT(log, sys, *out_session); 783 + OXR_SESSION_ALLOCATE_AND_INIT(log, sys, OXR_SESSION_GRAPHICS_EXT_XLIB_GL, *out_session); 778 784 OXR_ALLOCATE_NATIVE_COMPOSITOR(log, xsi, *out_session); 779 785 return oxr_session_populate_gl_xlib(log, sys, opengl_xlib, *out_session); 780 786 } ··· 793 799 "xrGetOpenGLESGraphicsRequirementsKHR"); 794 800 } 795 801 796 - OXR_SESSION_ALLOCATE_AND_INIT(log, sys, *out_session); 802 + OXR_SESSION_ALLOCATE_AND_INIT(log, sys, OXR_SESSION_GRAPHICS_EXT_ANDROID_GLES, *out_session); 797 803 OXR_ALLOCATE_NATIVE_COMPOSITOR(log, xsi, *out_session); 798 804 return oxr_session_populate_gles_android(log, sys, opengles_android, *out_session); 799 805 } ··· 810 816 "Has not called xrGetOpenGLGraphicsRequirementsKHR"); 811 817 } 812 818 813 - OXR_SESSION_ALLOCATE_AND_INIT(log, sys, *out_session); 819 + OXR_SESSION_ALLOCATE_AND_INIT(log, sys, OXR_SESSION_GRAPHICS_EXT_WIN32_GL, *out_session); 814 820 OXR_ALLOCATE_NATIVE_COMPOSITOR(log, xsi, *out_session); 815 821 return oxr_session_populate_gl_win32(log, sys, opengl_win32, *out_session); 816 822 } ··· 849 855 (void *)vulkan->physicalDevice, (void *)sys->suggested_vulkan_physical_device, fn); 850 856 } 851 857 852 - OXR_SESSION_ALLOCATE_AND_INIT(log, sys, *out_session); 858 + OXR_SESSION_ALLOCATE_AND_INIT(log, sys, OXR_SESSION_GRAPHICS_EXT_VULKAN, *out_session); 853 859 OXR_ALLOCATE_NATIVE_COMPOSITOR(log, xsi, *out_session); 854 860 return oxr_session_populate_vk(log, sys, vulkan, *out_session); 855 861 } ··· 867 873 "xrGetOpenGL[ES]GraphicsRequirementsKHR"); 868 874 } 869 875 870 - OXR_SESSION_ALLOCATE_AND_INIT(log, sys, *out_session); 876 + OXR_SESSION_ALLOCATE_AND_INIT(log, sys, OXR_SESSION_GRAPHICS_EXT_EGL, *out_session); 871 877 OXR_ALLOCATE_NATIVE_COMPOSITOR(log, xsi, *out_session); 872 878 return oxr_session_populate_egl(log, sys, egl, *out_session); 873 879 } ··· 892 898 } 893 899 894 900 895 - OXR_SESSION_ALLOCATE_AND_INIT(log, sys, *out_session); 901 + OXR_SESSION_ALLOCATE_AND_INIT(log, sys, OXR_SESSION_GRAPHICS_EXT_D3D11, *out_session); 896 902 OXR_ALLOCATE_NATIVE_COMPOSITOR(log, xsi, *out_session); 897 903 return oxr_session_populate_d3d11(log, sys, d3d11, *out_session); 898 904 } ··· 917 923 } 918 924 919 925 920 - OXR_SESSION_ALLOCATE_AND_INIT(log, sys, *out_session); 926 + OXR_SESSION_ALLOCATE_AND_INIT(log, sys, OXR_SESSION_GRAPHICS_EXT_D3D12, *out_session); 921 927 OXR_ALLOCATE_NATIVE_COMPOSITOR(log, xsi, *out_session); 922 928 return oxr_session_populate_d3d12(log, sys, d3d12, *out_session); 923 929 } ··· 932 938 933 939 #ifdef OXR_HAVE_MND_headless 934 940 if (sys->inst->extensions.MND_headless) { 935 - OXR_SESSION_ALLOCATE_AND_INIT(log, sys, *out_session); 941 + OXR_SESSION_ALLOCATE_AND_INIT(log, sys, OXR_SESSION_GRAPHICS_EXT_HEADLESS, *out_session); 936 942 (*out_session)->compositor = NULL; 937 943 (*out_session)->create_swapchain = NULL; 938 944 return XR_SUCCESS;