Jump to content

OpenComposite and differents dlls. Why?


Silver_
 Share

Recommended Posts

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by mbucchia
  • Like 1
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 by 5ephir0th

NZXT H9 Flow Black | Intel Core i5 13600KF OCed P5.7 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 | Samsung 970 Evo Plus 2TB NvME | Gigabyte GP-UD1000GM PG5 ATX 3.0 1000W | Asus ROG Shift PG27V | Xiaomi P1 55"

Virpil T-50 CM2 Base + Thrustmaster Warthog Stick | WinWing Orion 2 F16EX Viper Throttle  | 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 | M2000C | Ka-50 BlackShark III | Mi-24P Hind | AH-64D Apache | SuperCarrier

Link to comment
Share on other sites

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.

  • Like 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/

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by mbucchia
  • Thanks 4
Link to comment
Share on other sites

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.

  • Like 1
Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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.

  • Thanks 1
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

  • 1 month later...

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 5800X3D / RTX3080ti / 32GB DDR4 3600 / Reverb G2 / Leap Motion / Kinect Headtracking
TM Warthog Deltasim Hotas / DIY Pendular Rudders / 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.

Link to comment
Share on other sites

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...