tdrr
Doomer
Posts: 68
|
Post by tdrr on Sept 26, 2023 14:27:04 GMT -5
fixed that too, thank you. yeah, i know that it's a fluidlite problem. still, it should be buildable anyway. ;-) There's one last error, that's also just about the exact same as this one. I made the change myself since if there were more of these I didn't exactly want to keep going back and forth :p I've attached the patch, though it's extremely trivial since all it does is remove the declaration of thread_local in fluid_rvoice_mixer_set_threads, in fluidsynth_lite/src/rvoice/fluid_rvoice_mixer.c, line 1209. 0001-Yet-another-local-shadow-fix.-For-re....patch (980 B) because i don't know when they will break C++ ABI next time. previously, you'd be safe if the major version wasn't changed, but now there is no way to know. and i don't want to rebuild all C++ code on my system just because some morons from GCC dev team decided to break something. i have different GCC versions built, of course, but it is a PITA to test with them all, so i tend to avoid doing that. ah, and the last GCC i have is 12, because i completely stopped caring around that time. Understandable. On a similar note, why haven't you upgraded to Slackware 15? Similar deal of having to set everything up again I'd guess? Slackware 15 was the only version I used directly (not through a derivative distro) and I was very happy about it not being almost a decade out of date :p
|
|
|
Post by ketmar on Sept 26, 2023 15:15:24 GMT -5
There's one last error, that's also just about the exact same as this one. I made the change myself since if there were more of these I didn't exactly want to keep going back and forth :p I've attached the patch, though it's extremely trivial since all it does is remove the declaration of thread_local in fluid_rvoice_mixer_set_threads, in fluidsynth_lite/src/rvoice/fluid_rvoice_mixer.c, line 1209. that's not exactly what the code wants i'm afraid. here, for once, they really meant to have a different local, because this is the counter of old threads, it should not overwite a counter passed by user. so i changed it a litte. yet thanks a lot, commited! Understandable. On a similar note, why haven't you upgraded to Slackware 15? Similar deal of having to set everything up again I'd guess? Slackware 15 was the only version I used directly (not through a derivative distro) and I was very happy about it not being almost a decade out of date :p tbh, i completely stopped upgrading anything several years ago. because… why? my system works perfectly, i have no new hardware which may require upgrading… so i simply see no reason in doing that. besides, nvidia stopped releasing 32-bit drivers, and i'm afraid that old drivers will refuse to work with a new kernel. also, my system is not really Slackware, it is a mishmash, with a lot of things built manually, and many others rebuilt with different configure options. it may be seen as "Slackware derivative" at its current state. ;-) so it's not as simple as upgrade all the packages and call it a day. and i am too lazy. "if it works… DON'T TOUCH IT!" ;-)
|
|
tdrr
Doomer
Posts: 68
|
Post by tdrr on Sept 26, 2023 15:49:02 GMT -5
that's not exactly what the code wants i'm afraid. here, for once, they really meant to have a different local, because this is the counter of old threads, it should not overwite a counter passed by user. so i changed it a litte. yet thanks a lot, commited! Oops! Gotcha. Thank you for the fix, too! tbh, i completely stopped upgrading anything several years ago. because… why? my system works perfectly, i have no new hardware which may require upgrading… so i simply see no reason in doing that. besides, nvidia stopped releasing 32-bit drivers, and i'm afraid that old drivers will refuse to work with a new kernel. Oh yeah, I forgot about that last bit. Makes sense. also, my system is not really Slackware, it is a mishmash, with a lot of things built manually, and many others rebuilt with different configure options. it may be seen as "Slackware derivative" at its current state. ;-) so it's not as simple as upgrade all the packages and call it a day. and i am too lazy. "if it works… DON'T TOUCH IT!" ;-) I see. That reminds me, Zandronum currently sticks to... GCC 4. At least K8V is a little more modern :p I'm not one to compile from source unless it's something I'm contributing to/need to change something in or the software isn't available on the repositories (or it isn't as up to date as I'd need). So while reinstalling or upgrading all the packages is a little annoying at least I don't have to deal with all that much really.
|
|
|
Post by ketmar on Sept 26, 2023 16:02:10 GMT -5
i mostly started to compile things because Slackware never had a huge repository. yes, there was slackbulds.org, but it's mostly the same as simply compile it myself anyway. ;-) i have Lua script that can use slightly massaged "./configure --help" output to build a package, and many custom definitions for that script, so most of the things could be rebuilt… but eh. i'm still manually upgrading some software, tho, like Pale Moon (built from sources, of course, with custom patches ;-). or DOSBox-X. or Fossil.
but most of other software i am using, like email client, messengers, terminal emulator, text editor, etc. are written by me anyway, so those things won't be upgraded. ;-)
|
|
tdrr
Doomer
Posts: 68
|
Post by tdrr on Sept 26, 2023 20:00:15 GMT -5
Ever heard about Salix? It's a Slackware derivative, with MUCH larger repositories. If you were using Slackware 15.0, you could just use Salix 15.0's repos and get a lot more software that way, since it's backwards compatible. Heck, maybe the Salix repos corresponding to your version of Slackware would be a little helpful, though 15.0 is when they really got a lot to offer. Here's a link if you're interested: packages.salixos.org/...probably too late by now anyway :p But it's worth suggesting just in case.
|
|
|
Post by ketmar on Sept 27, 2023 0:45:37 GMT -5
actually, i am somewhere between 14 and 15, because i was regularily updating to Current before i stopped. thank you, i'll take a look! it is always interesting to see something Slackware-based, even if i won't be able to steal anything from there. ;-)
|
|
DoomKrakken
Doomer
Aspiring game designer and programmer looking for work. https://ko-fi.com/DoomKrakken
Posts: 37
|
Post by DoomKrakken on Sept 27, 2023 13:21:25 GMT -5
Right, but what I'm talking about is handling such a system like MODELDEF. I think you may not have understood what I said (or maybe I didn't understand what you said, but let's wait 'n see). we're simply talking about different levels here. ;-) you're mostly talking about definition, and i am talking about implementation. in the implementation, models are completely separate from everything other. nowhere in the engine (except the low-level renderer, of course) nothing knows about model existance at all. basically, the renderer simply "intercepts" sprite drawing calls, and replaces sprites with models. but actor frame is the whole different story. we cannot simply replace sprite frame image at the very last moment, because the engine also uses actor frames to check for various things, including (but not limited to) image translucency, for example. and it does this assuming that frame name always corresponds to the texture, avoid passing the actor pointer around. (at least that is what i remember about the code; the beast is HUGE. ;-) the engine also using frame names to batch actors, so it can use less render calls; there is experimental (not commited) code for dynamic actor texture atlases (which is partially done in BSP traversal), and so on. this will break horribly if i try to replace frame images somewhere along the way. My proposal was to do something similar with sprites themselves. We map graphics to sprites in a similar way. You take a graphic, and any actor that wants to have that graphic show up in place of their own listed sprites will have it mapped to that sprite frame (even down to specifying rotation frames). This way, when a specific actor displays a specific sprite index and frame, it will show up as the assigned "skin". You can use the same sprite index and frame across different actors which have different "skins" associated with them to display different graphics, much like how those tracer actors show up differently despite using the same index name and frame letter. that was exactly what i thought about: in DECORATE, you can set base texture path for each actor, and the engine will read textures from there, not from SPRITES subdir. yes, frame names will stay the same, but frame images will be different. and that is THE problem: we need 1:1 correspondence between frame name and frame image. on startup, for example, the engine scans all available sprite frames to build various tables (rotations, etc.). at this stage, no actors are loaded yet, so the scanner doesn't know about frame overrides. and even if it will know that, rotation info may be wrong due to conflicts (override has more than 8 rotations defined, but base textures defines only 8, for exampe). and rotation table is global for all actors (we need it to be that way). there are other places where the engine doesn't except sprite frame images to suddenly change too. so it's not only about substituring one texture with another on rendering (which works for models). properly implementing such feature will require several major redesigns of various engine parts. that's why this proposal was rejected in GZDoom, for example: they faced the same set of problems. so i have to think hard about new designs for this feature. because i don't want to sacrifice engine performance (and it heavily depends on some immutable info pregenerated on startup), and don't want to turn the code into unmaintainable mess too. Fair enough, thanks for the explanation.
|
|
tdrr
Doomer
Posts: 68
|
Post by tdrr on Oct 8, 2023 22:08:45 GMT -5
Very small question, but something I was curious about. If compiling with SSE instructions is ill-advised when compiling K8Vavoom, why is SSE4 the default? I actually had to set NO_SSE, as the default was "SSE4/Native" and my CPU doesn't support SSE4 instructions. WITH_SSE4=OFF didn't do anything about it, either.
|
|
|
Post by ketmar on Oct 8, 2023 22:28:53 GMT -5
it's a half-finished reworking of default compile options. SSE doesn't really do much (i'm deliberately not using any explicit SIMD code), but it can speedup `memset()` and such a little. and SSE4 as default because it has instructions to work with unaligned data. i just thought that any CPU these days either has SSE4 support, or cannot really run k8v with good performance. looks like i was wrong. ;-)
|
|
tdrr
Doomer
Posts: 68
|
Post by tdrr on Oct 9, 2023 11:59:15 GMT -5
Don't worry about it, my PC is a (lightly upgraded) dinosaur after all :p I can run K8V very nicely but I'm probably not the norm anyway, I know K8V is fairly demanding. I'll probably upgrade to an i7 soon so not gonna have to deal with this for much longer.
By the way, about the file reading patch. I didn't forget about it, but I realized it isn't really worth doing for K8Vavoom. In the sense that it already has VavoomC and all like you said before and that's the best place to do such things. A good few months later but better late than never I guess, lol.
|
|
|
Post by ketmar on Oct 10, 2023 3:37:44 GMT -5
still, turning off SSE4 should work as expected, so this is a bug. thank you for noticing! ;-)
and yeah, VavoomC is The Way. ;-) it doesn't change that much after all. i mean, there is 4+ MB of VavoomC code, so any my Very Bright Idea about language change usually ends in a trash bin. ;-)
|
|
tdrr
Doomer
Posts: 68
|
Post by tdrr on Oct 12, 2023 0:14:35 GMT -5
A couple things. I'm getting random segfaults. What should I do to give you some useful info? I have GDB set up and know how to do some basic things with it. Only thing I did was set NO_SSE to ON, all other compile options are at their defaults. Same with in-game options.
Also, BDW seems to be a tad broken now? At least you don't seem to get the rifle when starting out and I get segfaults even more often with it turned on.
|
|
|
Post by ketmar on Oct 12, 2023 1:52:55 GMT -5
just put gdb "bt" output into spoiler (or, even better, via PM ;-). we'll then see where to go from there.
as for BDW, nope: it works exactly as it does before. at least for me.
tbh, i'm not sure if using FPU works at all, i didn't tested it for a very long time. would you please simply patch a cmake file first to lower SSE requirements to SSE2, for example? don't bother creating a proper patch, just hack it, so we could see if this is FPU code to blame, or something else?
tbh, i'm planning to remove FPU code anyway. it was there because valgrind couldn't cope with some SSE instructions. now it seems to process SSE2 at least, so i didn't used FPU code for years.
|
|
tdrr
Doomer
Posts: 68
|
Post by tdrr on Oct 12, 2023 20:45:32 GMT -5
Sent a PM with the details, hopefully the cause can be found.
|
|
|
Post by ketmar on Oct 13, 2023 1:17:10 GMT -5
thank you! let's hope we'll solve it.
|
|
|
Post by ketmar on Oct 15, 2023 22:49:22 GMT -5
and that bug was a nasty little creep! it was the bug in the compiler, which sit ther for years, and made a lot of code wrong. everything worked so far due to a sheer luck. ;-)
many-many thanks to TDRR for spending hours bisecting and rebuilding the code for me. because the bug was really well hidden, and crashed the engine only on 64-bit systems, lol.
|
|
tdrr
Doomer
Posts: 68
|
Post by tdrr on Oct 15, 2023 22:57:16 GMT -5
Awesome. I'll make sure to test it tomorrow, it's a little late over here.
|
|
tdrr
Doomer
Posts: 68
|
Post by tdrr on Oct 16, 2023 14:32:06 GMT -5
Yep, the fix worked perfectly! I was able to use NO_SSE too, so no issues with that. About that, could something be added to just use SSE2 or use that core2 target? Right now I can't seem to enable it with any settings on Linux, but it seems like the default under Windows, and it'd work for using SSE2 and having amd64 support.
|
|
|
Post by ketmar on Oct 16, 2023 21:31:14 GMT -5
great, thank you!
yeah, i should revisit the flags, they're a mess. i added windows core2 support for one tester, and never finished the rest (actually, i prolly broke the rest). ;-) i'll rework that, and try to create some sane (and workin!) option set instead.
|
|
|
Post by gunrock5k on Nov 3, 2023 7:33:48 GMT -5
Hey!! I been gone a long time. Real life stuff has slowed down mapping tremendously. How has K8vavoom's development going? Any latest releases? One last question....what are the chances of PBR, specular material support? Thanks Ketmar for all your hard work.
|
|
|
Post by ketmar on Nov 3, 2023 12:04:24 GMT -5
yay! hello, great to see you here! for now, the most interesting news is the bug tdrr helped to fix. ;-) real life too, the work is slowed down. i'm experimenting with various JIT approaches, though. i also greatly improved voxel model support, and now playing with Cheello voxel pack. ;-)
i think i should release a new build soon. but i didn't even had time to play last weeks… ;-)
as for PRB and materials… nope. it requires complete rewrite of texture manager, and significant renderer changes. and i am still believe that it's not something Doom needs. ;-) this, and hires textures. (oh, i'm dreaming of nuking hires texture support…)
of course, i understand why map creators may want materials. but no. sorry. ;-)
tl;dr: nope, material support won't happen any time soon. sorry.
|
|
|
Post by gunrock5k on Nov 3, 2023 12:22:31 GMT -5
Ok....no worries!!
|
|
|
Post by ketmar on Nov 3, 2023 12:51:26 GMT -5
sooner or later (later! ;-) i will have to rewrite texture manager. it is a huge PITA now. it was good for old Vavoom codebase, without shaders and such, but now it needs to be redesigned. that's where i might add material support (because it wouldn't cost much then). but this rewrite is a huge task, and it's not fun at all. ;-)
it will prolly be done when i finally decide to clean up rendering code, remove support for older systems, and such. current renderer is one of the bottlenecks. i'm not planning to remove lightmap support, of course, but rewriting the whole thing to take advantage of GPUs with at least OpenGL 3.3 support will make things faster and better.
|
|
|
Post by ketmar on Nov 3, 2023 12:56:32 GMT -5
ah, the other interesting new feature you'll see in the next build is "advanced body sliding". the engine will try to slide corpses off the ledges, if the corpse looks like it should fall. no more caco hanging in the air, because it touched the upper sector by one collision box pixel! ;-)
it's not physically correct, but hey, Doom itself is not physically correct! yet i believe that the game looks better this way.
|
|
|
Post by camper on Nov 4, 2023 6:20:05 GMT -5
Hey!! I been gone a long time. Real life stuff has slowed down mapping tremendously. How has K8vavoom's development going? Any latest releases? One last question....what are the chances of PBR, specular material support? Thanks Ketmar for all your hard work. I wanted to ask you, is it possible to support the autonomous launch of q2doom and silentsteel in k8vavoom without using an external iwad? After all, the engine allows this, and different packs of monsters and weapons can be downloaded separately.
|
|