Bill Currie
b00c866c4e
Allow casting between string and pointer types
2020-02-19 21:41:46 +09:00
Bill Currie
a6f3e1753a
Fix ruamoko's hashtab_t typedef
...
Being typedefed directly to a pointer is a holdover from when pointer
declarations were really awkward.
2020-02-19 21:41:46 +09:00
Bill Currie
7a315b4a89
Fix storage class for for-loop declarations
...
Getting "i redeclared" when i was declared in a for loop in two
different functions was a tad unexpected.
2020-02-19 21:41:46 +09:00
Bill Currie
67e183c8b6
Put the guts of qwaq's reflection code into ruamoko
2020-02-19 21:41:46 +09:00
Bill Currie
4c40928112
Remove what appears to be a redundant check
...
It was long wrong anyway as it checked past the end of the function's
parameters, which caused a segfault when calling varargs functions with
no formal parameters.
2020-02-19 02:53:38 +09:00
Bill Currie
a65d6bce09
Fix a warning that got through
...
I forgot to compile test in optimized...
2020-02-19 02:43:27 +09:00
Bill Currie
bd6dcafdc8
Replace system defines/includes with qfcc's
...
Right now, it probably works only with modern gcc.
2020-02-19 02:35:09 +09:00
Bill Currie
2d52da9c0d
Fix segfault in unlimited params
2020-02-19 02:35:09 +09:00
Bill Currie
c61d0b6ff0
Allow unlimited parameters in function declarations
...
However, definitions are still limited to 8 parameters. This allows
processing of C headers for type information.
2020-02-19 02:35:09 +09:00
Bill Currie
ee228504aa
Fix self-referenced enum declarations
...
eg:
typedef enum foo {
bar = 1,
baz = bar,
} foo;
2020-02-19 02:35:09 +09:00
Bill Currie
d4574111b5
Replace system defines/includes with qfcc's
...
Right now, it probably works only with modern gcc.
2020-02-19 02:31:16 +09:00
Bill Currie
2f726a497b
Fix segfault in unlimited params
2020-02-19 02:30:50 +09:00
Bill Currie
501174e14f
Allow unlimited parameters in function declarations
...
However, definitions are still limited to 8 parameters. This allows
processing of C headers for type information.
2020-02-19 01:51:24 +09:00
Bill Currie
e658c0d5cd
Fix self-referenced enum declarations
...
eg:
typedef enum foo {
bar = 1,
baz = bar,
} foo;
2020-02-19 01:28:09 +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
65890dd2fb
Add a fixed-array allocator
...
Turned out to be very convenient.
2020-02-17 20:27:43 +09:00
Bill Currie
cb70dc7212
Fix incorrect include protection
2020-02-17 16:40:12 +09:00
Bill Currie
0cb04dc490
Add a set of macros for dynamic arrays
...
Includes docs and test cases.
2020-02-17 16:17:21 +09:00
Bill Currie
e37aba364a
Correct an apparent typo
...
Black makes much more sense than Slack, especially if the text is from a
quake mod (no idea where, though).
2020-02-17 12:58:23 +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
9ff4eefe65
Merge branch 'master' into vulkan
2020-02-16 18:17:50 +09:00
Bill Currie
ed283a9e7f
Copy only the necessary number of vararg parameters
2020-02-16 18:00:29 +09:00
Bill Currie
12d2a0ff75
Copy the correct number of words for rcall
2020-02-16 17:58:36 +09:00
Bill Currie
f5741a979e
Implement parameter alignment in the engine
...
The engine now requires non-v6 progs to store the log2 alignment for the
param struct in .param_alignment.
PR_EnterFunction is clearer and possibly more efficient.
2020-02-16 17:13:45 +09:00
Bill Currie
7a399c956b
Encode function parameter alignment
...
The encoding is 3:5 giving 3 bits for alignment (log2) and 5 bits for
size, with alignment in the 3 most significant bits. This keeps the
format backwards compatible as until doubles were added, all types were
aligned to 1 word which gets encoded as 0, and the size is unaffected.
2020-02-16 17:10:43 +09:00
Bill Currie
1bc08c59f6
Add tests for %%
...
double fails due to qfcc aligning double param locals, but the engine
not doing so.
2020-02-16 17:02:38 +09:00
Bill Currie
1a9510834a
Add a missed opcode conversion for %%
2020-02-16 12:10:09 +09:00
Bill Currie
32c21ec559
Make gcc accept the bitwise-boolean magic
...
Forgot to compile check...
2020-02-16 12:08:08 +09:00
Bill Currie
9d2d33fa50
Implement %% (true modulo) support in qfcc
...
However, it's not quite working yet
2020-02-16 11:57:58 +09:00
Bill Currie
b4fd804e4e
Implement true modulo in the engine
2020-02-16 11:53:56 +09:00
Bill Currie
4269c8cb07
Rename the mod instruction to rem
...
Because % really implements remainder rather than true modulo, and I
plan on adding %% to implement true modulo.
2020-02-16 11:04:30 +09:00
Bill Currie
db9996023f
Add some tests for double comparison
...
More testing the engine than the compiler, but hey :)
2020-02-15 23:49:12 +09:00
Bill Currie
bab3752e98
Add missed overridden math functions
...
And fix misspelled ones too.
2020-02-15 23:49:12 +09:00
Bill Currie
14acfad7c4
Fix incorrect placement of far data
...
All the care in aligning things was undone by not updating the
calculations of the pointers.
2020-02-15 23:49:12 +09:00
Bill Currie
1985b6d4fd
Avoid creating a struct temp for ivar struct return
...
This fixed the uninitialized temp warning in HUD.r. The problem was
caused by the flow analyzer not being able to detect that the struct
temp was being initialized by the move statement due to the address of
the temp being in a pointer temp. While it would be good to use a
constant pointer for the address of the struct temp or improving the
flow analyzer to track actual data, avoiding the temp in the first place
results in nicer code as it removes a move statement.
2020-02-15 23:49:12 +09:00
Bill Currie
9c996df7b4
Add a test case for the uninit temp in HUD.r
2020-02-15 23:49:12 +09:00
Bill Currie
7bfa0f7a92
Allow pragmas to have arguments
...
It does mean only one pragma per line, but that's not such a big deal.
2020-02-15 23:49:12 +09:00
Bill Currie
91f5023681
Promote bugs to internal errors
...
Mostly so I can catch them in test cases
2020-02-15 23:49:12 +09:00