Bill Currie
5eb1afdcb3
[vulkan] Implement pipeline creation
...
The prototypes for handle parsers needed to be changes because it turned
out "single" was inappropriate for handles as "single" allocates memory
for the parsed object, but handles must be written directly.
2021-01-05 23:42:30 +09:00
Bill Currie
7c661e7cc5
[vulkan] Remove renderpass from generated code
...
The creation of a render pass seems to need special handling.
2021-01-05 17:43:26 +09:00
Bill Currie
e5708100bb
[vulkan] Generate code for resource nodes
...
This makes it easy to add resource nodes defining contextually named
resources. It is already used for shaders, set layouts, and pipeline
layouts.
2021-01-05 14:15:35 +09:00
Bill Currie
d8261ade9e
[vulkan] Generate code for vulkan handles
...
The handles can be created in place or in resource blocks and referred
to by name (resource block code gen next).
2021-01-05 08:38:35 +09:00
Bill Currie
d919a85c8e
[vulkan] Implement pipeline layout creation
...
It seems to work when parsing the layouts. They can be created in-line
(in theory) or in a "setLayouts" node and then referenced by name.
2021-01-04 17:36:11 +09:00
Bill Currie
7fb335a215
[vulkan] Add support for building and loading shaders
...
Shaders can be built as spv files and installed into
$libdir/quakeforge/shaders or as spvc files and compiled into the
engine. Loading supports $builtin/name to access builtin shaders,
$shader/path to access external standard shaders and quake filesystem
access for all other paths.
2020-12-23 14:32:29 +09:00
Bill Currie
80aec45e35
[vulkan] Ensure msaa settings are consistent
...
I had forgotten that msaa samples was governed by the driver (as a max)
and the renderpass setup code simply took the max. Thus why 1 vs 8
caused the display to render incorrectly.
2020-12-21 20:17:27 +09:00
Bill Currie
96df447c45
[vulkan] Hook up the expression parser
...
The pipeline parser still isn't hooked up yet as something isn't quite
right, but it seems all the parsing works.
2020-12-21 18:38:31 +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
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
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
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
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
68449d0f6f
Create a window and a surface for vulkan
...
Yay, segfaults in R_Init :)
2019-07-09 16:33:44 +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