Beta Release: GPT (cockpit texture extraction, remote cockpit control, shm mirror)
-
Im just guessing here, but could the performance difference be like the difference between compiled (MFDE) and uncompiled (GPT) programs?
MFDE is an executable, where as GPT is a set of files and JAVA libraries. Or is this rephrasing what you’ve already said?Also, the jury is still out on how much frame rate hit there is for MFDE in master/slave distributed mode. So we don’t know yet if its faster there.
And, I have not tried your suggestion in targeting GPT onto the new BMS shared memory. Have you?
GiGurra,
To make the DisplayLink USB monitors able to work with MFDE, I had to place one or more MFDE objects (speedometer, altimeter, etc) onto a secondary VGA monitor before the MFDE driven USB monitors would update in real time. If I did not put some objects on a secondary VGA monitor, the USB data was displaying the MFD info that was present at the first seconds of going into the 3D world. That is to say they displayed, but never updated. Does that mean something to you? -
Im just guessing here, but could the performance difference be like the difference between compiled (MFDE) and uncompiled (GPT) programs?
MFDE is an executable, where as GPT is a set of files and JAVA libraries. Or is this rephrasing what you’ve already said?Also, the jury is still out on how much frame rate hit there is for MFDE in master/slave distributed mode. So we don’t know yet if its faster there.
And, I have not tried your suggestion in targeting GPT onto the new BMS shared memory. Have you?
GiGurra,
To make the DisplayLink USB monitors able to work with MFDE, I had to place one or more MFDE objects (speedometer, altimeter, etc) onto a secondary VGA monitor before the MFDE driven USB monitors would update in real time. If I did not put some objects on a secondary VGA monitor, the USB data was displaying the MFD info that was present at the first seconds of going into the 3D world. That is to say they displayed, but never updated. Does that mean something to you?Two things here. Nowadays java no longer is just “interpreted code”. Java byte code (essentially what’s inside the JAR files) is compiled down to native executable binary code just like any C/C++ application. It’s just done at a different phase. While with a C++ program this is done when you build your executable, with java this is instead done during execution (usually during the first few seconds). You can look up JIT compilers to get a better view of how it works, but essentially it finds the tough parts of your application and makes them native, plus adds a lot of optimizations (just like your favorite C/c++ compiler would).
The second thing is that GPT DisplaysTransmitter isn’t java at all, it’s written entirely in C++ with full optimizations (Microsofts VC 2010 compiler).
The other parts of GPT are java, but the performance heavy parts (drawing graphics and compressing/decompressing jpegs) are actually done with extremely performance dedicated external C/C++ libraries: Direct3D and TurboJpeg ;).But bottom line:
A competent C++ programmer will probably write applications that are faster than a competent java programmer. Though it isn’t certain. It depends a lot on what compiler you use and which JRE you run. Many of todays JREs will JIT down a lot of java byte code to native code which is actually faster than what older C++ compilers can optimize to for your average applications. Obviously C/C++ will have less memory footprint if that is something you worry about. For me personally it’s either C++ with boost or Java. I find I program a lot faster in java and produce more robust applications, and often also faster performing applications (Probably because I’m not exactly an expert C/C++ coder, though I do work with it professionally in embedded systems among other things). Wow, this turned into a java vs c++ thing ^^. Thing I don’t like about Java? It’s not a truly free language…About Lightning’s stuff not rendering on displaylink stuff? Hmm I honestly don’t know much about this stuff :). Well I assume he uses some gui toolkit/api for windows that hooks into direct3d or directdraw, and that somehow doesn’t work on those usb screens. GPT uses Direct3D (or OpenGL for linux) also for the mfd rendering, yes, but I believe it falls back on software rendering if no such api is available. In GPT’s case the JRE is really what decides.
WARNING: My Main ISP is down atm, no ETA when it is up so I’m on a slow (3/1 mbit) backup connection instead of my usual (1000/1000) so I cannot host the GPT download links atm. As soon as my normal ISP gets back up you can download GPT again, sry :P.
-
Hi GiGurra,
I’m trying to check out your source, but public/public isn’t working.
$ svn co –username public --password public https://www.gigurra.se/svn/GEAR/GPT/
svn: access to ‘https://www.gigurra.se/svn/GEAR/GPT’ forbiddenI want to try and port the display transmitter client to android, I have a couple of cheap and nasty android tablets that could be MFD displays.
-
Hi GiGurra,
I’m trying to check out your source, but public/public isn’t working.
$ svn co –username public --password public https://www.gigurra.se/svn/GEAR/GPT/
svn: access to ‘https://www.gigurra.se/svn/GEAR/GPT’ forbiddenI want to try and port the display transmitter client to android, I have a couple of cheap and nasty android tablets that could be MFD displays.
Hey.
Sorry you’re right Ive messed up the svn login. It’s fixed now!
DisplaysTransmitter is a dll hook for BMS, but you probably mean DisplaysReceiver.
I do not think it will run on android in the current shape, because 1# it’s too heavy in decompressing jpegs, 2# it uses x86 dlls for fast jpeg decompression.If you switch to a pure java based jpeg decompression I saw 2x the CPU load at least, and I simply don’t think the android unit can handle it. But you are free
to try ofc!If you want it to work on android we really need to change it to a real video stream instead at some point :).
-
Thanks, I’m grabbing the code now. Yep I meant the DisplaysReceiver.
I don’t know if I’ll actually produce anything, and I’m not confident that I’ll be able to get my cheap tablets working because they are VERY slow. Maybe by the time I have something to share there will be faster affordable tablets available
-
Hi GiGurra,
I’ve being trying to make MFD Extractor run for 2-3 days. Failed every time. Can’t do…
HELP !!!
Charly_1VFW.
Sistema operativo: Windows 7 Ultimate, 64-bit (Service Pack 1)
Versión DirectX: 11.0
Procesador GPU: GeForce GT 430
Versión del controlador: 267.85
Soporte de DirectX: 11
Núcleos de CUDA: 96
Reloj del núcleo: 700 MHz
Reloj de sombreado: 1400 MHz
Reloj de memoria: 600 MHz (1200 MHz, velocidad de datos)
Interfaz de memoria: 64-bits
Memoria total disponible para gráficos: 2806 MB
Memoria de vídeo dedicada: 1024 MB DDR3
Memoria de vídeo del sistema: 0 MB
Memoria compartida del sistema: 1782 MB
Versión de BIOS del vídeo: 70.08.29.00.01
IRQ: 16
Bus: PCI Express x16 Gen2(sorry is in spanish) jejeje….
-
Hello GiGurra!
Thank you for all of your awesome work with the GPT tools. I am replying because I am having a problem just getting the Display Extractor working. I installed everything on both the server and client computers, I start the DisplayReceiver, see the two white windows, and verify that the application is listening to port 8051 by running netstat from the command line. On the game machine, I changed the IP address in the config file to the IP address the of the slave machine “192.168.1.70”. I run the displaytransmitter.exe which then starts BMS and when I enter a flying session. I do not get any MFD display readings on the slave machine. I checked the status of the process via netstat and I see that the slave machine is still listening and has not established a connection. I already disabled Windows firewall from both computers and since they are running on my local lan, I do not think I need to enable port forwarding on the router that is connected to the lan (I will try enabling it just in case).Is there anything else I can do? I can enable port forwarding for port 8051, but I don’t know what else I can do. Help!
-
Bump. Any help from anybody on this issue would be great! I saw several of you guys were able to get GPT working without a hitch and I want to be one of those guys. Any help would be awesome!
-
On top of the original error with the DisplayTransmitter/DisplayReceiver, when I try to run the ShmTransmitter on the game machine, I get the following error when I run the jar directly: “Could not find main class: falcon.shmdistributor.ShmTransmitter. Program will exit.” When I try to run it from the start.bat file, I get the same message as above along with the following message: “Exception in ‘main’…Unsupported major.minor version 51.0”
-
I did some research and realized that I was running an older version of Java (I was running version 6). I updated both computer from version 6 to version 7 and ensured that the server version of the JVM was being executed. This fixed the problem with the ShmTransmitter. Both the ShmTransmitter/ShmReceiver and KeyTransmitter/KeyReceiver functionality is working. The DisplayTransmitter/DisplayReceiver is still not working; I can see that the port is listening on the slave machine and has not been connected to by the gaming machine. Any help on this would be great.
Thanks!
-
Sry I havent answered in a long time. If you still have problems getting it working, contact me on skype. (PM me for contact details - PMing notifies me on email as well, so I should answer quickly).
I havent played bms in ages so thats why I havent really been around these forums much.
-
Will MFDE use the shared memory on the client PC or does it need to be set up my itself (master/slave)? Also did anyone try the suggested built in SHM exporter or is the displaystransmitter standalone application the only and best way?
As of now I am running BMS Extractor, MFDE and Helios on a second touchscreen monitor and it is all working pretty well. However I want to have my cockpit setup to be able to also run other sims and many will not let you use the mouse (touchscreen) while in the sim or game. Also it would take some of the load off the main PC to allow better performance. I am going to setup a second monitor and do some testing. My BMS is updated to 4 so I am hoping this all still works.
Thanks for your efforts
-
I don’t know what mfde by Lightning or the built in does, but if you mean gpt:
The GPT SHM exporter is ONLY for cockpit gauge data. It won’t transmit mfds for you.
The displaystransmitter will but it does not work through SHM - it works by hooking the direct3d engine of the sim and creating a buffered copy of the mfd textures, downloading these asyncronously (GPU->CPU) over the course of one sim iteration and transmitting as jpeg images (compression is done on a new thread to minimize performance impact to the sim) to the displaysreceiever/display application.I have never tried bms update 4 so I wouldn’t know if it still works.
-
This is frustrating. I have the Java server working on my main PC but I have not gotten the Java server to work on my client PC I am going to test on. Right now I get this (WinXP 32 bit)
java version “1.7.0_09”
Java SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot Client VM (build 23.5-b02, mixed mode, sharing)Anyone know a fix or a download link to get the server version?
-
This is frustrating. I have the Java server working on my main PC but I have not gotten the Java server to work on my client PC I am going to test on. Right now I get this (WinXP 32 bit)
java version “1.7.0_09”
Java SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot Client VM (build 23.5-b02, mixed mode, sharing)Anyone know a fix or a download link to get the server version?
well you don’t HAVE to use the server VM, but it may speed up performance/lower cpu usage.
-
I am unable to start DisplaysTransmitter.exe it just ends itself within the same second. Is this a knwon problem?
my config looks like this
[falconhook_shm]
active = 1
name = “GiGurraTexturesSharedMemoryArea” -
Oh wow, sry I didnt realize this thread was still active.
Please PM me if you still need any help. I don’t play much bms or flight sims at all anymore, but if I can help, I’ll try. Warning though: I’ve forgotten most of how this works :). -
lol the master doesnt know anymore
-
Oh wow, sry I didnt realize this thread was still active.
Please PM me if you still need any help. I don’t play much bms or flight sims at all anymore, but if I can help, I’ll try. Warning though: I’ve forgotten most of how this works :).I solved the problem… I moved the DisplaysTransmitter.exe to the falcon binary folder and everything worked like a charm!
Thanks for this great tool and do not forget everything about it, we might need your knowhow for future bms updates…
-
Just wanted to thank the OP again for his time and effort in making the GPT set available.
I have used it for MFD extraction and display to my LCDs, but Im back to using MFDE for that purpose.
But I am now using the key TX/RX utility.Thanks again.