Commit graph

1069 commits

Author SHA1 Message Date
Bill Currie
e4ee5c70e0 [vulkan] Rework vkgen alias handling
This is much cleaner and now that all the types are there properly,
doing a parser generator should be easier.
2020-07-05 16:53:35 +09:00
Bill Currie
2ca9f80d56 [vulkan] Split up vkgen
It worked as a proof of concept, but as the code itself needs to be a
bit smarter, it would be a lot smarter to break up that code to make it
easier to work on the individual parts.
2020-07-05 16:53:35 +09:00
Bill Currie
cf3262991d [vulkan] Add a tool for making vulkan enum tables
The tables are generated from the enums pulled out of the vulkan headers
using a ruamoko program (thanks to its reflection capabilities). They
will be used for parsing property lists used to create render passes and
pipelines.
2020-06-28 19:08:18 +09:00
Bill Currie
19c75f5e49 [vulkan] Clean up QFV_CreateFramebuffer's prototype
It now takes qfv_imageviewset_t instead of separate count and
VkImageView array.
2020-06-28 13:53:11 +09:00
Bill Currie
c1ffb05b87 Remove dead Makefile.am
Forgot this in the merge.
2020-06-25 16:14:39 +09:00
Bill Currie
86b5b30b45 Merge branch 'master' into vulkan 2020-06-25 14:03:52 +09:00
Bill Currie
6d5ffa9f8e [build] Move to non-recursive make
There's still some cleanup to do, but everything seems to be working
nicely: `make -j` works, `make distcheck` passes. There is probably
plenty of bitrot in the package directories (RPM, debian), though.

The vc project files have been removed since those versions are way out
of date and quakeforge is pretty much dependent on gcc now anyway.

Most of the old Makefile.am files  are now Makemodule.am.  This should
allow for new Makefile.am files that allow local building (to be added
on an as-needed bases).  The current remaining Makefile.am files are for
standalone sub-projects.a

The installable bins are currently built in the top-level build
directory. This may change if the clutter gets to be too much.

While this does make a noticeable difference in build times, the main
reason for the switch was to take care of the growing dependency issues:
now it's possible to build tools for code generation (eg, using qfcc and
ruamoko programs for code-gen).
2020-06-25 11:35:37 +09:00
Bill Currie
4cef9792f4 [util] Make hash-tables semi-thread-safe
They take a pointer to a free-list used for hashlinks so the hashlink
pools can be per-thread. However, hash tables that are not updated are
always thread-safe, so this affects only updates. progs_t has been set
up such that it is easy for multiple progs within one thread can share
hashlinks.
2020-03-25 15:43:16 +09:00
Bill Currie
ad175d054b Sanitize pipelines
wow, talk about doing things the wrong way. I guess that's the problem
with following a book targeted for C++: you get all that safety-goat
nonsense.
2020-02-18 22:38:01 +09:00
Bill Currie
264c4ccdac Sanitize descriptors
I'm sure it will end soon, I think pipelines is the end of it.
2020-02-18 21:18:03 +09:00
Bill Currie
c740dea212 Use the correct constant for "infinity" 2020-02-18 19:44:40 +09:00
Bill Currie
0a0035e5e5 Use the render pass to clear the window
Very satisfying to get to this point.
2020-02-18 17:48:22 +09:00
Bill Currie
ba654b09f7 Create and destroy render pass and frame buffers 2020-02-18 17:18:37 +09:00
Bill Currie
1f4c019abc Create and destroy color/depth resources 2020-02-18 14:28:28 +09:00
Bill Currie
89d48b5650 Output first pixels
Just clearing the screen to 0xbada55, but the validation layer is quiet.
2020-02-18 01:03:36 +09:00
Bill Currie
73fde40cad Sanitize some more structs 2020-02-17 23:30:25 +09:00
Bill Currie
94565c2382 Rework much of the Vulkan array handling
So much for all those little wrappers hiding the device. Some survived,
but mostly just the bigger things like device, swapchain, etc.
2020-02-17 20:29:35 +09:00
Bill Currie
916e57de37 Get the swapchain image switching sort of working
The render pass isn't set up yet, so the validation layer is having a
fit, but cycling through the swapchain images does seem to be working.
2020-02-17 00:50:39 +09:00
Bill Currie
ce72135e70 Fix incorrect init of command buffer set 2020-02-17 00:10:59 +09:00
Bill Currie
4b152a4492 Rework semaphore sets 2020-02-17 00:10:32 +09:00
Bill Currie
559bd2e636 Create command pool and frame timing fences
Nothing is actually done yet, so the reported fps is around 172k (yes,
k), but startup and shutdown seems to be clean (yay validation layers).
2020-02-16 22:45:27 +09:00
Bill Currie
b947cc1791 Rework command buffer and fence-set management
I found command buffer handling to be totally redundant and fence-set
management to be a bit awkward.
2020-02-16 22:43:57 +09:00
Bill Currie
d56f88f779 Implement swapchain image acquisition 2020-02-15 17:56:02 +09:00
Bill Currie
53b46f0541 Implement pipeline stuff 2020-02-13 04:21:35 +09:00
Bill Currie
69c110193a Fix a thinko
Wrong var for computing number of slots used.
2020-02-13 04:20:54 +09:00
Bill Currie
61036378e2 Implement render pass stuff 2020-02-12 18:55:51 +09:00
Bill Currie
44f5b134e6 Free custom descriptor structs
Forgot this earlier
2020-02-12 18:55:22 +09:00
Bill Currie
85a2f9f621 Implement descriptor stuff 2020-02-12 16:36:01 +09:00
Bill Currie
6e96b91aa1 Fix a couple more optimization warnings 2020-02-11 15:59:12 +09:00
Bill Currie
3144443a82 Allow vulkan_draw to compile when optimizing
Even though it's nowhere near done
2020-02-11 12:19:16 +09:00
Bill Currie
29b1d6baf8 Finish up memory stuff
For now, of course.
2020-02-11 09:37:04 +09:00
Bill Currie
1baee0cbba Implement mem mapping and buffer/image copying 2020-02-10 20:42:19 +09:00
Bill Currie
43e37aa31e Separate out the generic memory stuff 2020-02-10 18:33:29 +09:00
Bill Currie
9fdc15c439 Implement image stuff up to view creation 2020-02-10 18:18:37 +09:00
Bill Currie
f4c0d0ebcf Implement buffer view creation
And rename memory allocation as it's buffer-specific.
2020-02-10 18:17:58 +09:00
Bill Currie
2f9ad73f78 Implement buffer memory up to barriers
Still lots to go (views, destruction, transfer...) and I'm uncertain
about the location of the pipeline barrier function.
2020-02-10 15:07:35 +09:00
Bill Currie
8148f256f5 Rework object device caching
It turned out I needed access to the physical device from a buffer
object, so rather than storing the vulkan logical device directly in
buffer (and other) objects, store the qfv logical device.
2020-02-07 11:45:05 +09:00
Bill Currie
d3b4e4653e Cache physical devices in the instance 2020-02-06 19:04:28 +09:00
Bill Currie
8819d26c95 Fix a compile error
not sure how that one got through
2019-10-16 20:57:39 +09:00
Bill Currie
4957c4f31a Implement the rest of the command stuff 2019-07-23 13:05:32 +09:00
Bill Currie
a165d67dfa Add a queue type 2019-07-23 12:37:47 +09:00
Bill Currie
411b897f09 Implement most of the stuff for command submission 2019-07-23 12:28:57 +09:00
Bill Currie
1f24a1408a Destroy the surface 2019-07-13 01:20:02 +09:00
Bill Currie
dd1c2db249 Clean up the swapchain
And be a little safer about it
2019-07-13 01:14:21 +09:00
Bill Currie
b4dc746a66 Clean up the debug callback 2019-07-13 01:11:34 +09:00
Bill Currie
1eafc33052 Ensure vulkan gets shut down 2019-07-13 00:36:21 +09:00
Bill Currie
b2e12d701b Fix up swapchain creation
Things are working again.
2019-07-12 14:09:42 +09:00
Bill Currie
66e7336b62 Initialize device extension checks early
They need to be initialized before attempting to load the function
pointers.
2019-07-12 13:37:30 +09:00
Bill Currie
75f19f7243 Completely rework the vulkan related api
Things don't work yet, but this feels much cleaner.
2019-07-12 13:34:31 +09:00
Bill Currie
b5828bc2ce Output validation message severity
It's nice knowing if something is an error or otherwise.
2019-07-11 00:58:37 +09:00