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
Bill Currie
c0bc5cfad6
Implement swapchain creation
2019-07-11 00:58:14 +09:00
Bill Currie
2771e9c573
Correct extension handling
...
I had missed a critical bit from the cookbook.
2019-07-10 13:16:46 +09:00
Bill Currie
ed3c5cb9ec
Add a strset "class"
...
It's just a wrapper around hashtab, but it makes checking if a string is
in a set easy. Way overkill when only a few extensions are enabled, but
more might come later.
2019-07-10 13:09:16 +09:00
Bill Currie
3191604641
Uncomment already implemented functions
2019-07-09 21:07:59 +09:00
Bill Currie
8a3cd224a3
Add vulkan developer flag
2019-07-09 20:14:30 +09:00
Bill Currie
68449d0f6f
Create a window and a surface for vulkan
...
Yay, segfaults in R_Init :)
2019-07-09 16:33:44 +09:00
Bill Currie
0f511e8342
Move the string list funcs to their own file
...
They're not (at this stage, at least) worthy of being promoted out to
the utils lib.
2019-07-09 14:24:55 +09:00
Bill Currie
b3d982bfc3
Remove global vulkan_ctx
...
While I can't say that I'm happy with the details of vulkan_ctx_t, I am
pretty sure I don't want to be limited to having only one.
2019-07-09 11:54:23 +09:00
Bill Currie
707bdfc5f2
Get vulkan back to where it was
2019-07-09 09:06:35 +09:00
Bill Currie
8ee06d75a9
Separate render and presentation initialization
...
This paves the way for clean initialization of the Vulkan renderer, and
very much cleans up the older renderer initialization code as gl and sw
are no longer intertwined.
2019-07-09 01:00:47 +09:00
Bill Currie
cb10175824
Pass vid_internal to R_LoadModule
...
This fixes the segfault and pushes things very much in the desired
direction of proper system independence for rendering and presentation
separation (though things were headed in the right direction before).
2019-07-08 14:04:03 +09:00
Bill Currie
6ee2df8445
Move vid callbacks into vid_internal
...
Currently segfaults because viddef is an alias for *r_data->vid, which
has not yet been initialized (chicken and egg).
2019-07-08 13:40:29 +09:00
Bill Currie
6137795682
Use deep binding for the vulkan loader
...
This fixes the problem with using vkGetInstanceProcAddr to find global
vulkan functions.
2019-07-07 16:48:53 +09:00
Bill Currie
7137d61c36
Add some extensions needed for presentation
2019-07-07 16:27:55 +09:00
Bill Currie
a755e50c84
Clean up vid access a little
...
Things are still a mess, but a proper cleanup will be a lot of work and
will, really, involve properly splitting quake-specific code* out from
the rest of the renderer.
* data loading and format specific stuff
2019-07-07 15:38:29 +09:00
Bill Currie
d95e9f9af3
Correct vulkan plugin strings
2019-07-07 14:59:20 +09:00
Bill Currie
77afc30486
Fix vid renderer plugin types
...
I guess that plugin type is currently not checked, otherwise I doubt the
mistake would have gone unnoticed.
2019-07-07 14:57:56 +09:00
Bill Currie
940ef833ae
Shutdown Vulkan properly
...
Well, as properly as can be considering how little is started up :P
2019-07-07 14:34:02 +09:00
Bill Currie
ab08e4f207
Create a logical device with a single queue
...
A single graphics-capable queue should be enough for now. However, I'm
not sure I'm happy with a lot of the code: it's a bit difficult to write
flexibly configured code for Vulkan (or seems to be at this stage),
especially in C.
2019-07-07 01:28:05 +09:00
Bill Currie
2bc78e7f0a
Start work on a Vulkan-based renderer
...
Doesn't do much other than create an instance and enumerate some stuff,
but the build system is working.
2019-07-06 14:56:15 +09:00
Bill Currie
f58c2fef5a
Switch QF's quaterions from wxyz to xyzw.
...
After messing with SIMD stuff for a little, I think I now understand why
the industry went with xyzw instead of the mathematical wxyz. Anyway, this
will make for less pain in the future (assuming I got everything).
2018-10-12 14:33:55 +09:00
Bill Currie
34bcf7faab
Do a pure/const/noreturn/format attribute pass.
...
I always wanted these, but as gcc now provides warnings for functions that
could do with such attributes, finding all the functions is much easier.
2018-10-09 12:42:21 +09:00
Bill Currie
db3df6f8a7
Fix a bunch of dead increments.
2018-09-09 11:12:04 +09:00
Bill Currie
3f638d95ba
Remove a possibly spurious break.
...
I'm not certain despair actually meant for the break to be there. It
certainly would have sped up the game a bit but at the expense of proper
blood trails in the software renderers.
2018-09-09 10:54:38 +09:00
Bill Currie
62793b2dc2
Fix some potentially garbage assignments.
...
These are the ones where I could easily make scan-build happy. They do seem
to be potential holes where invalid data in one place could result in use
of uninitialized values.
2018-09-09 09:54:16 +09:00
Bill Currie
59e85b7d5e
Fix a pile of dead assignments.
...
Some were actual bugs!
2018-09-08 22:23:57 +09:00
Bill Currie
8fd5be0ee0
Fix a pile of sizeof goofs.
...
While scan-build wasn't what I was looking for, it has proven useful
anyway: many of the sizeof errors were just noise, but a few were actual
bugs (allocating too much or too little memory).
2018-09-07 20:00:57 +09:00
Bill Currie
4f58429137
Fix an unhealthy pile of gcc 8 warnings.
...
While some of the warnings were merely annoying, some where actual bugs or
unearthed bugs in related code.
2018-08-20 00:05:00 +09:00
Johnny
d1a8c1b277
Color swizzle & software lighting fix
2014-02-03 16:20:54 +09:00
Bill Currie
d80342e0a8
Fix some compile errors from Johnny's patch.
...
Turns out he has to compile without -Werror.
2014-02-02 16:42:08 +09:00
Johnny
850382eed4
Fixes crashes when sw32_r_pixbytes is set to 2 or 4
2014-02-02 16:22:53 +09:00
Bill Currie
9d71d9bb7a
Remove maxwarpwidth and maxwarpheight.
...
Only the sw32 renderer even tried to use them, and they didn't get set
properly. This fixes JohnnyonFlame's waterwarp issue.
2014-02-02 14:41:58 +09:00
Bill Currie
99678a571b
Remove *.slc on make clean.
2014-01-28 16:26:24 +09:00
Bill Currie
3efb0c538f
Separate file search from loading.
...
QFS_LoadFile (and its wrappers) now take a file handle rather than a
path. This will make vpath usage a little cleaner to implement.
2014-01-28 16:22:05 +09:00
Bill Currie
4d59282641
Find the remaining vertex attribute order issues.
...
I hope. I do need to figure out why I made sprite blend an attribute
rather than a uniform.
2014-01-28 16:22:04 +09:00
Bill Currie
a5db0b1a65
Remove the now unnecessary GLSL_CompileShaderS().
...
Now that the transition to using shader effects is comlete, there's no
need for the wrapper.
2014-01-28 16:22:04 +09:00
Bill Currie
57d2198140
Use the new shader system for iqm models.
2014-01-28 16:22:04 +09:00
Bill Currie
385175ca65
Use the new shader system for 2d drawing.
2014-01-28 16:22:04 +09:00
Bill Currie
c89e612cd4
Remove redundant fog and palette shader code.
2014-01-28 16:22:04 +09:00
Bill Currie
50bb40be29
Use the new shader system for sprites.
2014-01-28 16:22:04 +09:00
Bill Currie
68bd7e643d
Remove the long dead text vertex shader.
2014-01-28 16:22:04 +09:00
Bill Currie
1d67f8f0c3
Use the new shader system for textured particles.
2014-01-28 16:22:04 +09:00
Bill Currie
1a7b532927
Use the new shader system for point particles.
2014-01-28 16:22:04 +09:00
Bill Currie
3af6a640fe
Missed the old turb frag shader.
2014-01-28 16:22:04 +09:00
Bill Currie
a419fb2c92
Ensure the vertex coord attribute is attribute 0.
...
It seems mesa still has the bug where non-array attributes don't work
when set as attribute 0, and that the allocation order changed sometime
since I last tested with mesa. This fixes the black world and flickering
alias models on my eeepc.
2014-01-28 16:22:04 +09:00
Bill Currie
042d6e5728
Remove a couple of stale files.
...
Missed these in the bsp related commit.
2014-01-28 16:22:04 +09:00
Bill Currie
26fc0b74e6
Fix bsp water surfaces.
...
Everything seems to be working for the bsp renderer.
2014-01-28 16:22:04 +09:00
Bill Currie
f43592589d
Use the new shader system in the bsp renderer.
...
It mostly works. Skybox is untested, and water surfaces are broken.
2014-01-28 16:22:04 +09:00
Bill Currie
b269338947
Start using the new shader system.
...
So far, alias model rendering is the only victim, but things are working,
even if only color map lookup and fog blending are broken out at this
stage.
I expect the effect naming scheme will go through some changes until I'm
happy with it.
2014-01-28 16:22:04 +09:00
Bill Currie
323fbe1927
Fix an allocation oopsie.
...
I must have been tired when I wrote that line.
2014-01-28 16:22:04 +09:00
Bill Currie
550f1ae788
Fix some bitrot.
...
Just updating for the changes to the ALLOC/FREE macros.
2014-01-28 16:22:03 +09:00
Bill Currie
96c40cb9a1
Add basic support for shader "effects".
...
Again, based on The OpenGL Shader Wrangler. The wrangling part is not used
yet, but the shader compiler has been modified to take the built up shader.
Just to keep things compiling, a wrapper has been temporarily created.
2014-01-28 16:22:03 +09:00
Bill Currie
f5501fbf24
Fix a pile of automake deprecation warnings.
...
s/INCLUDES/AM_CPPFLAGS/g
I <3 sed :)
2013-11-24 13:11:50 +09:00