Commit graph

14079 commits

Author SHA1 Message Date
Bill Currie
fccd06c5bf [vulkan] Add gpu profiling zones
This relies on my fork of tracy: https://github.com/taniwha/tracy
on the wip-c-vulkan branch. Everything is still rather flaky though.

This necessitated the jump to vulkan 1.2 as a requirement.
2023-12-05 22:55:57 +09:00
Bill Currie
57282702ba [vulkan] Move dynamic draw data into device memory
This gets the dynamic data closer to the gpu, so should make a
difference when there's a lot going on. However, for simple tests, it
made no difference.
2023-12-05 19:10:06 +09:00
Bill Currie
d908016606 [sys] Use a jump buffer to exit to main
This allows tracy to clean up properly. However, Sys_Quit will use the
jump buffer (sys_exit_jmpbuf) only if it has been set, so the use of
Sys_setjmp is optional.
2023-12-05 19:02:51 +09:00
Bill Currie
df51e1a18d [vulkan] Report the memory type used for resources
Needed for verifying the desired heap was used.
2023-12-05 16:45:19 +09:00
Bill Currie
63e66e81c5 [vulkan] Increase ring buffer size to 32 packets
I'm still not happy with it being a compile time constant, but this
takes care of the interlock between frames in flight... for now: it's
fragile and really needs the excessive small-packet use in draw and
lighting to be cleaned up.

After discussion with Darian, I've decided to go with one big staging
buffer (with lots of packets) shared between FiF as the large size will,
in the end, be more flexible.
2023-12-05 16:43:05 +09:00
Bill Currie
e65e80f573 [vulkan] Report long packet acquisition times
Here long is considered to be 500μs. This shows the problem mentioned in
test scene, in lighting updates.
2023-12-04 23:41:46 +09:00
Bill Currie
cd53dae82e [nq] Initialize backtrace code with program path
This will give nice debug info for backtraces when used.
2023-12-04 23:35:47 +09:00
Bill Currie
481602e64e [win] Set argv[0] to module name
This gives the usual argv[0] (program path).
2023-12-04 23:34:48 +09:00
Bill Currie
d48f76eb57 [gamecode] Fix a typo in a comment 2023-12-04 23:23:58 +09:00
Bill Currie
e30f2cbacc [util] Add a wrapper for libgcc's backtrace functions
Right now, just backtrace_pcinfo is supported, but it's enough for
testing.
2023-12-04 17:53:12 +09:00
Bill Currie
b001bf20c0 [build] Remove hacker warning
The novelty has rather worn off, I think, and the message has long since
lost its meaning. Sure things still break sometimes, but I've been
trying to keep at least the master branch functional at all times, and
even dev branches.
2023-12-03 17:23:54 +09:00
Bill Currie
1a83fe21c1 [util] Add Sys_setjmp and Sys_longjmp
Host_Error and Host_EndGame use setjmp/longjmp to implement an exception
of sorts, but this messes with tracy's state even with cleanup
attributes. However, it turns out that those cleanup attributes are
exactly how gcc implements C++ destructors, and so the standard Unwind
api (part of libgcc) respects them (so long as -fexceptions is enabled
for C). Thus... replace longjmp with an implementation that uses Unwind
to unwind the stack and call the cleanup functions as needed. This is
actually important for more than just tracy as the cleanup attributed
vars can be thread locks.
2023-12-01 12:13:26 +09:00
Bill Currie
52210b8c55 [util] Add leb123 signed and unsigned message readers
Needed for parsing dwarf eh_frame data, but I'm sure it will come in
handy for other things.
2023-12-01 02:55:08 +09:00
Bill Currie
da9e5d9ff3 [build] Make scoped zones a little easier to use
And report checking for tracy.
2023-11-30 21:08:34 +09:00
Bill Currie
514bb30655 [iqm] Make the null texture static
That was a nasty bit of UB that wasn't discovered until Tracy affected
the stack, I guess (maybe because of the cleanup attribute).
2023-11-28 16:02:38 +09:00
Bill Currie
010c658653 [build] Add support for building with Tracy
Tracy is a frame profiler: https://github.com/wolfpld/tracy

This uses Tracy's C API to instrument the code (already added in several
places). It turns out there is something very weird with the fence
behavior between the staging buffers and render commands as the
inter-frame delay occurs in a very strangle place (in the draw code's
packet acquisition rather than the fence waiter that's there for that
purpose). I suspect some tangled dependencies.
2023-11-28 15:54:55 +09:00
Bill Currie
cba1866360 [menu] Hide the hacky cp command
It's there just to work around automake and libtool requirements for
EXEEXT but allowing qfcc to build menu.dat directly. Maybe someday I'll
come up with a better way.
2023-11-28 14:18:11 +09:00
Bill Currie
9e43675c8f [vulkan] Add length and int color to graph labels
Tracy wants string lengths and uint32_t colors, so set them up
automatically from provided info.
2023-11-28 14:15:43 +09:00
Bill Currie
2a80614273 [build] Fix some build issues caused by using tracy
Mostly just macro conflicts (and a little white space in passing).
Commits for integrating tracy will come later when I've come up with a
wrapper-api that I like (so non-tracy builds are easy even with tracy
available).
2023-11-28 13:54:18 +09:00
Bill Currie
962043ca59 [build] Remove obsolete targets
Gone: svga, fbdev, sdl, wgl and probably a few more. Now it's just x11
and win.
2023-11-27 18:10:23 +09:00
Bill Currie
8e4f0f3837 [win] Implement borderless fullscreen mode
And rip out all the crufty DIB mode junk.
Fixes #60
2023-11-26 14:18:54 +09:00
Bill Currie
4eef0889ee [win] Communicate application focus to the client
This fixes the weird slug when running nq on windows. It turns out it
was the "friendly neighbor" sleep code activating due to bitrot. In
addition, there are cvars for enabling unfocused sleep (defaults off)
and disabling minimized sleep (defaults on).
2023-11-26 13:40:00 +09:00
Bill Currie
9a01e71f67 [win] Silence some debug
Missed that one.
2023-11-26 01:16:16 +09:00
Bill Currie
d2af58bfa2 [win] Implement mouse grabbing
This seems be behave quite nicely (at least for the standard win32
message pump).

Fixes #63
2023-11-25 22:33:57 +09:00
Bill Currie
7024e4efb1 [win] Hide the mouse in a system-friendly way
ShowCursor is system-wide and thus not suitable for general use. It
turns out hiding the cursor in windows is the same as x11: use a null
cursor.
2023-11-25 22:03:27 +09:00
Bill Currie
0774f70ca2 [win] Remove the close window confirmation dialog
It's annoying and unless there's data to save (not at this stage, at
least), rather unnecessary.
2023-11-25 22:01:03 +09:00
Bill Currie
c110119196 [win] Track mouse leaving the window
This fixes the incorrect mouse deltas experienced when looping the mouse
cursor through and around the window.
2023-11-25 21:05:37 +09:00
Bill Currie
30489e1812 [win] Set window style correctly
This fixes the incorrectly sized window (I think).
2023-11-25 21:03:51 +09:00
Bill Currie
ed3afeed39 [win] Convert extended scan codes to QF keys
This takes care of the separate arrow keys not working. Fixes #62.
2023-11-25 18:33:38 +09:00
Bill Currie
9c3f0bc5d4 [build] Fix some release script issues
Set sharepath correctly and the menu is not gzipped any more.
2023-11-25 15:45:25 +09:00
Bill Currie
d49c6b0c27 [win] Improve mouse event handling
A lot is broken, especially direct input, but things are working. Better
yet, it seems the X11 and Windows key bindings are at least mostly
compatible.
2023-11-25 15:45:25 +09:00
Bill Currie
866b13b52c [win] Use Windows char events for keys
Fixes #59
2023-11-25 15:44:55 +09:00
Bill Currie
78113919ea [win] Avoid double destroy of window
I suspect it's from the recent event rework, but DestroyWindow seems to
be getting called twice, despite the null protection. Not good.
2023-11-25 10:57:25 +09:00
Bill Currie
43ce0eb3ec [sys] Correct spelling of signals
Is a signlas a girl with a sign?
2023-11-25 09:51:33 +09:00
Bill Currie
5f45c8a0d2 [win] Handle move and size events
Hook up WM_MOVE and WM_SIZE with QF's internal events.

Fixes #61
2023-11-24 22:59:48 +09:00
Bill Currie
f58a14c2d3 [build] Disable 32-bit win32 in release build script
32-bit Windows isn't relevant enough any more. Anybody that wants 32-bit
windows QuakeForge can go through the pain.
2023-11-24 12:29:39 +09:00
Bill Currie
250cac6079 [vid] Remove direct draw interface
It has been dead for a long time.
2023-11-24 12:28:55 +09:00
Bill Currie
f721021fec [win] Clean up event handling and a pile of dead code
The event handling changes take care of VagueLobster's segfaults on
startup for all renderers (vulkan will still be iffy depending on his
hardware: it dies on my GTX 965 M, probably due to memory and QF's
shadows). One nice side effect is it takes care of the broken CD audio
event handling (does anyone even care, though?).
2023-11-24 12:28:06 +09:00
Bill Currie
0a89c513b4 [win] Do not call IN_ClearStates when creating the window
The window is created before input is initialized. Fixes a segfault on
startup of nq-win.exe.
2023-11-23 21:13:47 +09:00
Bill Currie
f3a428fbdd Fix up windows and the release scripts
I really need more feedback and the best way to get that is to have more
users, and for that, I need packages.
2023-11-23 20:28:19 +09:00
Bill Currie
97a9620cb9 Do the distcheck dance 2023-11-23 17:55:33 +09:00
Bill Currie
c9cfd9e8cf Fix window build for recent config changes
And, more importantly get curl working in the mxe build.
2023-11-23 17:16:53 +09:00
Bill Currie
7a2a61d365 Merge branch 'wip-trails' 2023-11-23 14:00:11 +09:00
Bill Currie
a8ff58baa4 [glsl] Remove a debug print 2023-11-23 13:58:44 +09:00
Bill Currie
43cea64709 [renderer] Get trails looking vaguely acceptable
Still not great, but I like the falloff and the mixing is better. The
path offset seems to be unstable, so that needs work still.
2023-11-23 13:58:44 +09:00
Bill Currie
34daf9032d [renderer] Get trails rendering again
They're not quite working (trail path offset is incorrect) but their
pixels are getting to the screen. Also, lifetimes are off for rocket
trails in that as soon as the entity dies, so does the trail.
2023-11-23 13:58:44 +09:00
Bill Currie
70d07d8026 [quakefs] Document that QFS_LoadFile closes the file
In the end, I decided that the behavior isn't so bad, but it does need to
be documented.

Closes #34
2023-11-19 16:40:24 +09:00
Bill Currie
e8b2822587 [nq] Add more checks for dedicated server in client
When the nq client is run in dedicated server mode, the client state is not
initialized thus none of the client code should be run. This became more
critical with the addition of scenes and an ECS as there are a lot more
pointers involved.

Fixes #46
2023-11-19 15:03:13 +09:00
Bill Currie
49667b439d [build] Batch-report missing packages
Very debian-centric and the reported packages rely on package dependencies,
but it's better than getting part-way through a build only to find
something is missing and having to restart..
2023-11-18 12:16:35 +09:00
Bill Currie
1545480ecb [debian] Clear out a large pile of bitrot
This gets debian packages building again, though it was mainly a test for
some improvements to configure and missing package reporting.
2023-11-18 11:53:23 +09:00