-
-
Notifications
You must be signed in to change notification settings - Fork 538
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
vm_armv7l.c is not used by default #291
Comments
I attempted a fix for this here: jjbarr@da6c323 However, I'm not willing to submit a PR until someone's looked it over: I don't have an ARM toolchain available at present, so I can't actually test it. Noted issues: At present, I am not sure if My apologies if I've violated style or something, this is my first attempt at contributing. |
I think it would simpler to change COMPILE_ARCH to not change armv7l to arm. Then it will automatically enable armv7l VM JIT if supported for current system and cross-compiling can use It seems like ideally the armv7l VM JIT would always be compiled and check if CPU supports armv7l instructions at run-time. So there is only a single executable to distribute and |
That would cause problems with distributing ui/qagame/cgame SOs across ARM systems: armv7 would look for uiarmv7l.so, for example, while armv6 would look for uiarm.so. Furthermore, by my understanding, TL;DR, given the binding of ARCH_STRING in q_platform is, at least on linux, presently tied to ARCH in our makefile, and ARCH also controls the names of the SOs of game code that we build, I consider having an arch other than bare But that's all just my opinion.
By the looks if it, it's certainly possible. The only problem is portability. Oh, and adding a big fat #ifdef arm (or your regional equivalent: probably actually setting arm bits in q_platform and checking those) right in the middle of VM_Create, which may offend taste, because... well, that's pretty gross, innit. I guess technically you don't have to, but then we'd be running arm code on every system, which is dumb. If you've got a cleaner place to put the code, I'd love to hear it, because if I was actually confident it wouldn't offend the senses I wouldn't be above implementing this thing. As for portability... every unix has a totally different way of actually getting |
Most don't distribute mods in bin form, because they aren't pure capable in q3. Only a few do (for sever?) But client and ui are usually qvm which only needs interpreter. |
This is true! However, there is an exception: us. We ship our gamecode as native code. Beyond that, even if most people don't ship native code, it's still a feature we advertise, and a feature we provide on every platform. Breaking native code modules (or more accurately, making them needlessly difficult to load) on one platform is at best a Bad Idea and at worst kind of insane. |
I'm not familiar with what mod you are part of. |
Sorry. By "we" I meant ioquake3. Our nightlies and general builds contain native gamecode. |
They do, but they cannot be used on servers. |
I still don't consider breaking nativecode loading (or at the very least, making the interface to absurdly obtuse) to be acceptable. |
Native code support is for development only, especially for the nonstandard formats. the original game didn't support arm, so unless there are now actual mods being used with the old style filename, it's not really an issue. You could support both if need be. |
I meant compiling vm_armv7l.c on all Lines 654 to 672 in e5da13f
|
D'oh. I don't know how I missed that. Sorry. I'd be willing to try my hand at implementing this, although I confess to being new to the codebase, so... yeah. I'll try not to mess things up.
The issue is that with the proposed change, there wouldn't be a new style: the filename required would actually change based on compilation conditions. |
Alright, here's my attempt at adding a runtime check and doing the fix that way: jjbarr@501c9f6 I'm not sure if the code is up to standards, and I'd be happy to fix it if it isn't. The bigger problem, however, is that I don't have an arm development environment at present. So I can't test this. |
just use q3lite |
I understand it might be frustrating but please understand it isn't useful feedback for this project. |
maybe you should integrate q3lite renderer and vm into mainline. |
q3lite relicensed as GPLv3 with additional terms from Zenimax. As is, it cannot be merged into ioquake3, A polished OpenGL ES 1 renderer is sitting in #375 though. |
vm_armv7l.c should be used by default on armv7l but it is not. It's possible to force using it by running
make ARCH=armv7l
though.The Makefile was changed to generalize armv6l, armv7l etc architectures as "arm".[1] Using vm_armv7l.c requires ARCH Makefile variable to be armv7l.[2]
The text was updated successfully, but these errors were encountered: