Silver_ Posted December 4, 2022 Posted December 4, 2022 I have observed that there are different dlls with the same name and I don't know which one will be more efficient for DCS and VR with OpenXr. If the latest openbeta 2.8 installed by default, I have observed that openvr_api.dll only weighs 585 Kbytes and the one I download from the official github website for openComposite weighs 1815 Kbytes (64-bit version). Of course, the latter is supposed to be installed in a configuration per game, according to the OpenComposite website explanations and not for a general configuration with OpenComposite Launcher, as I have it. My question is: why, being the same, do it´s differently? Thanks greetings.
mbucchia Posted December 5, 2022 Posted December 5, 2022 The "default" openvr_api.dll isn't OpenComposite, it is the OpenVR implementation to work with SteamVR. OpenComposite provide its own openvr_api.dll to bypass SteamVR and use OpenXR instead. This is the way OpenComposite "hacks" its way up into your game. So for short "openvr_api.dll" and "OpenComposite" = not the same thing. I wasn't banned, but this account is mostly inactive and not monitored.
Silver_ Posted December 9, 2022 Author Posted December 9, 2022 Sorry friend, but I don't know if I explained myself well, I mean that there are two exactly the same dlls but of different sizes: 1) openvr_api.dll= "Comes with openbeta 2.8 patch" and the other 2) openvr_api.dll="It is downloaded from the OpenComposite´s website" https://gitlab.com/znixian/OpenOVR What I wanted to say, I'm sorry I didn't explain myself well, is that the first one occupies a few bytes (585 Kbytes) and the second one occupies a little more (1815 Kbytes) I know exactly what Opencomposite and opervr_api.dll are. The only thing I want to know is why, being the same library, they occupy different Kbytes. (Is it more complete than the one that DCS brings? More up-to-date perhaps?). That´s my question.
mbucchia Posted December 9, 2022 Posted December 9, 2022 (edited) 18 hours ago, Silver_ said: Sorry friend, but I don't know if I explained myself well, I mean that there are two exactly the same dlls but of different sizes: 1) openvr_api.dll= "Comes with openbeta 2.8 patch" and the other 2) openvr_api.dll="It is downloaded from the OpenComposite´s website" https://gitlab.com/znixian/OpenOVR What I wanted to say, I'm sorry I didn't explain myself well, is that the first one occupies a few bytes (585 Kbytes) and the second one occupies a little more (1815 Kbytes) I know exactly what Opencomposite and opervr_api.dll are. The only thing I want to know is why, being the same library, they occupy different Kbytes. (Is it more complete than the one that DCS brings? More up-to-date perhaps?). That´s my question. The openvr_api DLL that comes with the game is the standard OpenVR loader to use the SteamVR runtime. It makes your game work with SteamVR. It doesn't contain a lot of logic, it just does communication with SteamVR, it's pretty small. That DLL has absolutely nothing to do with OpenComposite. It is written and distributed by Valve. The openvr_api DLL you get from the OpenComposite website is the OpenVR-to-OpenXR interoperability layer that contains all kinds of logic to make your game use OpenXR instead of SteamVR. There is a lot of complex logic involved in doing that, hence a bigger file. That DLL is OpenComposite. They have the same filename but they do 2 very very different things. EDITED: Rephrased "is the standard OpenVR IPC client to use SteamVR" to "is the standard OpenVR loader to use SteamVR" for clarity. Edited December 9, 2022 by mbucchia 1 I wasn't banned, but this account is mostly inactive and not monitored.
Silver_ Posted December 9, 2022 Author Posted December 9, 2022 5 hours ago, mbucchia said: The openvr_api DLL that comes with the game is the standard OpenVR IPC client to the SteamVR compositor and service. It makes your game work with SteamVR. It doesn't contain a lot of logic, it just does communication with SteamVR, it's pretty small. That DLL has absolutely nothing to do with OpenComposite. It is written and distributed by Valve. This is not entirely true, not only does it work with SteamVR but it also does great with OPenXR and can be used perfectly with OpenXR and OpenComposite. From here I urge you to try it if you haven't already. Therefore your answer, excuse me for telling you, but it is not entirely correct.
Slammin Posted December 9, 2022 Posted December 9, 2022 LOL!! Abit IN9 32x MAX- Kentsfield QX6700 @3520 1.5 vcore watercooled D-Tek Fuzion/PA-160/MCR120/2x MCP655 2x2GB G-Skill 1066 5-5-5-15 2T@1.9vdimm 2x EVGA 580GTX 1.5GB SLI 2x 74GB Sata Raptor Raid0 2x 320GB Hitachi Sata II X-FI Elite Pro Dell U3011 Lian Li V2100B Corsair HX1000
5ephir0th Posted December 9, 2022 Posted December 9, 2022 (edited) 6 hours ago, Silver_ said: This is not entirely true, not only does it work with SteamVR but it also does great with OPenXR and can be used perfectly with OpenXR and OpenComposite. From here I urge you to try it if you haven't already. Therefore your answer, excuse me for telling you, but it is not entirely correct. Yep, im pretty sure that @mbucchia havent tried what you are asking for and have no idea of what he is talking about... Edited December 9, 2022 by 5ephir0th NZXT H9 Flow Black | Intel Core i5 13600KF OCed P5.6 E4.4 | Gigabyte Z790 Aorus Elite AX | G.Skill Trident Z5 Neo DDR5-6000 32GB C30 OCed 6600 C32 | nVidia GeForce RTX 4090 Founders Edition | Western Digital SN770 2TB | Gigabyte GP-UD1000GM PG5 ATX 3.0 1000W | SteelSeries Apex 7 | Razer Viper Mini | SteelSeries Artics Nova 7 | LG OLED42C2 | Xiaomi P1 55" Virpil T-50 CM2 Base + Thrustmaster Warthog Stick | WinWing Orion 2 F16EX Viper Throttle | WinWing ICP | 3 x Thrustmaster MFD | Saitek Combat Rudder Pedals | Oculus Quest 2 DCS World | Persian Gulf | Syria | Flaming Cliff 3 | P-51D Mustang | Spitfire LF Mk. IX | Fw-109 A-8 | A-10C II Tank Killer | F/A-18C Hornet | F-14B Tomcat | F-16C Viper | F-15E Strike Eagle | M2000C | Ka-50 BlackShark III | Mi-24P Hind | AH-64D Apache | SuperCarrier
Supmua Posted December 9, 2022 Posted December 9, 2022 8 hours ago, Silver_ said: This is not entirely true, not only does it work with SteamVR but it also does great with OPenXR and can be used perfectly with OpenXR and OpenComposite. From here I urge you to try it if you haven't already. Therefore your answer, excuse me for telling you, but it is not entirely correct. I hope you do realize that he is the author of the popular OpenXR toolkit utility. So I would go with what he said. 1 PC: 5800X3D/4090, 11700K/3090, 9900K/2080Ti. Joystick bases: TMW, VPC WarBRD, MT50CM2, VKB GFII, FSSB R3L Joystick grips: TM (Warthog, F/A-18C), Realsimulator (F-16SGRH, F-18CGRH), VKB (Kosmosima LH, MCG, MCG Pro), VPC MongoosT50-CM2 Throttles: TMW, Winwing Super Taurus, Logitech Throttle Quadrant, Realsimulator Throttle (soon) VR: HTC Vive/Pro, Oculus Rift/Quest 2, Valve Index, Varjo Aero, https://forum.dcs.world/topic/300065-varjo-aero-general-guide-for-new-owners/
mbucchia Posted December 9, 2022 Posted December 9, 2022 10 hours ago, Silver_ said: This is not entirely true, not only does it work with SteamVR but it also does great with OPenXR and can be used perfectly with OpenXR and OpenComposite. From here I urge you to try it if you haven't already. Therefore your answer, excuse me for telling you, but it is not entirely correct. This DLL can be used in conjunction with the OpenComposite "switcher app" to go and "redirect" to the OpenComposite DLL, in its "vrclient.dll" form, as downloaded in the OpenComposite launcher folder. But in that case, the openvr_api DLL that comes with the game does not participate in any logic, it just acts as a trampoline (this is the actual technical term) to the "other" openvr_api DLL that is shipped by OpenComposite. So it doesn't "do great with OpenXR", it actually does nothing in that scenario but forward calls to that other openvr_api DLL that you are asking about. I wasn't banned, but this account is mostly inactive and not monitored.
mbucchia Posted December 9, 2022 Posted December 9, 2022 (edited) Here if you want the full explanation to clarify. I think we are both sort of on the same page, just mixing up different scenarios and terminology: - Standard openvr_api.dll is a simple loader to open the %LocalAppData%\openvr\openvrpaths.vrpath file to locate which underlying OpenVR runtime to use. As mentioned earlier, there is no complex logic to do so, it just exposes the generic OpenVR functions for the application to use, and then it forwards the calls to the selected OpenVR runtime. - By default, when you are not using OpenComposite at all, this will be the SteamVR runtime that is referenced in openvrpaths.vrpath, which actually lives in ...\Steam\steamapps\common\SteamVR\bin\vrclient_x64.dll. That is the IPC library that talks to SteamVR services. You can go look at this file, it is much bigger, about 4.5MB for me. It actually contains the logic to talk to SteamVR. - Note that each game could include this vrclient_x64.dll file instead of shipping the openvr_api.dll loader, however this would mean that every time SteamVR updates to fix a bug, every game would need to ship a patch to provide the new vrclient_x64.dll. So the loader here serves the purpose of decoupling the game from your version of SteamVR. When using OpenComposite, you have 2 options: 1) System-wide install, where you use the OpenComposite switcher app to replace the content of %LocalAppData%\openvr\openvrpaths.vrpath to use OpenComposite's own vrclient_x64.dll, as it is downloaded under your OpenComposite folder (under folder Runtime). This is the "about 1.2 MB" file you are talking about. In this scenario, there is no "replacing the openvr_api.dll with the one from OpenComposite". 2) Per-game install, where you download OpenComposite's vrclient_x64.dll mentioned in 1) except it is being renamed to openvr_api.dll, and when you replace the game's own openvr_api.dll (the trampoline DLL) and completely bypass the trampoline code (remove one level of indirection for the game to know which runtime to use). So in summary: - The openvr_api.dll that ships with the game is Valve's and it has nothing to do with OpenComposite. - When using OpenComposite per-game install, you replace Valve's openvr_api.dll trampoline DLL (something that does very little, hence the small size) with the OpenComposite OpenXR bridge implementation (something that does a lot, hence the bigger size). - Those 2 DLLs are definitely, 100% not the same thing. One is a thin loader, the other one is an OpenXR bridge, hence the difference in size. I hope this clarifies exactly how the process works, and why you should not be concerned by the size of these files being so different. Edited December 9, 2022 by mbucchia 4 I wasn't banned, but this account is mostly inactive and not monitored.
Silver_ Posted December 10, 2022 Author Posted December 10, 2022 Thank you very much friend, for my part it is clear. If you are the author of the OpenXR toolkit, I congratulate you for your marvelous application, I was a programmer of video games in machine language(assambler) for 8 bits (z80 Zilog) and I'm already a little rusty but I know how to appreciate the work that there is behind all this. My doubt mainly came from the issue that using one dll instead of another did not affect the operation of openXR in DCS, personally I have the general version installed with OpenComposite and I have not needed to replace this library that is delivered with the DCS patch. Thanks for all. 1
Rangoon Posted December 14, 2022 Posted December 14, 2022 So if I use the system-wide installer, I never need to manually download and manually replace the openvr_api.dll files? That is all handled automatically via the switcher application? And that works in both directions and for all games? Are there specific dll's for each game? Or is there a generic SteamVR openxr dll that is used by all games?
mbucchia Posted December 14, 2022 Posted December 14, 2022 3 hours ago, Rangoon said: So if I use the system-wide installer, I never need to manually download and manually replace the openvr_api.dll files? That is all handled automatically via the switcher application? And that works in both directions and for all games? Correct. 1 I wasn't banned, but this account is mostly inactive and not monitored.
Silver_ Posted December 15, 2022 Author Posted December 15, 2022 On 12/14/2022 at 4:14 AM, Rangoon said: So if I use the system-wide installer, I never need to manually download and manually replace the openvr_api.dll files? That is all handled automatically via the switcher application? And that works in both directions and for all games? Are there specific dll's for each game? Or is there a generic SteamVR openxr dll that is used by all games? As you say and also you can update your dll every time you start opencomposite launcher.
Scranny Posted January 16, 2023 Posted January 16, 2023 Does opencomposite have to be on the same drive/hdd/ssd as DCS to work
edmuss Posted January 16, 2023 Posted January 16, 2023 No, I have it on my spindle storage drive whilst DCS is on the nvme, works perfectly. DCS shouldn't be installed in the program files directory though. Ryzen7 7800X3D / RTX3080ti / 64GB DDR5 4800 / Varjo Aero / Leap Motion / Kinect Headtracking TM 28" Warthog Deltasim Hotas / DIY Pendular Rudders / DIY Cyclic Maglock Trimmer / DIY Abris / TM TX 599 evo wheel / TM T3PA pro / DIY 7+1+Sequential Shifter / DIY Handbrake / Cobra Clubman Seat Shoehorned into a 43" x 43" cupboard.
Scranny Posted January 16, 2023 Posted January 16, 2023 I have opencomposite on my c drive and DCS is on my d drive/ssd
Recommended Posts