Bill Currie
93aa038d9e
[vulkan] Generate handle get functions
...
Cleans up (hides) the casting when fetching a handle.
2021-01-12 14:56:02 +09:00
Bill Currie
8a85b5c610
[vulkan] Switch to float/normalized for pics
...
It gives better results when pics are squished or expanded.
2021-01-12 13:51:41 +09:00
Bill Currie
03f614ccb9
[vulkan] Parse VkBool32 correctly as bool type
...
This makes it much clearer whether something is just a flag or an index
of some sort.
2021-01-12 13:07:51 +09:00
Bill Currie
bb4ca7683e
[vulkan] Get the 2D pipeline up and running
...
First pixels! This was a nightmare of little issues that the validation
layers couldn't help with: incorrect input assembly, incorrect vertex
attribute specs. Though the layers did help with getting the queues
working. Still, lots of work to go but this is a major breakthrough as
I now have access to visual debugging for textures and the like.
2021-01-12 11:27:41 +09:00
Bill Currie
8f6f32981c
[vulkan] Add some matrix buffers
...
It seems they could all be in the one buffer: there are indications that
uniform binding can be fairly fine-grained. I need to investigate that.
2021-01-12 11:26:20 +09:00
Bill Currie
bf4613acd5
[vulkan] Remove missed preinitialized stages
2021-01-12 10:43:05 +09:00
Bill Currie
6e636a27d0
[renderer] Continue the job of merging SCR_UpdateScreen
...
I think this is probably as merged as it will get (though the update
callbacks can probably do with some merging).
2021-01-11 16:57:31 +09:00
Bill Currie
88d48944cb
[vulkan] Upload the default character set
...
Nothing's shown yet, and the code is a tad messy, but it's serving as a
proof of concept for now.
2021-01-11 01:27:40 +09:00
Bill Currie
b584d6f403
[vulkan] Abandon image "preinitialized" layout
...
Turn's out it's not useful for transfers. I might bring it back when I
figure out how to use it.
2021-01-11 01:25:55 +09:00
Bill Currie
23db917ec4
[vulkan] Create a staging buffer struct
...
And move the barrier prefabs into a more convenient place.
2021-01-11 01:24:15 +09:00
Bill Currie
ba6450d0b4
[vulkan] Make a start on the 2D pipeline
...
Short wrappers for Draw functins are in vid_render_vulkan.c so the
vulkan context can be passed on to the actual functions. The 2D shaders
are set up similar to those in glsl, but with full 32-bit color (rgba)
support instead of paletted. However, the textures are not loaded yet,
nor is anything bound.
2021-01-10 15:56:17 +09:00
Bill Currie
fed7149508
[vulkan] Parse sampler definitions
2021-01-10 15:50:24 +09:00
Bill Currie
b40b3cff1c
[vulkan] Use a size_t temp to parse uint32 values
...
Needed for swapbuffer frame count
2021-01-10 15:29:47 +09:00
Bill Currie
fd07169a80
[util] Support casts from int/uint to size_t
...
I don't want to do implicit down casts (size_t to uint) but I needed to
be able to reference swapchain array size.
2021-01-10 15:27:39 +09:00
Bill Currie
ef817a5cbf
[vulkan] Allow images to be created initialized
...
Needed for loaded textures.
2021-01-10 15:26:09 +09:00
Bill Currie
e7106cce9e
[plugin] Remove Draw_Init from draw funcs
...
It's never called outside the renderers.
2021-01-10 15:22:39 +09:00
Bill Currie
a35eec3877
[util] Fail gracefully when no symtab is present
2021-01-10 15:02:24 +09:00
Bill Currie
01b9c9bf78
[vulkan] Parse descriptor pools
2021-01-10 01:53:15 +09:00
Bill Currie
e281b608e1
[vulkan] Provide access to swapchain image count
...
This necessitated hand-writing qfv_swapchain_t's descriptors as I don't
feel like getting that complicated with vkgen at this stage and it's not
really appropriate anyway? qfv_swapchain_t is meant to be read-only and
not parsed from a plist.
2021-01-10 01:51:15 +09:00
Bill Currie
16334158bd
[util] Support struct pointer accesses in cexpr
2021-01-10 01:51:07 +09:00
Bill Currie
0c1699fdbb
Fix a pile of double semicolons
2021-01-09 20:42:23 +09:00
Bill Currie
5aa74df922
[renderer] Add a default 8x8 font
...
It is not compatible with the quake charset (it's the IBM charset). The
data is a simple bitmap but a converter to quake pic format is provided.
2021-01-08 14:37:52 +09:00
Bill Currie
b6d2c63059
[vulkan] Fix some formtatting
...
Both code and developer output.
2021-01-07 22:49:43 +09:00
Bill Currie
90428db3d5
[glsl] Remove stray return statement
...
I have no idea why that was in that patch and certainly does not seem to
be correct.
2021-01-07 22:47:58 +09:00
Bill Currie
3b06ca01af
[vulkan] Destroy pipeline on shutdown
2021-01-05 23:54:22 +09:00
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
0da99bc59c
[util] Add promotion from float to int to cexpr
...
I won't go the other way nor will I add double to float.
2021-01-05 23:41:13 +09:00
Bill Currie
b493e6ac32
[util] Expose plist type check support functions
2021-01-05 23:39:52 +09:00
Bill Currie
a45f8f98b6
[util] Make exprctx hashlinks double pointer
...
The way I wound up using the field meant that exprctx should not "own"
the hashlinks chain, but rather just point to it. This fixes the nasty
access errors I had.
2021-01-05 19:55:17 +09:00
Bill Currie
d8b389d2b6
[vulkan] Initialize sType in parsed structures
...
This fixes a lot of validation issues, but still some fun with
uninitialized memory and bad accesses.
2021-01-05 18:26:01 +09:00
Bill Currie
37b6d11c01
[ruamoko] Add binding for str_upper
...
I can't believe I didn't do that when I did str_lower.
2021-01-05 18:24:18 +09:00
Bill Currie
3cf8a336a8
[vulkan] Clear out the resource tables on shutdown
...
This would take care of undestroyed resources if there wasn't a problem
with invalid memory use. Not sure what's going on just yet.
2021-01-05 17:48:00 +09:00
Bill Currie
dc704a9384
[vulkan] Update the validation layer request
...
It's now Kronos as LunarG has been deprecated (explains why I got no
help with some of my debugging).
2021-01-05 17:46:03 +09:00
Bill Currie
d22be09ae3
[vulkan] Clean up pipeline def loading
2021-01-05 17:45:02 +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
ec7d974dc1
[gamecode] Move % handling to the flags state
...
% is effectively a format flag that cancels the format and outputs a
% single %. Fixes % not getting output for %%.
2021-01-05 00:07:58 +09:00
Bill Currie
1b8b7c04cb
[gamecode] Disconnect held strings from return slot
...
Fixes an internal string error when a return string has been freed.
2021-01-04 23:42:10 +09:00
Bill Currie
7e726545b8
[vulkan] Fix some string retention issues
...
I really need to come up with a better solution for managing strings in
quakec.
2021-01-04 19:28:27 +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
e4f75791ce
[vulkan] Clean up some tangled dependencies
...
Dependencies on vkparse.hinc were spreading through the code which I
didn't want as that removes a lot of the automation from the automake
files. This keeps all parser code internal to vkparse.c's scope, and any
accesses required for enum and struct (not yet) definitions can be
fetched by name.
2021-01-04 17:26:39 +09:00
Bill Currie
a6a3d4c6b5
[vulkan] Make array and single parsing smarter
...
Array and single type overrides now allow the parsing of the items
themselves to be customized. This makes it easy to handle arrays and
pointers to single items while also using custom specifications, rather
than relying entirely on the custom override.
2021-01-04 15:30:27 +09:00
Bill Currie
5b842da394
[util] Fix types for double and float constants
2021-01-04 00:23:48 +09:00
Bill Currie
55445a25f2
[util] Add some tests for the new cexpr work
2021-01-04 00:23:48 +09:00
Bill Currie
619fe15367
[util] Add vector swizzles to cexpr
...
That turned out to be a lot easier than expected: needed only 4 ifs per
vector "type" (xyzw vs rgba) instead of 340.
2021-01-04 00:23:48 +09:00
Bill Currie
4562e0b876
[util] Implement more of cexpr
...
This adds unary, vector and function expressions.
2021-01-04 00:23:48 +09:00
Bill Currie
81300f89f8
[util] Allow multiple types for pl fields
...
I want to be able to use name references, but that requires string
items, so anything that would normally be dictionary or array (or
binary, even) would also need to accept string. This seemed to be the
cleanest solution. Any custom parser would then need to check the type
and act appropriately, but any inappropriate types have already been
pre-filtered by the standard parsers.
2021-01-02 14:02:33 +09:00
Bill Currie
eb52d366c8
[util] Add q-v and v-q multiplication to cexpr
2021-01-02 12:10:58 +09:00
Bill Currie
015cee7b6f
[util] Add vector-quaternion shortcut functions
...
Care needs to be taken to ensure the right function is used with the
right arguments, but with these, the need to use qconj(d|f) for a
one-off inverse rotation is removed.
2021-01-02 10:44:45 +09:00