mirror of
https://github.com/seekrs/MacroLibX.git
synced 2026-09-03 01:50:00 +02:00
Compare commits
764
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0494ceff27 | ||
|
|
ff1a0bb4cb | ||
|
|
bd7cd52c4f | ||
|
|
d276899e8b | ||
|
|
42f0d52bfa | ||
|
|
f1c7f8ab27 | ||
|
|
1e27c05789 | ||
|
|
9800d2f78d | ||
|
|
1cc7e2e2ce | ||
|
|
0491089463 | ||
|
|
83b9f8f9da | ||
|
|
f53d90e72c | ||
|
|
b9c54dc469 | ||
|
|
63fe3088bf | ||
|
|
c9df651a14 | ||
|
|
2d0c02ae7e | ||
|
|
77fd97f605 | ||
|
|
3ed29db5dd | ||
|
|
38145d8f1e | ||
|
|
fe60a3edfc | ||
|
|
fafd5c9dc9 | ||
|
|
d492dccb29 | ||
|
|
35d0dafc78 | ||
|
|
71f2de610c | ||
|
|
ddfbe32cea | ||
|
|
b090a070c8
|
||
|
|
069f8af9d6 | ||
|
|
8b952f14c5 | ||
|
|
cfc3fccac4 | ||
|
|
f691ce6890 | ||
|
|
fb0eecde00 | ||
|
|
f65b8a2aef | ||
|
|
552cc33ba3
|
||
|
|
d1f5b7c68e | ||
|
|
e3ab91c7eb | ||
|
|
6f0beebdf9 | ||
|
|
f9f4fc6425 | ||
|
|
59b3a297f9 | ||
|
|
790e24ebdb | ||
|
|
3a2563a7f5 | ||
|
|
cf491fc56d | ||
|
|
492365f6dd | ||
|
|
564942ad35 | ||
|
|
2751206578 | ||
|
|
002c35ccdb | ||
|
|
36e63bbbe7 | ||
|
|
3a11c1d350 | ||
|
|
74613d230f | ||
|
|
f1e89ca90e | ||
|
|
1566fbfc00 | ||
|
|
6c1400e62c | ||
|
|
25fb5285f7 | ||
|
|
87059f8ca3 | ||
|
|
db299c6930 | ||
|
|
ebfc00d015 | ||
|
|
7639c27df4
|
||
|
|
2d9f193a72 | ||
|
|
6aac4a71de | ||
|
|
0ff3085448 | ||
|
|
b286da89e2 | ||
|
|
55eb31551a
|
||
|
|
7741ed2dd4
|
||
|
|
b09f5c39f7 | ||
|
|
91b93a6f10 | ||
|
|
26c47c3a95 | ||
|
|
28142f764f | ||
|
|
26ccd5eeee | ||
|
|
849ecbaf1f | ||
|
|
b345fbc672 | ||
|
|
bb019f20a7 | ||
|
|
33ae4c3a37
|
||
|
|
32987f0afe | ||
|
|
3e82487037 | ||
|
|
b33154d846 | ||
|
|
278e29d277
|
||
|
|
8ccfa0bee1 | ||
|
|
b0806958fe | ||
|
|
7e31195b77 | ||
|
|
5912aa5c12 | ||
|
|
e3ee9f0327 | ||
|
|
807931fc8b | ||
|
|
768dc0c1d9 | ||
|
|
55086a05a6 | ||
|
|
bef1888a79 | ||
|
|
519b273a20
|
||
|
|
fd8beaaf17
|
||
|
|
c4979ceded | ||
|
|
f4a1dc386a | ||
|
|
83d05cc6e2 | ||
|
|
f44c4d106c | ||
|
|
6fd5814032
|
||
|
|
7a3a65d26c
|
||
|
|
c251fb81e3 | ||
|
|
cf84449dee | ||
|
|
58f1e76a56 | ||
|
|
b6c7e8095f | ||
|
|
a6a3178425 | ||
|
|
8c43af3ad1 | ||
|
|
1f96fa56d8 | ||
|
|
4f0d8dac67
|
||
|
|
85150693af | ||
|
|
56fa5ac613 | ||
|
|
19f5a2eb2f | ||
|
|
cb2979108b | ||
|
|
454fcc6e65 | ||
|
|
a51d391a04 | ||
|
|
9ae3f46f2e | ||
|
|
4adaccf72a | ||
|
|
67523e7fb4 | ||
|
|
ec019ba45c | ||
|
|
ba0398092a | ||
|
|
b89bacfa95 | ||
|
|
f84e0b2312 | ||
|
|
65ff11b301 | ||
|
|
1f780e2a8a | ||
|
|
06ddcf99d7 | ||
|
|
ece1fc93da | ||
|
|
04bc524ae8 | ||
|
|
b63f07bfe8 | ||
|
|
a40907b68f | ||
|
|
9ec992d54c | ||
|
|
a665f7c448 | ||
|
|
cee944d996 | ||
|
|
493696482c | ||
|
|
9c4aaea79f | ||
|
|
ffc0f26701 | ||
|
|
1835db0943 | ||
|
|
7c35354c44 | ||
|
|
c99cf63194 | ||
|
|
c5026d93dc | ||
|
|
22fb83fee1 | ||
|
|
c62168b0e2 | ||
|
|
31cbdec371 | ||
|
|
cbf185e6c5 | ||
|
|
e5b555dbc3 | ||
|
|
15f2649562 | ||
|
|
a28e17aa31 | ||
|
|
c0095314fd | ||
|
|
4529ba5752 | ||
|
|
d127e6c3f9 | ||
|
|
a9f5be910f | ||
|
|
4f1cad4e72 | ||
|
|
9573199ad9 | ||
|
|
72e158a0a7 | ||
|
|
72d8ddae64 | ||
|
|
93014c1668 | ||
|
|
19758b6d40 | ||
|
|
5c385675c7 | ||
|
|
ab9d12ae17 | ||
|
|
18b57e3761 | ||
|
|
bb67bd42e1 | ||
|
|
0894cb5d4f | ||
|
|
e45ded6ea9 | ||
|
|
93d0b1828b | ||
|
|
d2057e3108 | ||
|
|
e7baccb6cc | ||
|
|
41cae01a9b | ||
|
|
008dc4132c | ||
|
|
3e29dd1bbe | ||
|
|
9f795fa67e | ||
|
|
4e88505aa6 | ||
|
|
324ef540fd | ||
|
|
741fa6cf89 | ||
|
|
22e7d90285 | ||
|
|
f17a1b24e3 | ||
|
|
85c3c844ea | ||
|
|
14dee628c4 | ||
|
|
e66c5482ea | ||
|
|
c474648da0 | ||
|
|
c94513107b | ||
|
|
ed794863d9 | ||
|
|
c7fba85393 | ||
|
|
5650662d07 | ||
|
|
640554981c | ||
|
|
a9274fcb3e | ||
|
|
3d6314253a | ||
|
|
1a77df23ee | ||
|
|
c16c4dc301 | ||
|
|
7354a5ade4 | ||
|
|
6c22b3e830 | ||
|
|
0fdc36a6b7 | ||
|
|
d2513834a2 | ||
|
|
ba5ef31796 | ||
|
|
29826e70ab | ||
|
|
31d2054389 | ||
|
|
24c3faa88f | ||
|
|
44f2bbf6cd | ||
|
|
3e079cc0e9 | ||
|
|
025db7c2c8 | ||
|
|
0628afa905 | ||
|
|
b05fb59e37 | ||
|
|
2c73362fce | ||
|
|
f47db635e2 | ||
|
|
c72d44a8ea | ||
|
|
70d2426ed4 | ||
|
|
e89fe88d83 | ||
|
|
19dbd4e203 | ||
|
|
093dabcbbb | ||
|
|
096c0ae8cb | ||
|
|
ff76134422 | ||
|
|
2345cf4417 | ||
|
|
4bd35e72fd | ||
|
|
2798a43674 | ||
|
|
0c11d7a815 | ||
|
|
ad4891f1f5 | ||
|
|
e7d575046a | ||
|
|
f478bb4a9e | ||
|
|
42e7e409db | ||
|
|
357c813b85 | ||
|
|
daade1efc0 | ||
|
|
90a8dad18c | ||
|
|
fbc5bf0e45 | ||
|
|
43a727edf4 | ||
|
|
6a959d8469 | ||
|
|
cadf1669c8 | ||
|
|
0b99c62bbf | ||
|
|
0201d933fd | ||
|
|
8a91d90b0d | ||
|
|
0982ed814d | ||
|
|
c5b1a80bd9 | ||
|
|
3f5b42d301 | ||
|
|
69502db0ee | ||
|
|
c50925c64d | ||
|
|
7e0664a28f | ||
|
|
fdaaa86b7f | ||
|
|
3f8955f4b1 | ||
|
|
baec65134c | ||
|
|
4462400b73 | ||
|
|
9b0c3500c7 | ||
|
|
157e555fb6 | ||
|
|
2ae59b1b39 | ||
|
|
2c710058f3 | ||
|
|
d64be4a1f5 | ||
|
|
8c2e0cc69e | ||
|
|
82dc92047f | ||
|
|
3654cc67b1 | ||
|
|
e46c2b99ec | ||
|
|
2fdd9246db | ||
|
|
e6fb5a72d2 | ||
|
|
bc3d732208 | ||
|
|
23fc64a679 | ||
|
|
8bbe66528e | ||
|
|
f4422c3174 | ||
|
|
86709573fe | ||
|
|
c8250629f3 | ||
|
|
ef16cd3fdb | ||
|
|
12c7469f52 | ||
|
|
9443555cbb | ||
|
|
023215aeed | ||
|
|
bb523e8f66 | ||
|
|
48da7003c9 | ||
|
|
2137fc4ee7 | ||
|
|
0f0ca48339 | ||
|
|
deb6c20361 | ||
|
|
b432e3e2e1 | ||
|
|
1f482719e6 | ||
|
|
3683a48e17 | ||
|
|
94b46ac18c | ||
|
|
6d34a7ffa6 | ||
|
|
f4c186e724 | ||
|
|
ce530c765e | ||
|
|
d1d7f7ed98 | ||
|
|
49002fdd98 | ||
|
|
45220a35fb | ||
|
|
5244cde0ae | ||
|
|
4e326db10d | ||
|
|
952e48a05c | ||
|
|
62bd63c364 | ||
|
|
30f4602b1c | ||
|
|
393735b1d6 | ||
|
|
d40264891c | ||
|
|
6604cd647d | ||
|
|
f64ce376d6 | ||
|
|
c636229875 | ||
|
|
a85ad6378e | ||
|
|
5a93cd4ae5 | ||
|
|
4efe213fc6 | ||
|
|
8721fe5000 | ||
|
|
a90bb88169 | ||
|
|
35b47936b4 | ||
|
|
69bbed5b54 | ||
|
|
024a9af55a | ||
|
|
623021a669 | ||
|
|
feb3fcbd1f | ||
|
|
5b726fe74a | ||
|
|
5a36b90a72 | ||
|
|
e365c8a48c | ||
|
|
7bd2b9c4c7 | ||
|
|
f78c3e9f0f | ||
|
|
34ea0822a7 | ||
|
|
f5ffd97e48 | ||
|
|
6f57d9dab7 | ||
|
|
65fd92dca9 | ||
|
|
999ef64d0a | ||
|
|
33260f316f | ||
|
|
3122576f04 | ||
|
|
92d060fc70 | ||
|
|
57a7b10850 | ||
|
|
777b92af8c | ||
|
|
b7183a1058 | ||
|
|
e425b66591 | ||
|
|
8db78fc86b | ||
|
|
122f4e8403 | ||
|
|
843856d004 | ||
|
|
afc17be8e4 | ||
|
|
0b492d5d47 | ||
|
|
8c63e316ef | ||
|
|
375fa0f49e | ||
|
|
32b6053cfb | ||
|
|
ef50272a0c | ||
|
|
c6aaa4e2fa | ||
|
|
e29ea92202 | ||
|
|
eaf5be3061 | ||
|
|
4ae7bd0420 | ||
|
|
5f46c8cb55 | ||
|
|
e8de2c169d | ||
|
|
bccfb8cd90 | ||
|
|
f3efdd8d72 | ||
|
|
b59888efb3 | ||
|
|
a662427097 | ||
|
|
6669d78323 | ||
|
|
de30c11157 | ||
|
|
5cf965b9a1 | ||
|
|
2854b19296 | ||
|
|
d167538b3f | ||
|
|
9dfe72f27c | ||
|
|
00fccf011e | ||
|
|
a1bc4a801d | ||
|
|
8c287e4cbc | ||
|
|
fed7111362 | ||
|
|
dbf4d3cc5b | ||
|
|
9499ade4c0 | ||
|
|
e470e4c43c | ||
|
|
028cb57ff4 | ||
|
|
625e23e624 | ||
|
|
7114522d80 | ||
|
|
1c073eb8eb | ||
|
|
3aaa5df929 | ||
|
|
3828b98a60 | ||
|
|
da41f2836f | ||
|
|
2dadf5d29a | ||
|
|
1ec2f72d26 | ||
|
|
b0384830a9 | ||
|
|
e1fefba841 | ||
|
|
58ad52e1cc | ||
|
|
a86f26f0f3 | ||
|
|
92743b0b03 | ||
|
|
3291e0cd2a | ||
|
|
7a3e5f37fa | ||
|
|
0304834008 | ||
|
|
049eb3e33c | ||
|
|
66024349cb | ||
|
|
e1af24a3ef | ||
|
|
40b82243ba | ||
|
|
ecb0a15e74 | ||
|
|
12b832ee31 | ||
|
|
4f755f8a6f | ||
|
|
a905f571dc | ||
|
|
386d9abe4b | ||
|
|
d0a74e79c5 | ||
|
|
160364bda2 | ||
|
|
ec2f1101f0 | ||
|
|
568b5a85ce | ||
|
|
f2cbd6679d | ||
|
|
2e93798948 | ||
|
|
d4ea03e047 | ||
|
|
5866f5ac25 | ||
|
|
53650f3153 | ||
|
|
cc8fb1bbb3 | ||
|
|
a3334277c6 | ||
|
|
a593838c4d | ||
|
|
b4e61e1875 | ||
|
|
ef72083bd0 | ||
|
|
b0924861aa | ||
|
|
99437a6d6a | ||
|
|
ad35eee0b6 | ||
|
|
904b6d31ac | ||
|
|
2e08c37624 | ||
|
|
f9c05d6d7b | ||
|
|
1e2705ef06 | ||
|
|
8348f9ce7a | ||
|
|
092e5acd9b | ||
|
|
f4e4672cc6 | ||
|
|
fcb2d1d9bc | ||
|
|
a4b14baddd | ||
|
|
596393ed20 | ||
|
|
2b9b026d68 | ||
|
|
4c17f2e165 | ||
|
|
91b51a5621 | ||
|
|
976afdac3d | ||
|
|
429bd9eabd | ||
|
|
30e07d1f1a | ||
|
|
48d09e40d5 | ||
|
|
7f2d60f21d | ||
|
|
a4801fbce8 | ||
|
|
760317dcc7 | ||
|
|
520ce8d61e | ||
|
|
cd29248fc6 | ||
|
|
7db31b13c2 | ||
|
|
4f6886517e | ||
|
|
d87d4fbd6a | ||
|
|
aa09d9d83f | ||
|
|
34b4d2bda0 | ||
|
|
8888bd03d8 | ||
|
|
8ad6d84bd2 | ||
|
|
e0da415e86 | ||
|
|
a455d7704d | ||
|
|
f65ac577bc | ||
|
|
06372a84ed | ||
|
|
1dae0931f7 | ||
|
|
3d8ab31abb | ||
|
|
5dcb7402e1 | ||
|
|
8b9ef40f99 | ||
|
|
1fe21e7725 | ||
|
|
bea16a2dc1 | ||
|
|
1ddad73356 | ||
|
|
538cd96eda | ||
|
|
3668515e9b | ||
|
|
d95233e728 | ||
|
|
d209747978 | ||
|
|
00c87a61a3 | ||
|
|
e930b3b0be | ||
|
|
0795200910 | ||
|
|
dd36a878cd | ||
|
|
470f3a3a3c | ||
|
|
3a3b4e063a | ||
|
|
eb158d01c7 | ||
|
|
905ab698cb | ||
|
|
d535faaaf7 | ||
|
|
c427c46e24 | ||
|
|
e32c65d918 | ||
|
|
81387ec53d | ||
|
|
850b47f6cf | ||
|
|
1641a48e4e | ||
|
|
9ef9cd897d | ||
|
|
b93d0753c6 | ||
|
|
710634ced6 | ||
|
|
d616adb466 | ||
|
|
e7eb894335 | ||
|
|
afee09d1ea | ||
|
|
1d9a51e4f7 | ||
|
|
10f1b865bd | ||
|
|
920e0f5e66 | ||
|
|
ace4c98945 | ||
|
|
a7aa05fcbe | ||
|
|
7f7b6704ce | ||
|
|
291927a1cc | ||
|
|
280e3b43d3 | ||
|
|
969555d572 | ||
|
|
a69ea93597 | ||
|
|
610603e87c | ||
|
|
58c082f033 | ||
|
|
e09797a1a6 | ||
|
|
2c01c67361 | ||
|
|
7271b8fc9a | ||
|
|
67d7635a32 | ||
|
|
215a0dc2c3 | ||
|
|
39d38c822b | ||
|
|
6bbf1e196d | ||
|
|
e5ff232065 | ||
|
|
4af38a2c7e | ||
|
|
2200863406 | ||
|
|
d9a00dee22 | ||
|
|
f7946eea68 | ||
|
|
c26c6f952b | ||
|
|
54435be20d | ||
|
|
be2a7d5157 | ||
|
|
7011a6ee6e | ||
|
|
235292b440 | ||
|
|
d9e88f70c7 | ||
|
|
e8c80eccab | ||
|
|
fa7f16744d | ||
|
|
105b32b710 | ||
|
|
75bca5bf6f | ||
|
|
c5a5a029af | ||
|
|
6000b3e3c1 | ||
|
|
7b64359f3e | ||
|
|
3624caf519 | ||
|
|
828024e131 | ||
|
|
784156c395 | ||
|
|
b53b36e07a | ||
|
|
3bb167e164 | ||
|
|
fe9dd3c9df | ||
|
|
132e539d4a | ||
|
|
916b0fbcb5 | ||
|
|
ea4793c403 | ||
|
|
7b9ee3d49f | ||
|
|
599f9414ae | ||
|
|
d6e4ef1976 | ||
|
|
9c0e7dfd21 | ||
|
|
1dd24f687c | ||
|
|
1e2f2880ae | ||
|
|
eaf2d00864 | ||
|
|
528867bc7b | ||
|
|
fab193db38 | ||
|
|
3f4dcad12f | ||
|
|
a461624fea | ||
|
|
77ab3bf68c | ||
|
|
982b8c17f4 | ||
|
|
d857d598e8 | ||
|
|
a3af54f271 | ||
|
|
48133e3432 | ||
|
|
6143e8b1c5 | ||
|
|
dd0599c088 | ||
|
|
208b0e4710 | ||
|
|
209472d0a1 | ||
|
|
708e509bfa | ||
|
|
47aead9e2d | ||
|
|
9024b9cc12 | ||
|
|
0bd6f17260 | ||
|
|
a0d5cea21f | ||
|
|
2c9c4217ec | ||
|
|
39298eda36 | ||
|
|
99e6267489 | ||
|
|
4835ff0337 | ||
|
|
7f1dd999bf | ||
|
|
088e1891fc | ||
|
|
18d0f102ec | ||
|
|
e060cf39f9 | ||
|
|
7de0758f76 | ||
|
|
189764dc34 | ||
|
|
875d73e3dd | ||
|
|
62c623d70a | ||
|
|
05ba165c45 | ||
|
|
944038e564 | ||
|
|
fb6bda24a6 | ||
|
|
c3ffb80a10 | ||
|
|
0acb086819 | ||
|
|
b14468eed1 | ||
|
|
f9d1234642 | ||
|
|
44d76a3b9e | ||
|
|
aa97d048b8 | ||
|
|
887e2b8699 | ||
|
|
c64cb4ac67 | ||
|
|
c88d9f1d9d | ||
|
|
15b54a15c8 | ||
|
|
348dff8140 | ||
|
|
6e4322e1ba | ||
|
|
a9cd7375f6 | ||
|
|
6d053a6941 | ||
|
|
02819d281e | ||
|
|
c24d961211 | ||
|
|
b3ba952218 | ||
|
|
c8382eddbf | ||
|
|
7c8f233cc8 | ||
|
|
84ded2734d | ||
|
|
c4cb077043 | ||
|
|
09829ed104 | ||
|
|
988ccf32db | ||
|
|
4ab70c2c35 | ||
|
|
ae6c4710c8 | ||
|
|
1a19c55568 | ||
|
|
1ef45ebba2 | ||
|
|
0cba8d011e | ||
|
|
79436b7068 | ||
|
|
e15aa45627 | ||
|
|
0beb25ce92 | ||
|
|
86714c3dd4 | ||
|
|
3aa5c20dbc | ||
|
|
a1e5eb9254 | ||
|
|
60bacab2e4 | ||
|
|
19a895c5f4 | ||
|
|
bd0a111e5f | ||
|
|
cbed1b7653 | ||
|
|
5f33613583 | ||
|
|
198600b853 | ||
|
|
32b5338187 | ||
|
|
d5e1e36a5d | ||
|
|
2bc0b94626 | ||
|
|
46ec35cfd7 | ||
|
|
9103138ee5 | ||
|
|
f502c86400 | ||
|
|
d38fd8eeb1 | ||
|
|
16424cc2e3 | ||
|
|
a2a1339736 | ||
|
|
8fa6fd35d0 | ||
|
|
23333da539 | ||
|
|
939b224b64 | ||
|
|
e245c27867 | ||
|
|
d172ea89fc | ||
|
|
075a8718de | ||
|
|
5f04c34aa0 | ||
|
|
8774d4c3fb | ||
|
|
a2f9594811 | ||
|
|
ac3b28c922 | ||
|
|
b144afd3fe | ||
|
|
c88ff1525d | ||
|
|
522975bf8b | ||
|
|
8b9d23a17a | ||
|
|
252f9c3da0 | ||
|
|
74b30ea218 | ||
|
|
ca13d77996 | ||
|
|
5d80fd87f4 | ||
|
|
9f555316fc | ||
|
|
b384ebec1b | ||
|
|
899ad8de70 | ||
|
|
d25cfc5975 | ||
|
|
66359574f9 | ||
|
|
6f0f944fbe | ||
|
|
72cc2eb9ab | ||
|
|
73c8e331af | ||
|
|
719dfea21c | ||
|
|
4a6a525847 | ||
|
|
eb7330a943 | ||
|
|
2d89f41639 | ||
|
|
a86eab4386 | ||
|
|
e2ee1f2820 | ||
|
|
280c1c076f | ||
|
|
c7e59cbbeb | ||
|
|
8b2d9d15bd | ||
|
|
c2258115d7 | ||
|
|
7d7ed1caba | ||
|
|
6435cc8333 | ||
|
|
a0a764d6a2 | ||
|
|
74f2306e6c | ||
|
|
c0e2750fb3 | ||
|
|
5093e7d1eb | ||
|
|
db86779907 | ||
|
|
a387e34d3c | ||
|
|
f9d729d30b | ||
|
|
fc3382f984 | ||
|
|
7dda5d5624 | ||
|
|
44d7c7e4fd | ||
|
|
99678c2bb3 | ||
|
|
bcfd5ef454 | ||
|
|
d2fb0e0e83 | ||
|
|
56c11352bc | ||
|
|
e297b8a05a | ||
|
|
b9e0540a1b | ||
|
|
f34161fa81 | ||
|
|
3ab024cced | ||
|
|
4d6c970a71 | ||
|
|
e8f4056b81 | ||
|
|
5d52517d37 | ||
|
|
0a7a082d24 | ||
|
|
5c497e4175 | ||
|
|
6b54089066 | ||
|
|
5f6a28f4f8 | ||
|
|
49f6bb4b71 | ||
|
|
1105bc6646 | ||
|
|
36bd11fdf5 | ||
|
|
a5e4b41ceb | ||
|
|
a260be573a | ||
|
|
327374d53b | ||
|
|
57da195bf9 | ||
|
|
d9de06a000 | ||
|
|
0a4bd42869 | ||
|
|
fc3f72ee3e | ||
|
|
d5e263390e | ||
|
|
a437316723 | ||
|
|
555af79e9e | ||
|
|
038a6db77f | ||
|
|
b078165849 | ||
|
|
591c144104 | ||
|
|
0b6b0b4902 | ||
|
|
51bd482acc | ||
|
|
a68f8ede72 | ||
|
|
f844c3ad58 | ||
|
|
b84350f76d | ||
|
|
9d89019af3 | ||
|
|
ce2966e1b5 | ||
|
|
5184e9500d | ||
|
|
bfcc8cb758 | ||
|
|
854a074cac | ||
|
|
53c0f08bc1 | ||
|
|
683ef90ddb | ||
|
|
6c0c4c127a | ||
|
|
e1b3f4d995 | ||
|
|
df7aeb11bb | ||
|
|
f634b14998 | ||
|
|
1407e6217c | ||
|
|
f0676c950d | ||
|
|
05f6a810bf | ||
|
|
7dc5701eff | ||
|
|
db91730e13 | ||
|
|
df29e41ac5 | ||
|
|
a158aa2269 | ||
|
|
d5a8b96be8 | ||
|
|
9f869d93e2 | ||
|
|
20068b0ff3 | ||
|
|
d28b41dab5 | ||
|
|
5e63cd8959 | ||
|
|
6b970e988a | ||
|
|
8954e4e189 | ||
|
|
19ccc1230e | ||
|
|
519691a944 | ||
|
|
e4df341a66 | ||
|
|
d1613ddfdb | ||
|
|
e471585946 | ||
|
|
6a2a3739c7 | ||
|
|
6c3db4a8db | ||
|
|
02d2dbb1bd | ||
|
|
942deade55 | ||
|
|
b75f543977 | ||
|
|
ea6c2a3335 | ||
|
|
22c9e14947 | ||
|
|
9c54cb6c68 | ||
|
|
6acd433437 | ||
|
|
4e5fb2648a | ||
|
|
be8caa922c | ||
|
|
735f748b79 | ||
|
|
5108134a5f | ||
|
|
9dfd3ab971 | ||
|
|
0134e4e55d | ||
|
|
5d4ab828ed | ||
|
|
7f393fdcd5 | ||
|
|
3c0abd6fe0 | ||
|
|
ded90b50bf | ||
|
|
9677be6d9e | ||
|
|
a4cf2ee80f | ||
|
|
2951253b15 | ||
|
|
e8ab351963 | ||
|
|
1242eac872 | ||
|
|
6f25472e6b | ||
|
|
de9250dd42 | ||
|
|
8fee417803 | ||
|
|
426da22b52 | ||
|
|
b0968adf1c | ||
|
|
7f7d197e42 | ||
|
|
d90ab27489 | ||
|
|
d2b8834675 | ||
|
|
4e4103f86b | ||
|
|
26037936e8 | ||
|
|
bc84808333 | ||
|
|
4e1832e59d | ||
|
|
a70bec4740 | ||
|
|
f6fcb214e5 | ||
|
|
6a8d55dbe8 | ||
|
|
cb4e9dbe8d | ||
|
|
6d3421d7f4 | ||
|
|
f6736f210a | ||
|
|
e7d65a297e | ||
|
|
c497645ee9 | ||
|
|
4fa9873f44 | ||
|
|
fe45d0953d | ||
|
|
ec0f2eaa60 | ||
|
|
06a95fae73 | ||
|
|
098622c6b9 | ||
|
|
599f1007ab | ||
|
|
157a099ed2 | ||
|
|
77e8672754 | ||
|
|
10ff1acd89 | ||
|
|
bada255057 | ||
|
|
b03bd6fe0a | ||
|
|
fbe97415cf | ||
|
|
27000b6163 | ||
|
|
c85c12bfaf | ||
|
|
d02f04c294 | ||
|
|
21962dda90 | ||
|
|
aaf7e861d5 | ||
|
|
7eea6ea1d5 | ||
|
|
28850a6cb8 | ||
|
|
2ab87dd3ad | ||
|
|
88404afb2b | ||
|
|
3b29305936 | ||
|
|
8ca0b041e3 | ||
|
|
e74d218d6e | ||
|
|
b66476ef4f | ||
|
|
006d665ce2 | ||
|
|
c8302b4fdf | ||
|
|
2c6c3a945e | ||
|
|
c907c52968 | ||
|
|
b275918de6 | ||
|
|
3ee3a5899b |
@@ -11,13 +11,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Run Fetch Dependencies Script
|
||||
run: cd scripts && bash ./fetch_dependencies.sh
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
uses: peter-evans/create-pull-request@v8
|
||||
with:
|
||||
token: ${{ secrets.REPO_SCOPED_TOKEN }}
|
||||
delete-branch: true
|
||||
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install system dependencies
|
||||
run: |
|
||||
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install system dependencies
|
||||
run: |
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
name: Linux (meson)
|
||||
|
||||
on:
|
||||
repository_dispatch:
|
||||
types: [create-pull-request]
|
||||
pull_request:
|
||||
push:
|
||||
paths-ignore:
|
||||
- '.gitignore'
|
||||
- 'LICENSE'
|
||||
- 'README.md'
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-24.04]
|
||||
arch: [x86_64]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
if: "!contains(github.event.head_commit.message, 'ci skip')"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install system dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install mesa-common-dev clang libsdl2-2.0-0 libsdl2-dev build-essential libvulkan-dev
|
||||
|
||||
- name: Python
|
||||
uses: actions/setup-python@v7
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
- name: Install Meson with pip
|
||||
run: sudo pip3 install meson
|
||||
|
||||
- name: Build with meson
|
||||
run: |
|
||||
meson build --prefix=$PWD/ --bindir='' --libdir=''
|
||||
ninja install -C build
|
||||
@@ -16,14 +16,14 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [macOS-latest]
|
||||
arch: [x86_64]
|
||||
arch: [x86_64, arm]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
if: "!contains(github.event.head_commit.message, 'ci skip')"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
|
||||
# Install system dependencies
|
||||
- name: Install Dependancies
|
||||
@@ -0,0 +1,42 @@
|
||||
name: macOS (meson)
|
||||
|
||||
on:
|
||||
repository_dispatch:
|
||||
types: [create-pull-request]
|
||||
pull_request:
|
||||
push:
|
||||
paths-ignore:
|
||||
- '.gitignore'
|
||||
- 'LICENSE'
|
||||
- 'README.md'
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [macOS-latest]
|
||||
arch: [x86_64, arm]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
if: "!contains(github.event.head_commit.message, 'ci skip')"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install system dependencies
|
||||
run: |
|
||||
brew install SDL2
|
||||
|
||||
- name: Python
|
||||
uses: actions/setup-python@v7
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
- name: Install Meson with pip
|
||||
run: sudo pip3 install meson
|
||||
|
||||
- name: Build with meson
|
||||
run: |
|
||||
meson build --prefix=$PWD/ --bindir='' --libdir=''
|
||||
ninja install -C build
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- uses: NcStudios/VulkanCI@v1.2
|
||||
|
||||
@@ -69,7 +69,7 @@ jobs:
|
||||
# Save dependencies
|
||||
- name: Save cached xmake dependencies
|
||||
if: ${{ !steps.restore-depcache.outputs.cache-hit }}
|
||||
uses: actions/cache/save@v4
|
||||
uses: actions/cache/save@v6
|
||||
with:
|
||||
path: ${{ env.XMAKE_GLOBALDIR }}/.xmake/packages
|
||||
key: ${{ steps.restore-depcache.outputs.cache-primary-key }}
|
||||
|
||||
@@ -16,7 +16,7 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [windows-latest]
|
||||
arch: [x64]
|
||||
arch: [x64, x86]
|
||||
mode: [release]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
run: echo "key=$(date +'%W')" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
|
||||
# Force xmake to a specific folder (for cache)
|
||||
- name: Set xmake env
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
name : Windows (Meson)
|
||||
|
||||
on:
|
||||
repository_dispatch:
|
||||
types: [create-pull-request]
|
||||
pull_request:
|
||||
push:
|
||||
paths-ignore:
|
||||
- '.gitignore'
|
||||
- 'LICENSE'
|
||||
- 'README.md'
|
||||
|
||||
jobs:
|
||||
VisualStudio:
|
||||
if: "!contains(github.event.head_commit.message, 'ci skip')"
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
platform: ['x64', 'x86']
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
# Install a 32-bit Python so building related stuff work.
|
||||
- name: Setup x86 Python
|
||||
if: matrix.platform == 'x86'
|
||||
uses: actions/setup-python@v7
|
||||
with:
|
||||
architecture: 'x86'
|
||||
python-version: '3.12'
|
||||
|
||||
- name: Install Meson & Ninja
|
||||
run: |
|
||||
python -m pip install meson ninja
|
||||
- uses: ilammy/msvc-dev-cmd@v1
|
||||
with:
|
||||
arch: ${{matrix.platform}}
|
||||
|
||||
- name: Compile mlx
|
||||
run: |
|
||||
meson setup builddir
|
||||
meson compile -C builddir
|
||||
|
||||
VisualStudio-clang-cl:
|
||||
if: "!contains(github.event.head_commit.message, 'ci skip')"
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
env:
|
||||
CC: clang-cl
|
||||
CXX: clang-cl
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install Meson & Ninja
|
||||
run: |
|
||||
python -m pip install meson ninja
|
||||
|
||||
- uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Compile mlx
|
||||
run: |
|
||||
meson setup builddir
|
||||
meson compile -C builddir
|
||||
|
||||
MSYS2:
|
||||
if: "!contains(github.event.head_commit.message, 'ci skip')"
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
platform: ['UCRT64', 'CLANG64']
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
msystem: ${{matrix.platform}}
|
||||
install: >-
|
||||
bison
|
||||
dos2unix
|
||||
flex
|
||||
git
|
||||
pacboy: >-
|
||||
cc:p
|
||||
cmake:p
|
||||
ninja:p
|
||||
pkgconf:p
|
||||
python-certifi:p
|
||||
python-pip:p
|
||||
# Make sure Python is updated to >=3.11 (fix https://github.com/msys2/MINGW-packages/issues/17415).
|
||||
update: true
|
||||
|
||||
- name: Install Meson
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
python -m pip install meson
|
||||
|
||||
- name: Compile mlx
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
meson setup builddir
|
||||
meson compile -C builddir
|
||||
@@ -23,3 +23,5 @@
|
||||
objs/
|
||||
build/
|
||||
example/Test
|
||||
subprojects/*/
|
||||
subprojects/.wraplock
|
||||
@@ -1,5 +1,5 @@
|
||||
MIT License
|
||||
Copyright (c) 2022-2024 kbz_8
|
||||
Copyright (c) 2022-2026 kbz_8
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -4,7 +4,6 @@ MAKE = make --no-print-directory
|
||||
OS ?= $(shell uname -s)
|
||||
DEBUG ?= false
|
||||
TOOLCHAIN ?= clang
|
||||
FORCE_INTEGRATED_GPU ?= false
|
||||
GRAPHICS_MEMORY_DUMP ?= false
|
||||
PROFILER ?= false
|
||||
FORCE_WAYLAND ?= false
|
||||
@@ -64,10 +63,6 @@ else
|
||||
CXXFLAGS += -O3
|
||||
endif
|
||||
|
||||
ifeq ($(FORCE_INTEGRATED_GPU), true)
|
||||
_ENABLEDFLAGS += FORCE_INTEGRATED_GPU
|
||||
endif
|
||||
|
||||
ifeq ($(GRAPHICS_MEMORY_DUMP), true)
|
||||
_ENABLEDFLAGS += GRAPHICS_MEMORY_DUMP
|
||||
endif
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<div align="center">
|
||||
<a href="https://github.com/seekrs/MacroLibX/actions/workflows/linux_clang.yml"><img src="https://github.com/seekrs/MacroLibX/actions/workflows/linux_clang.yml/badge.svg"></a>
|
||||
<a href="https://github.com/seekrs/MacroLibX/actions/workflows/linux_gcc.yml"><img src="https://github.com/seekrs/MacroLibX/actions/workflows/linux_gcc.yml/badge.svg"></a>
|
||||
<a href="https://github.com/seekrs/MacroLibX/actions/workflows/macos_x86.yml"><img src="https://github.com/seekrs/MacroLibX/actions/workflows/macos_x86.yml/badge.svg"></a>
|
||||
<a href="https://github.com/seekrs/MacroLibX/actions/workflows/macos.yml"><img src="https://github.com/seekrs/MacroLibX/actions/workflows/macos.yml/badge.svg"></a>
|
||||
</div>
|
||||
<div align="center">
|
||||
<a href="https://github.com/seekrs/MacroLibX/actions/workflows/windows.yml"><img src="https://github.com/seekrs/MacroLibX/actions/workflows/windows.yml/badge.svg"></a>
|
||||
@@ -103,9 +103,6 @@ MacroLibX has a strong safety support, mainly by checking every pointer that you
|
||||
### 🛠️ Set the toolchain
|
||||
If you want to use `GCC` to build the mlx you can use `make TOOLCHAIN=gcc`
|
||||
|
||||
### 🖥️ Force the integrated GPU (not recommended)
|
||||
You can force the mlx to use your integrated GPU by using `make FORCE_INTEGRATED_GPU=true`. Note that there are a lot of chances that your application crashes by using that.
|
||||
|
||||
### 💽 Dump the graphics memory
|
||||
The mlx can dump it's graphics memory use to json files every two seconds by enabling this option `make GRAPHICS_MEMORY_DUMP=true`.
|
||||
|
||||
|
||||
@@ -16,9 +16,6 @@ MacroLibX has a strong safety support, mainly by checking every pointer that you
|
||||
### 🛠️ Set the toolchain
|
||||
To change the compilation toolchain you can use `xmake config --toolchain=[gcc|clang|...]`
|
||||
|
||||
### 🖥️ Force the integrated GPU (not recommended)
|
||||
You can force the mlx to use your integrated GPU using `xmake config --force_integrated_gpu=y`. Note that there are a lot of chances that your application crashes by using that.
|
||||
|
||||
### 💽 Dump the graphics memory
|
||||
The mlx can dump it's graphics memory use to json files every two seconds by enabling this option `xmake config --graphics_memory_dump=y`.
|
||||
|
||||
|
||||
+10
-3
@@ -44,11 +44,16 @@ void update(void* param)
|
||||
mlx_set_font(mlx->mlx, "default");
|
||||
mlx_string_put(mlx->mlx, mlx->win, 20, 50, (mlx_color){ .rgba = 0xFFFFFFFF }, "that's a text");
|
||||
|
||||
int win_width;
|
||||
int win_height;
|
||||
|
||||
mlx_get_window_size(mlx->mlx, mlx->win, &win_width, &win_height);
|
||||
|
||||
uint32_t color = 0;
|
||||
for(int j = 0; j < 400; j++)
|
||||
for(int j = 0; j < win_height; j++)
|
||||
{
|
||||
mlx_pixel_put(mlx->mlx, mlx->win, j, j, (mlx_color){ .rgba = 0x0000FFFF + (color << 24) });
|
||||
mlx_pixel_put(mlx->mlx, mlx->win, 399 - j, j, (mlx_color){ .rgba = 0x0000FFFF });
|
||||
mlx_pixel_put(mlx->mlx, mlx->win, win_width - j, j, (mlx_color){ .rgba = 0x0000FFFF });
|
||||
color += (color < 255);
|
||||
}
|
||||
|
||||
@@ -172,6 +177,8 @@ int main(void)
|
||||
mlx.logo_png = mlx_new_image_from_file(mlx.mlx, "42_logo.png", &dummy, &dummy);
|
||||
mlx.logo_jpg = mlx_new_image_from_file(mlx.mlx, "42_logo.jpg", &dummy, &dummy);
|
||||
|
||||
mlx_set_window_icon(mlx.mlx, mlx.win, mlx.logo_png);
|
||||
|
||||
mlx_pixel_put(mlx.mlx, mlx.win, 200, 10, (mlx_color){ .rgba = 0xFF00FFFF });
|
||||
mlx_put_image_to_window(mlx.mlx, mlx.win, mlx.logo_png, 0, 0);
|
||||
|
||||
@@ -188,7 +195,7 @@ int main(void)
|
||||
mlx_destroy_image(mlx.mlx, mlx.logo_bmp);
|
||||
mlx_destroy_image(mlx.mlx, mlx.img);
|
||||
mlx_destroy_window(mlx.mlx, mlx.win);
|
||||
|
||||
|
||||
mlx_destroy_context(mlx.mlx);
|
||||
|
||||
return 0;
|
||||
|
||||
+18
-8
@@ -148,7 +148,7 @@ MLX_API void mlx_set_window_position(mlx_context mlx, mlx_window win, int x, int
|
||||
* @brief Sets window size
|
||||
*
|
||||
* @param mlx Internal MLX application
|
||||
* @param win Internal window to move
|
||||
* @param win Internal window to resize
|
||||
* @param width New width
|
||||
* @param height New height
|
||||
*/
|
||||
@@ -158,16 +158,25 @@ MLX_API void mlx_set_window_size(mlx_context mlx, mlx_window win, int width, int
|
||||
* @brief Sets window title
|
||||
*
|
||||
* @param mlx Internal MLX application
|
||||
* @param win Internal window to move
|
||||
* @param win Internal window to modify
|
||||
* @param title New title
|
||||
*/
|
||||
MLX_API void mlx_set_window_title(mlx_context mlx, mlx_window win, const char* title);
|
||||
|
||||
/**
|
||||
* @brief Sets window icon
|
||||
*
|
||||
* @param mlx Internal MLX application
|
||||
* @param win Internal window to modify
|
||||
* @param image New icon image
|
||||
*/
|
||||
MLX_API void mlx_set_window_icon(mlx_context mlx, mlx_window win, mlx_image image);
|
||||
|
||||
/**
|
||||
* @brief Enables/Disables window fullscreen mode
|
||||
*
|
||||
* @param mlx Internal MLX application
|
||||
* @param win Internal window to move
|
||||
* @param win Internal window to modify
|
||||
* @param enable Switch or not to fullscreen
|
||||
*/
|
||||
MLX_API void mlx_set_window_fullscreen(mlx_context mlx, mlx_window win, bool enable);
|
||||
@@ -176,7 +185,7 @@ MLX_API void mlx_set_window_fullscreen(mlx_context mlx, mlx_window win, bool ena
|
||||
* @brief Gets window position
|
||||
*
|
||||
* @param mlx Internal MLX application
|
||||
* @param win Internal window to move
|
||||
* @param win Internal window to get from
|
||||
* @param x Pointers to get position of the window
|
||||
* @param y Pointers to get position of the window
|
||||
*/
|
||||
@@ -186,7 +195,7 @@ MLX_API void mlx_get_window_position(mlx_context mlx, mlx_window win, int* x, in
|
||||
* @brief Gets window size
|
||||
*
|
||||
* @param mlx Internal MLX application
|
||||
* @param win Internal window to move
|
||||
* @param win Internal window to get from
|
||||
* @param x Pointers to get size of the window
|
||||
* @param y Pointers to get size of the window
|
||||
*/
|
||||
@@ -313,7 +322,10 @@ MLX_API void mlx_on_event(mlx_context mlx, mlx_window win, mlx_event_type event,
|
||||
* @param x X coordinate
|
||||
* @param y Y coordinate
|
||||
* @param color Color of the pixel
|
||||
*
|
||||
* WARNING: This function isn't performant, consider drawing to an image beforehand.
|
||||
*/
|
||||
MLX_DEPRECATED("Use an image rather than directly communicating with the window")
|
||||
MLX_API void mlx_pixel_put(mlx_context mlx, mlx_window win, int x, int y, mlx_color color);
|
||||
|
||||
|
||||
@@ -338,7 +350,7 @@ MLX_API mlx_image mlx_new_image(mlx_context mlx, int width, int height);
|
||||
* @param mlx Internal MLX application
|
||||
* @param filename Path to the png file
|
||||
* @param width Get the width of the image
|
||||
* @param heigth Get the height of the image
|
||||
* @param height Get the height of the image
|
||||
*
|
||||
* @return (mlx_image) An opaque handler to the internal image or MLX_NULL_HANDLE (0x0) in case of error
|
||||
*/
|
||||
@@ -407,7 +419,6 @@ MLX_API void mlx_string_put(mlx_context mlx, mlx_window win, int x, int y, mlx_c
|
||||
* @brief Loads a font to be used by `mlx_string_put`
|
||||
*
|
||||
* @param mlx Internal MLX application
|
||||
* @param win Internal window
|
||||
* @param filepath Filepath to the font or "default" to reset to the embedded font
|
||||
*/
|
||||
MLX_API void mlx_set_font(mlx_context mlx, char* filepath);
|
||||
@@ -416,7 +427,6 @@ MLX_API void mlx_set_font(mlx_context mlx, char* filepath);
|
||||
* @brief Loads a font to be used by `mlx_string_put` and scales it
|
||||
*
|
||||
* @param mlx Internal MLX application
|
||||
* @param win Internal window
|
||||
* @param filepath Filepath to the font or "default" to reset to the embedded font
|
||||
* @param scale Scale to apply to the font
|
||||
*/
|
||||
|
||||
+20
-2
@@ -75,7 +75,6 @@ MLX_API void mlx_restore_window(mlx_context mlx, mlx_window win);
|
||||
|
||||
/* Pixels drawing related functions */
|
||||
|
||||
|
||||
/**
|
||||
* @brief Put an array of pixels in the window
|
||||
*
|
||||
@@ -85,7 +84,12 @@ MLX_API void mlx_restore_window(mlx_context mlx, mlx_window win);
|
||||
* @param y Y coordinate
|
||||
* @param pixels Array of pixels
|
||||
* @param pixels_number Number of pixels
|
||||
*
|
||||
* Note: it is responsability of the user to make sure the size of `pixels` is
|
||||
* big enough for the given array.
|
||||
* WARNING: This function isn't performant, consider drawing to an image beforehand.
|
||||
*/
|
||||
MLX_DEPRECATED("Use an image rather than directly communicating with the window")
|
||||
MLX_API void mlx_pixel_put_array(mlx_context mlx, mlx_window win, int x, int y, mlx_color* pixels, size_t pixels_number);
|
||||
|
||||
/**
|
||||
@@ -101,13 +105,27 @@ MLX_API void mlx_pixel_put_array(mlx_context mlx, mlx_window win, int x, int y,
|
||||
*
|
||||
* Note: it is responsability of the user to make sure the size of `pixels` is
|
||||
* big enough for the given region.
|
||||
* WARNING: This function isn't performant, consider drawing to an image beforehand.
|
||||
*/
|
||||
MLX_DEPRECATED("Use an image rather than directly communicating with the window")
|
||||
MLX_API void mlx_pixel_put_region(mlx_context mlx, mlx_window win, int x, int y, int w, int h, mlx_color* pixels);
|
||||
|
||||
|
||||
|
||||
/* Images related functions */
|
||||
|
||||
/**
|
||||
* @brief Set image rectangle
|
||||
*
|
||||
* @param mlx Internal MLX application
|
||||
* @param img Internal image
|
||||
* @param x X coordinate in the image
|
||||
* @param y Y coordinate in the image
|
||||
* @param w Width of the rectangle
|
||||
* @param y Height of the rectangle
|
||||
* @param color Color of the rectangle
|
||||
*/
|
||||
MLX_API void mlx_set_image_rectangle(mlx_context mlx, mlx_image image, int x, int y, int w, int h, mlx_color color);
|
||||
|
||||
/**
|
||||
* @brief Get image region
|
||||
@@ -153,7 +171,7 @@ MLX_API void mlx_set_image_region(mlx_context mlx, mlx_image image, int x, int y
|
||||
* @param scale_y Scale y of the image
|
||||
* @param angle Rotation angle of the image (clockwise)
|
||||
*/
|
||||
MLX_API void mlx_put_transformed_image_to_window(mlx_context mlx, mlx_window win, mlx_image image, int x, int y, float scale_x, float scale_y, float angle);
|
||||
MLX_API void mlx_put_transformed_image_to_window(mlx_context mlx, mlx_window win, mlx_image image, float x, float y, float scale_x, float scale_y, float angle);
|
||||
|
||||
/**
|
||||
* @brief Get direct pointers to hidden functions
|
||||
|
||||
@@ -0,0 +1,168 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* mlx_keycodes.h :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: rprieur <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2026/08/09 00:15:49 by rprieur #+# #+# */
|
||||
/* Updated: 2026/08/09 00:16:30 by rprieur ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
// MacroLibX official repo https://github.com/seekrs/MacroLibX
|
||||
// MacroLibX official website https://macrolibx.kbz8.me/
|
||||
|
||||
#ifndef MACROLIB_X_KEYCODES_H
|
||||
#define MACROLIB_X_KEYCODES_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Event codes for physical keyboard keys
|
||||
*/
|
||||
typedef enum mlx_key_event_code
|
||||
{
|
||||
MLX_KEY_A = 4,
|
||||
MLX_KEY_B = 5,
|
||||
MLX_KEY_C = 6,
|
||||
MLX_KEY_D = 7,
|
||||
MLX_KEY_E = 8,
|
||||
MLX_KEY_F = 9,
|
||||
MLX_KEY_G = 10,
|
||||
MLX_KEY_H = 11,
|
||||
MLX_KEY_I = 12,
|
||||
MLX_KEY_J = 13,
|
||||
MLX_KEY_K = 14,
|
||||
MLX_KEY_L = 15,
|
||||
MLX_KEY_M = 16,
|
||||
MLX_KEY_N = 17,
|
||||
MLX_KEY_O = 18,
|
||||
MLX_KEY_P = 19,
|
||||
MLX_KEY_Q = 20,
|
||||
MLX_KEY_R = 21,
|
||||
MLX_KEY_S = 22,
|
||||
MLX_KEY_T = 23,
|
||||
MLX_KEY_U = 24,
|
||||
MLX_KEY_V = 25,
|
||||
MLX_KEY_W = 26,
|
||||
MLX_KEY_X = 27,
|
||||
MLX_KEY_Y = 28,
|
||||
MLX_KEY_Z = 29,
|
||||
MLX_KEY_1 = 30,
|
||||
MLX_KEY_2 = 31,
|
||||
MLX_KEY_3 = 32,
|
||||
MLX_KEY_4 = 33,
|
||||
MLX_KEY_5 = 34,
|
||||
MLX_KEY_6 = 35,
|
||||
MLX_KEY_7 = 36,
|
||||
MLX_KEY_8 = 37,
|
||||
MLX_KEY_9 = 38,
|
||||
MLX_KEY_0 = 39,
|
||||
MLX_KEY_RETURN = 40,
|
||||
MLX_KEY_ENTER = 40,
|
||||
MLX_KEY_ESCAPE = 41,
|
||||
MLX_KEY_BACKSPACE = 42,
|
||||
MLX_KEY_TAB = 43,
|
||||
MLX_KEY_SPACE = 44,
|
||||
MLX_KEY_MINUS = 45,
|
||||
MLX_KEY_EQUALS = 46,
|
||||
MLX_KEY_LEFTBRACKET = 47,
|
||||
MLX_KEY_RIGHTBRACKET = 48,
|
||||
MLX_KEY_BACKSLASH = 49,
|
||||
MLX_KEY_SEMICOLON = 51,
|
||||
MLX_KEY_APOSTROPHE = 52,
|
||||
MLX_KEY_GRAVE = 53,
|
||||
MLX_KEY_COMMA = 54,
|
||||
MLX_KEY_PERIOD = 55,
|
||||
MLX_KEY_SLASH = 56,
|
||||
MLX_KEY_CAPSLOCK = 57,
|
||||
MLX_KEY_F1 = 58,
|
||||
MLX_KEY_F2 = 59,
|
||||
MLX_KEY_F3 = 60,
|
||||
MLX_KEY_F4 = 61,
|
||||
MLX_KEY_F5 = 62,
|
||||
MLX_KEY_F6 = 63,
|
||||
MLX_KEY_F7 = 64,
|
||||
MLX_KEY_F8 = 65,
|
||||
MLX_KEY_F9 = 66,
|
||||
MLX_KEY_F10 = 67,
|
||||
MLX_KEY_F11 = 68,
|
||||
MLX_KEY_F12 = 69,
|
||||
MLX_KEY_PRINTSCREEN = 70,
|
||||
MLX_KEY_SCROLLLOCK = 71,
|
||||
MLX_KEY_PAUSE = 72,
|
||||
MLX_KEY_INSERT = 73,
|
||||
MLX_KEY_HOME = 74,
|
||||
MLX_KEY_PAGEUP = 75,
|
||||
MLX_KEY_DELETE = 76,
|
||||
MLX_KEY_END = 77,
|
||||
MLX_KEY_PAGEDOWN = 78,
|
||||
MLX_KEY_RIGHT = 79,
|
||||
MLX_KEY_LEFT = 80,
|
||||
MLX_KEY_DOWN = 81,
|
||||
MLX_KEY_UP = 82,
|
||||
MLX_KEY_NUMLOCKCLEAR = 83,
|
||||
MLX_KEY_KP_DIVIDE = 84,
|
||||
MLX_KEY_KP_MULTIPLY = 85,
|
||||
MLX_KEY_KP_MINUS = 86,
|
||||
MLX_KEY_KP_PLUS = 87,
|
||||
MLX_KEY_KP_ENTER = 88,
|
||||
MLX_KEY_KP_1 = 89,
|
||||
MLX_KEY_KP_2 = 90,
|
||||
MLX_KEY_KP_3 = 91,
|
||||
MLX_KEY_KP_4 = 92,
|
||||
MLX_KEY_KP_5 = 93,
|
||||
MLX_KEY_KP_6 = 94,
|
||||
MLX_KEY_KP_7 = 95,
|
||||
MLX_KEY_KP_8 = 96,
|
||||
MLX_KEY_KP_9 = 97,
|
||||
MLX_KEY_KP_0 = 98,
|
||||
MLX_KEY_KP_PERIOD = 99,
|
||||
MLX_KEY_LCTRL = 224,
|
||||
MLX_KEY_LSHIFT = 225,
|
||||
MLX_KEY_LALT = 226,
|
||||
MLX_KEY_LGUI = 227,
|
||||
MLX_KEY_RCTRL = 228,
|
||||
MLX_KEY_RSHIFT = 229,
|
||||
MLX_KEY_RALT = 230,
|
||||
MLX_KEY_RGUI = 231
|
||||
} mlx_key_codes;
|
||||
|
||||
/**
|
||||
* @brief Event codes for mouse buttons
|
||||
*/
|
||||
typedef enum mlx_mouse_code
|
||||
{
|
||||
MLX_MOUSE_LEFT = 1,
|
||||
MLX_MOUSE_MIDDLE = 2,
|
||||
MLX_MOUSE_RIGHT = 3,
|
||||
MLX_MOUSE_4 = 4,
|
||||
MLX_MOUSE_5 = 5,
|
||||
} mlx_mouse_code;
|
||||
|
||||
/**
|
||||
* @brief Event codes for window events
|
||||
*/
|
||||
typedef enum mlx_window_code
|
||||
{
|
||||
MLX_WINDOW_CLOSE = 0,
|
||||
MLX_WINDOW_MOVED = 1,
|
||||
MLX_WINDOW_MINIMIZED = 2,
|
||||
MLX_WINDOW_MAXIMIZED = 3,
|
||||
MLX_WINDOW_ENTER = 4,
|
||||
MLX_WINDOW_FOCUS = 5,
|
||||
MLX_WINDOW_LEAVE = 6,
|
||||
MLX_WINDOW_UNFOCUS = 7,
|
||||
MLX_WINDOW_SIZE_CHANGED = 8,
|
||||
MLX_WINDOW_RESIZED = 9,
|
||||
MLX_WINDOW_RESTORED = 11
|
||||
} mlx_window_code;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
+20
-1
@@ -83,6 +83,25 @@
|
||||
#define MLX_API
|
||||
#endif
|
||||
|
||||
#define MLX_NO_DEPRECATE
|
||||
#ifdef MLX_NO_DEPRECATE
|
||||
#define MLX_DEPRECATED(msg)
|
||||
#elif defined(__has_c_attribute)
|
||||
#if __has_c_attribute(deprecated)
|
||||
#define MLX_DEPRECATED(msg) [[deprecated(msg)]]
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef MLX_DEPRECATED
|
||||
#if defined(__GNUC__) || defined(__clang__)
|
||||
#define MLX_DEPRECATED(msg) __attribute__((deprecated(msg)))
|
||||
#elif defined(_MSC_VER)
|
||||
#define MLX_DEPRECATED(msg) __declspec(deprecated(msg))
|
||||
#else
|
||||
#define MLX_DEPRECATED(msg)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && (__ICC >= 600)) || defined(__ghs__)
|
||||
#define MLX_FUNC_SIG __PRETTY_FUNCTION__
|
||||
#elif defined(__DMC__) && (__DMC__ >= 0x810)
|
||||
@@ -206,7 +225,7 @@
|
||||
|
||||
typedef void (*mlx_function)(void);
|
||||
|
||||
#define MLX_VERSION MLX_MAKE_VERSION(2, 2, 0)
|
||||
#define MLX_VERSION MLX_MAKE_VERSION(2, 2, 4)
|
||||
#define MLX_TARGET_VULKAN_API_VERSION MLX_MAKE_VERSION(1, 0, 0)
|
||||
|
||||
// Checking common assumptions
|
||||
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
project('MacroLibX',
|
||||
['c', 'cpp'],
|
||||
version : '2.3.0',
|
||||
license : 'MIT',
|
||||
meson_version : '>= 0.63.0',
|
||||
default_options : [
|
||||
'warning_level=2',
|
||||
'optimization=3',
|
||||
'cpp_std=c++20',
|
||||
]
|
||||
)
|
||||
|
||||
add_project_arguments('-DSDL_MAIN_HANDLED', language : 'c')
|
||||
|
||||
if get_option('graphics_memory_dump')
|
||||
add_project_arguments('-DGRAPHICS_MEMORY_DUMP', language : 'c')
|
||||
endif
|
||||
|
||||
if get_option('profiler')
|
||||
add_project_arguments('-DPROFILER_ENABLED', language : 'c')
|
||||
endif
|
||||
|
||||
if get_option('force_wayland')
|
||||
add_project_arguments('-DFORCE_WAYLAND', language : 'c')
|
||||
endif
|
||||
|
||||
if get_option('disable_all_safeties')
|
||||
add_project_arguments('-DDISABLE_ALL_SAFETIES', language : 'c')
|
||||
endif
|
||||
|
||||
includes_directories = include_directories(
|
||||
'includes',
|
||||
'runtime/Includes',
|
||||
'runtime/Sources',
|
||||
'third_party',
|
||||
)
|
||||
|
||||
sources = files(
|
||||
'runtime/Sources/Core/Application.cpp',
|
||||
'runtime/Sources/Core/Bridge.cpp',
|
||||
'runtime/Sources/Core/EventBus.cpp',
|
||||
'runtime/Sources/Core/EventListener.cpp',
|
||||
'runtime/Sources/Core/Fps.cpp',
|
||||
'runtime/Sources/Core/Graphics.cpp',
|
||||
'runtime/Sources/Core/Logs.cpp',
|
||||
'runtime/Sources/Core/Memory.cpp',
|
||||
'runtime/Sources/Core/Profiler.cpp',
|
||||
'runtime/Sources/Core/SDLManager.cpp',
|
||||
'runtime/Sources/Core/UUID.cpp',
|
||||
'runtime/Sources/Graphics/Font.cpp',
|
||||
'runtime/Sources/Graphics/Mesh.cpp',
|
||||
'runtime/Sources/Graphics/PutPixelManager.cpp',
|
||||
'runtime/Sources/Graphics/Scene.cpp',
|
||||
'runtime/Sources/Graphics/Sprite.cpp',
|
||||
'runtime/Sources/Graphics/Text.cpp',
|
||||
'runtime/Sources/Platform/Inputs.cpp',
|
||||
'runtime/Sources/Platform/Window.cpp',
|
||||
'runtime/Sources/Renderer/Pipelines/Graphics.cpp',
|
||||
'runtime/Sources/Renderer/Pipelines/Shader.cpp',
|
||||
'runtime/Sources/Renderer/RenderPasses/2DPass.cpp',
|
||||
'runtime/Sources/Renderer/RenderPasses/FinalPass.cpp',
|
||||
'runtime/Sources/Renderer/RenderPasses/Passes.cpp',
|
||||
'runtime/Sources/Renderer/Vulkan/VulkanLoader.cpp',
|
||||
'runtime/Sources/Renderer/Buffer.cpp',
|
||||
'runtime/Sources/Renderer/Descriptor.cpp',
|
||||
'runtime/Sources/Renderer/Image.cpp',
|
||||
'runtime/Sources/Renderer/Memory.cpp',
|
||||
'runtime/Sources/Renderer/RenderCore.cpp',
|
||||
'runtime/Sources/Renderer/Renderer.cpp',
|
||||
'runtime/Sources/Renderer/SceneRenderer.cpp',
|
||||
'runtime/Sources/Renderer/Swapchain.cpp',
|
||||
)
|
||||
|
||||
mlx_headers = [
|
||||
'includes/mlx.h',
|
||||
'includes/mlx_extended.h',
|
||||
'includes/mlx_profile.h'
|
||||
]
|
||||
|
||||
install_headers(mlx_headers)
|
||||
|
||||
deps = dependency('sdl2')
|
||||
|
||||
libmlx = library('mlx',
|
||||
sources,
|
||||
include_directories : includes_directories,
|
||||
dependencies : deps,
|
||||
install : true)
|
||||
|
||||
libmlx_dep = declare_dependency(
|
||||
include_directories: includes_directories,
|
||||
dependencies : deps,
|
||||
link_with : libmlx)
|
||||
|
||||
meson.override_dependency('mlx', libmlx_dep)
|
||||
|
||||
# PKG CONFIG GENERATION
|
||||
pkg_mod = import('pkgconfig')
|
||||
|
||||
pkg_mod.generate(
|
||||
libmlx,
|
||||
name : 'mlx',
|
||||
description : 'MacroLibX Library',
|
||||
version : meson.project_version(),
|
||||
subdirs : ['.'],
|
||||
)
|
||||
@@ -0,0 +1,23 @@
|
||||
option('graphics_memory_dump',
|
||||
type : 'boolean',
|
||||
value : false,
|
||||
description : 'Enable graphics memory dump for debugging purposes.'
|
||||
)
|
||||
|
||||
option('profiler',
|
||||
type : 'boolean',
|
||||
value : false,
|
||||
description : 'Enable profiler for performance analysis.'
|
||||
)
|
||||
|
||||
option('force_wayland',
|
||||
type : 'boolean',
|
||||
value : false,
|
||||
description : 'Force the application to use Wayland display server.'
|
||||
)
|
||||
|
||||
option('disable_all_safeties',
|
||||
type : 'boolean',
|
||||
value : false,
|
||||
description : 'Disable all safety checks in the application.'
|
||||
)
|
||||
@@ -23,7 +23,7 @@ namespace mlx
|
||||
|
||||
inline void OnEvent(mlx_window win, int event, void(*f)(int, void*), void* param) noexcept;
|
||||
|
||||
inline mlx_window NewGraphicsSuport(const mlx_window_create_info* info);
|
||||
inline mlx_window NewGraphicsSupport(const mlx_window_create_info* info);
|
||||
inline NonOwningPtr<GraphicsSupport> GetGraphicsSupport(mlx_window win);
|
||||
inline void DestroyGraphicsSupport(mlx_window win);
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ namespace mlx
|
||||
m_fps.SetMaxFPS(fps);
|
||||
}
|
||||
|
||||
mlx_window Application::NewGraphicsSuport(const mlx_window_create_info* info)
|
||||
mlx_window Application::NewGraphicsSupport(const mlx_window_create_info* info)
|
||||
{
|
||||
MLX_PROFILE_FUNCTION();
|
||||
if(!info)
|
||||
@@ -68,6 +68,11 @@ namespace mlx
|
||||
Error("invalid window create info (NULL)");
|
||||
return nullptr;
|
||||
}
|
||||
if (info->title == nullptr)
|
||||
{
|
||||
Error("invalid window title (NULL)");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
mlx_window window;
|
||||
try { window = new mlx_window_handler; }
|
||||
@@ -134,7 +139,7 @@ namespace mlx
|
||||
{
|
||||
m_hooks.emplace_back(f, param);
|
||||
}
|
||||
|
||||
|
||||
void Application::LoopEnd() noexcept
|
||||
{
|
||||
m_in.Finish();
|
||||
|
||||
@@ -19,9 +19,10 @@ namespace mlx
|
||||
|
||||
enum class Event
|
||||
{
|
||||
ResizeEventCode = 56,
|
||||
FrameBeginEventCode = 57,
|
||||
FatalErrorEventCode = 168,
|
||||
ResizeEventCode = 1,
|
||||
SwapchainResizeEventCode,
|
||||
FrameBeginEventCode,
|
||||
FatalErrorEventCode,
|
||||
|
||||
EndEnum
|
||||
};
|
||||
|
||||
@@ -1,26 +1,30 @@
|
||||
#ifndef __MLX_FPS__
|
||||
#define __MLX_FPS__
|
||||
|
||||
#include <chrono>
|
||||
|
||||
namespace mlx
|
||||
{
|
||||
typedef std::chrono::steady_clock fps_clock;
|
||||
|
||||
class FpsManager
|
||||
{
|
||||
public:
|
||||
FpsManager() = default;
|
||||
|
||||
void Init();
|
||||
bool Update();
|
||||
inline void SetMaxFPS(std::uint32_t fps) noexcept { m_max_fps = fps; m_ns = 1000000000.0 / fps; }
|
||||
void WaitUntilNextFrame();
|
||||
inline void SetMaxFPS(std::uint32_t fps) noexcept { m_target_delta = fps_clock::duration(std::chrono::seconds(1)) / fps;}
|
||||
|
||||
~FpsManager() = default;
|
||||
|
||||
private:
|
||||
double m_ns = 1000000000.0 / 1'337'000.0;
|
||||
std::int64_t m_fps_before = 0;
|
||||
std::int64_t m_fps_now = 0;
|
||||
std::int64_t m_timer = 0;
|
||||
std::uint32_t m_max_fps = 1'337'000;
|
||||
std::uint32_t m_fps_elapsed_time = 0;
|
||||
fps_clock::time_point m_current_time;
|
||||
fps_clock::time_point m_target_time;
|
||||
fps_clock::time_point m_last_time_record;
|
||||
fps_clock::duration m_delta_time = fps_clock::duration().zero();
|
||||
fps_clock::duration m_target_delta = fps_clock::duration().zero();
|
||||
fps_clock::duration m_sleep_margin = std::chrono::microseconds(200);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace mlx
|
||||
void PixelPutArray(int x, int y, mlx_color* color, std::size_t pixels_size) noexcept;
|
||||
void PixelPutRegion(int x, int y, int w, int h, mlx_color* color) noexcept;
|
||||
void StringPut(int x, int y, mlx_color color, std::string str);
|
||||
void TexturePut(NonOwningPtr<class Texture> texture, int x, int y, float scale_x, float scale_y, float angle);
|
||||
void TexturePut(NonOwningPtr<class Texture> texture, float x, float y, float scale_x, float scale_y, float angle);
|
||||
|
||||
inline void TryEraseSpritesInScene(NonOwningPtr<Texture> texture) noexcept;
|
||||
|
||||
|
||||
@@ -47,7 +47,6 @@ namespace mlx
|
||||
|
||||
std::unordered_map<std::string, std::pair<std::size_t, ProfileResult>> m_profile_data;
|
||||
std::ofstream m_output_stream;
|
||||
std::mutex m_mutex;
|
||||
bool m_runtime_session_began = false;
|
||||
};
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <mlx.h>
|
||||
#include <Maths/Vec2.h>
|
||||
#include <Renderer/Image.h>
|
||||
|
||||
namespace mlx
|
||||
{
|
||||
@@ -20,13 +21,13 @@ namespace mlx
|
||||
void SetInputBinding(std::function<void(SDL_Event*)> functor);
|
||||
|
||||
VkSurfaceKHR CreateVulkanSurface(Handle window, VkInstance instance) const noexcept;
|
||||
std::vector<const char*> GetRequiredVulkanInstanceExtentions(Handle window) const noexcept;
|
||||
Vec2ui GetVulkanDrawableSize(Handle window) const noexcept;
|
||||
void MoveMouseOnWindow(Handle window, int x, int y) const noexcept;
|
||||
void GetScreenSizeWindowIsOn(Handle window, int* x, int* y) const noexcept;
|
||||
void SetWindowPosition(Handle window, int x, int y) const noexcept;
|
||||
void SetWindowSize(Handle window, int x, int y) const noexcept;
|
||||
void SetWindowTitle(Handle window, std::string_view title) const noexcept;
|
||||
void SetWindowIcon(Handle window, NonOwningPtr<Texture> texture) const noexcept;
|
||||
void SetWindowFullscreen(Handle window, bool enable) const noexcept;
|
||||
void SetWindowMaxSize(Handle window, int x, int y) const noexcept;
|
||||
void SetWindowMinSize(Handle window, int x, int y) const noexcept;
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace mlx
|
||||
class PutPixelManager
|
||||
{
|
||||
public:
|
||||
PutPixelManager(NonOwningPtr<class Renderer> renderer) : p_renderer(renderer) {}
|
||||
PutPixelManager(NonOwningPtr<class Renderer> renderer);
|
||||
|
||||
// Returns a valid pointer when a new texture has been created
|
||||
NonOwningPtr<Texture> DrawPixel(int x, int y, std::uint64_t draw_layer, mlx_color color);
|
||||
@@ -20,6 +20,7 @@ namespace mlx
|
||||
|
||||
private:
|
||||
NonOwningPtr<Texture> GetLayer(std::uint64_t draw_layer, bool& is_newlayer);
|
||||
std::unique_ptr<Texture> NewTexture();
|
||||
|
||||
private:
|
||||
std::unordered_map<std::uint64_t, NonOwningPtr<Texture>> m_placements;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <mlx.h>
|
||||
#include <Maths/Vec2.h>
|
||||
#include <Core/SDLManager.h>
|
||||
#include <Renderer/Image.h>
|
||||
|
||||
namespace mlx
|
||||
{
|
||||
@@ -24,6 +25,7 @@ namespace mlx
|
||||
MLX_FORCEINLINE void SetPosition(int x, int y) { SDLManager::Get().SetWindowPosition(p_window, x, y); }
|
||||
MLX_FORCEINLINE void SetSize(int x, int y) { SDLManager::Get().SetWindowSize(p_window, x, y); m_width = x; m_height = y; }
|
||||
MLX_FORCEINLINE void SetTitle(std::string title) { SDLManager::Get().SetWindowTitle(p_window, title); m_name = std::move(title); }
|
||||
MLX_FORCEINLINE void SetIcon(NonOwningPtr<Texture> texture) {SDLManager::Get().SetWindowIcon(p_window, texture); }
|
||||
MLX_FORCEINLINE void SetFullscreen(bool enable) { SDLManager::Get().SetWindowFullscreen(p_window, enable); }
|
||||
MLX_FORCEINLINE void SetMaxSize(int x, int y) { SDLManager::Get().SetWindowMaxSize(p_window, x, y); }
|
||||
MLX_FORCEINLINE void SetMinSize(int x, int y) { SDLManager::Get().SetWindowMinSize(p_window, x, y); }
|
||||
@@ -35,7 +37,6 @@ namespace mlx
|
||||
MLX_FORCEINLINE void GetSize(int* x, int* y) { *x = GetWidth(); *y = GetHeight(); }
|
||||
|
||||
MLX_FORCEINLINE VkSurfaceKHR CreateVulkanSurface(VkInstance instance) const noexcept { return SDLManager::Get().CreateVulkanSurface(p_window, instance); }
|
||||
MLX_FORCEINLINE std::vector<const char*> GetRequiredVulkanInstanceExtentions() const noexcept { return SDLManager::Get().GetRequiredVulkanInstanceExtentions(p_window); }
|
||||
MLX_FORCEINLINE Vec2ui GetVulkanDrawableSize() const noexcept { return SDLManager::Get().GetVulkanDrawableSize(p_window); }
|
||||
|
||||
[[nodiscard]] inline Handle GetRawHandle() const noexcept { return p_window; }
|
||||
|
||||
@@ -17,8 +17,21 @@
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
|
||||
#include <SDL2/SDL.h>
|
||||
#include <SDL2/SDL_vulkan.h>
|
||||
#if __has_include(<SDL2/SDL.h>)
|
||||
#include <SDL2/SDL.h>
|
||||
#elif __has_include(<SDL.h>)
|
||||
#include <SDL.h>
|
||||
#else
|
||||
#error Failed to find SDL2 headers
|
||||
#endif
|
||||
|
||||
#if __has_include(<SDL2/SDL_syswm.h>)
|
||||
#include <SDL2/SDL_syswm.h>
|
||||
#elif __has_include(<SDL_syswm.h>)
|
||||
#include <SDL_syswm.h>
|
||||
#else
|
||||
#error Failed to find SDL2 SysWMinfo
|
||||
#endif
|
||||
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
|
||||
@@ -86,10 +86,19 @@ namespace mlx
|
||||
void SetPixel(int x, int y, mlx_color color) noexcept;
|
||||
void SetRegion(int x, int y, int w, int h, mlx_color* color) noexcept;
|
||||
void SetLinearRegion(int x, int y, std::size_t len, mlx_color* color) noexcept;
|
||||
void SetRectangle(int x, int y, int w, int h, mlx_color color) noexcept;
|
||||
mlx_color GetPixel(int x, int y) noexcept;
|
||||
void GetRegion(int x, int y, int w, int h, mlx_color* dst) noexcept;
|
||||
void Clear(VkCommandBuffer cmd, Vec4f color) override;
|
||||
void CopyTo(Texture& other);
|
||||
void Resize(std::uint32_t width, std::uint32_t height);
|
||||
|
||||
void Swap(Texture& texture) noexcept;
|
||||
|
||||
mlx_color* GetBufferCopy() noexcept;
|
||||
|
||||
// If a valid cmd buffer is passed, this function takes ownership and makes it invalid after
|
||||
void SyncCPUBuffer(VkCommandBuffer cmd = VK_NULL_HANDLE);
|
||||
void Update(VkCommandBuffer cmd);
|
||||
|
||||
~Texture() override { Destroy(); }
|
||||
|
||||
@@ -123,5 +123,41 @@
|
||||
MLX_VULKAN_INSTANCE_FUNCTION(vkGetPhysicalDeviceSurfaceFormatsKHR)
|
||||
MLX_VULKAN_INSTANCE_FUNCTION(vkGetPhysicalDeviceSurfacePresentModesKHR)
|
||||
MLX_VULKAN_INSTANCE_FUNCTION(vkGetPhysicalDeviceSurfaceSupportKHR)
|
||||
|
||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||
#ifdef VK_KHR_android_surface
|
||||
MLX_VULKAN_INSTANCE_FUNCTION(vkCreateAndroidSurfaceKHR)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||
#ifdef VK_KHR_xcb_surface
|
||||
MLX_VULKAN_INSTANCE_FUNCTION(vkCreateXcbSurfaceKHR)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
||||
#ifdef VK_KHR_xlib_surface
|
||||
MLX_VULKAN_INSTANCE_FUNCTION(vkCreateXlibSurfaceKHR)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||
#ifdef VK_KHR_wayland_surface
|
||||
MLX_VULKAN_INSTANCE_FUNCTION(vkCreateWaylandSurfaceKHR)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||
#ifdef VK_KHR_win32_surface
|
||||
MLX_VULKAN_INSTANCE_FUNCTION(vkCreateWin32SurfaceKHR)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
||||
#ifdef VK_EXT_metal_surface
|
||||
MLX_VULKAN_INSTANCE_FUNCTION(vkCreateMetalSurfaceEXT)
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef __MLX_CPU_BUFFER__
|
||||
#define __MLX_CPU_BUFFER__
|
||||
|
||||
#include <PreCompiled.h>
|
||||
|
||||
namespace mlx
|
||||
{
|
||||
class CPUBuffer
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
namespace mlx
|
||||
{
|
||||
Application::Application() : p_mem_manager(std::make_unique<MemManager>()), p_sdl_manager(std::make_unique<SDLManager>()), m_fps(), m_in()
|
||||
Application::Application() : p_mem_manager(std::make_unique<MemManager>()), p_sdl_manager(std::make_unique<SDLManager>()), m_fps(), m_in()
|
||||
{
|
||||
MLX_PROFILE_FUNCTION();
|
||||
std::srand(std::time(nullptr));
|
||||
@@ -33,8 +33,7 @@ namespace mlx
|
||||
|
||||
while(m_in.IsRunning())
|
||||
{
|
||||
if(!m_fps.Update())
|
||||
continue;
|
||||
m_fps.WaitUntilNextFrame();
|
||||
|
||||
m_in.FetchInputs();
|
||||
|
||||
|
||||
@@ -45,10 +45,9 @@ extern "C"
|
||||
void mlx_set_fps_goal(mlx_context mlx, int fps)
|
||||
{
|
||||
MLX_CHECK_APPLICATION_POINTER(mlx);
|
||||
if(fps < 0)
|
||||
mlx::Error("You cannot set a negative FPS cap (nice try)");
|
||||
else
|
||||
mlx->app->SetFPSCap(static_cast<std::uint32_t>(fps));
|
||||
if(fps <= 0)
|
||||
fps = -1;
|
||||
mlx->app->SetFPSCap(static_cast<std::uint32_t>(fps));
|
||||
}
|
||||
|
||||
void mlx_destroy_context(mlx_context mlx)
|
||||
@@ -62,7 +61,7 @@ extern "C"
|
||||
mlx_window mlx_new_window(mlx_context mlx, const mlx_window_create_info* info)
|
||||
{
|
||||
MLX_CHECK_APPLICATION_POINTER(mlx);
|
||||
return mlx->app->NewGraphicsSuport(info);
|
||||
return mlx->app->NewGraphicsSupport(info);
|
||||
}
|
||||
|
||||
void mlx_destroy_window(mlx_context mlx, mlx_window win)
|
||||
@@ -92,12 +91,29 @@ extern "C"
|
||||
void mlx_set_window_title(mlx_context mlx, mlx_window win, const char* title)
|
||||
{
|
||||
MLX_CHECK_APPLICATION_POINTER(mlx);
|
||||
if (title == nullptr)
|
||||
{
|
||||
mlx::Error("invalid window title (NULL)");
|
||||
return;
|
||||
}
|
||||
mlx::NonOwningPtr<mlx::GraphicsSupport> gs = mlx->app->GetGraphicsSupport(win);
|
||||
if(!gs && !gs->HasWindow())
|
||||
return;
|
||||
gs->GetWindow()->SetTitle(title);
|
||||
}
|
||||
|
||||
void mlx_set_window_icon(mlx_context mlx, mlx_window win, mlx_image image)
|
||||
{
|
||||
MLX_CHECK_APPLICATION_POINTER(mlx);
|
||||
mlx::NonOwningPtr<mlx::GraphicsSupport> gs = mlx->app->GetGraphicsSupport(win);
|
||||
if(!gs && !gs->HasWindow())
|
||||
return;
|
||||
mlx::NonOwningPtr<mlx::Texture> texture = mlx->app->GetTexture(image);
|
||||
if(!texture)
|
||||
return;
|
||||
gs->GetWindow()->SetIcon(texture);
|
||||
}
|
||||
|
||||
void mlx_set_window_fullscreen(mlx_context mlx, mlx_window win, bool enable)
|
||||
{
|
||||
MLX_CHECK_APPLICATION_POINTER(mlx);
|
||||
@@ -238,6 +254,15 @@ extern "C"
|
||||
mlx::Error("Image loader: not a valid file format '%'", filename);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
{
|
||||
std::ifstream stream(file, std::ios::binary);
|
||||
if(!stream.is_open())
|
||||
{
|
||||
mlx::Error("Image loader: failed to open file '%'", filename);
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
return mlx->app->NewStbTexture(filename, width, height);
|
||||
}
|
||||
|
||||
@@ -304,12 +329,29 @@ extern "C"
|
||||
mlx::Error("Font loader: filepath is NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
std::filesystem::path file(filepath);
|
||||
if(std::strcmp(filepath, "default") != 0 && file.extension() != ".ttf" && file.extension() != ".tte")
|
||||
if (std::strcmp(filepath, "default") != 0 && !std::filesystem::exists(file))
|
||||
{
|
||||
mlx::Error("TTF loader: not a truetype font file '%'", filepath);
|
||||
mlx::Error("TTF loader: unable to find file '%'", filepath);
|
||||
return;
|
||||
}
|
||||
|
||||
if(std::strcmp(filepath, "default") != 0)
|
||||
{
|
||||
if(file.extension() != ".ttf" && file.extension() != ".tte")
|
||||
{
|
||||
mlx::Error("TTF loader: not a truetype font file '%'", filepath);
|
||||
return;
|
||||
}
|
||||
std::ifstream stream(file, std::ios::binary);
|
||||
if(!stream.is_open())
|
||||
{
|
||||
mlx::Error("TTF loader: failed to open font file '%'", filepath);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if(std::strcmp(filepath, "default") == 0)
|
||||
mlx->app->LoadFont(file, 6.f);
|
||||
else
|
||||
@@ -324,12 +366,29 @@ extern "C"
|
||||
mlx::Error("Font loader: filepath is NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
std::filesystem::path file(filepath);
|
||||
if(std::strcmp(filepath, "default") != 0 && file.extension() != ".ttf" && file.extension() != ".tte")
|
||||
if (std::strcmp(filepath, "default") != 0 && !std::filesystem::exists(file))
|
||||
{
|
||||
mlx::Error("TTF loader: not a truetype font file '%'", filepath);
|
||||
mlx::Error("TTF loader: unable to find file '%'", filepath);
|
||||
return;
|
||||
}
|
||||
|
||||
if(std::strcmp(filepath, "default") != 0)
|
||||
{
|
||||
if(file.extension() != ".ttf" && file.extension() != ".tte")
|
||||
{
|
||||
mlx::Error("TTF loader: not a truetype font file '%'", filepath);
|
||||
return;
|
||||
}
|
||||
std::ifstream stream(file, std::ios::binary);
|
||||
if(!stream.is_open())
|
||||
{
|
||||
mlx::Error("TTF loader: failed to open font file '%'", filepath);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
mlx->app->LoadFont(file, scale);
|
||||
}
|
||||
|
||||
@@ -398,6 +457,15 @@ extern "C"
|
||||
gs->PixelPutRegion(x, y, w, h, pixels);
|
||||
}
|
||||
|
||||
void mlx_set_image_rectangle(mlx_context mlx, mlx_image image, int x, int y, int w, int h, mlx_color color)
|
||||
{
|
||||
MLX_CHECK_APPLICATION_POINTER(mlx);
|
||||
mlx::NonOwningPtr<mlx::Texture> texture = mlx->app->GetTexture(image);
|
||||
if(!texture)
|
||||
return;
|
||||
texture->SetRectangle(x, y, w, h, color);
|
||||
}
|
||||
|
||||
void mlx_get_image_region(mlx_context mlx, mlx_image image, int x, int y, int w, int h, mlx_color* dst)
|
||||
{
|
||||
MLX_CHECK_APPLICATION_POINTER(mlx);
|
||||
@@ -416,7 +484,7 @@ extern "C"
|
||||
texture->SetRegion(x, y, w, h, pixels);
|
||||
}
|
||||
|
||||
void mlx_put_transformed_image_to_window(mlx_context mlx, mlx_window win, mlx_image image, int x, int y, float scale_x, float scale_y, float angle)
|
||||
void mlx_put_transformed_image_to_window(mlx_context mlx, mlx_window win, mlx_image image, float x, float y, float scale_x, float scale_y, float angle)
|
||||
{
|
||||
MLX_CHECK_APPLICATION_POINTER(mlx);
|
||||
mlx::NonOwningPtr<mlx::GraphicsSupport> gs = mlx->app->GetGraphicsSupport(win);
|
||||
@@ -479,7 +547,7 @@ extern "C"
|
||||
MLX_CHECK_APPLICATION_POINTER(mlx);
|
||||
mlx::NonOwningPtr<mlx::GraphicsSupport> gs = mlx->app->GetGraphicsSupport(win);
|
||||
if(!gs)
|
||||
return nullptr;
|
||||
return VK_NULL_HANDLE;
|
||||
return gs->GetRenderer().GetSwapchain().GetSurface();
|
||||
}
|
||||
|
||||
@@ -488,7 +556,7 @@ extern "C"
|
||||
MLX_CHECK_APPLICATION_POINTER(mlx);
|
||||
mlx::NonOwningPtr<mlx::GraphicsSupport> gs = mlx->app->GetGraphicsSupport(win);
|
||||
if(!gs || index > gs->GetRenderer().GetSwapchain().GetImagesCount())
|
||||
return nullptr;
|
||||
return VK_NULL_HANDLE;
|
||||
return gs->GetRenderer().GetSwapchain().GetSwapchainImages()[index].Get();
|
||||
}
|
||||
|
||||
@@ -506,7 +574,7 @@ extern "C"
|
||||
MLX_CHECK_APPLICATION_POINTER(mlx);
|
||||
mlx::NonOwningPtr<mlx::GraphicsSupport> gs = mlx->app->GetGraphicsSupport(win);
|
||||
if(!gs || index > gs->GetRenderer().GetSwapchain().GetImagesCount())
|
||||
return nullptr;
|
||||
return VK_NULL_HANDLE;
|
||||
return gs->GetRenderer().GetSwapchain().GetSwapchainImages()[index].GetImageView();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,30 +1,37 @@
|
||||
#include <PreCompiled.h>
|
||||
#include <Core/Fps.h>
|
||||
|
||||
#ifndef __APPLE__
|
||||
#include <emmintrin.h>
|
||||
#endif
|
||||
|
||||
namespace mlx
|
||||
{
|
||||
void FpsManager::Init()
|
||||
{
|
||||
m_timer = static_cast<std::uint64_t>(std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::high_resolution_clock::now().time_since_epoch()).count());
|
||||
m_fps_before = m_timer;
|
||||
m_fps_now = m_timer;
|
||||
m_current_time = fps_clock::now();
|
||||
m_target_time = m_current_time + m_target_delta;
|
||||
}
|
||||
|
||||
bool FpsManager::Update()
|
||||
void FpsManager::WaitUntilNextFrame()
|
||||
{
|
||||
using namespace std::chrono_literals;
|
||||
m_fps_now = static_cast<std::uint64_t>(std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::high_resolution_clock::now().time_since_epoch()).count());
|
||||
|
||||
if(std::chrono::duration<std::uint64_t>{m_fps_now - m_timer} >= 1s)
|
||||
m_timer += m_fps_now;
|
||||
|
||||
m_fps_elapsed_time = m_fps_now - m_fps_before;
|
||||
if(m_fps_elapsed_time >= m_ns)
|
||||
m_current_time = fps_clock::now();
|
||||
if(m_current_time < m_target_time)
|
||||
{
|
||||
m_fps_before += m_ns;
|
||||
return true;
|
||||
std::this_thread::sleep_until(m_target_time - m_sleep_margin);
|
||||
m_current_time = fps_clock::now();
|
||||
while (m_current_time < m_target_time)
|
||||
{
|
||||
#ifndef __APPLE__
|
||||
_mm_pause(); // reduces CPU usage on x86 without yielding
|
||||
#endif
|
||||
m_current_time = fps_clock::now();
|
||||
}
|
||||
}
|
||||
std::this_thread::sleep_for(std::chrono::duration<double, std::nano>(m_ns - 1));
|
||||
return false;
|
||||
else if (m_target_time < m_current_time - m_target_delta * 4)
|
||||
m_target_time = m_current_time;
|
||||
m_target_time += m_target_delta;
|
||||
m_delta_time = m_current_time - m_last_time_record;
|
||||
m_last_time_record = m_current_time;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,7 +136,7 @@ namespace mlx
|
||||
p_scene->BringToDrawLayer(text.Get(), m_draw_layer);
|
||||
}
|
||||
|
||||
void GraphicsSupport::TexturePut(NonOwningPtr<Texture> texture, int x, int y, float scale_x, float scale_y, float angle)
|
||||
void GraphicsSupport::TexturePut(NonOwningPtr<Texture> texture, float x, float y, float scale_x, float scale_y, float angle)
|
||||
{
|
||||
MLX_PROFILE_FUNCTION();
|
||||
NonOwningPtr<Sprite> sprite = p_scene->GetSpriteFromTexturePositionScaleRotation(texture, Vec2f{ static_cast<float>(x), static_cast<float>(y) }, scale_x, scale_y, angle);
|
||||
@@ -146,14 +146,14 @@ namespace mlx
|
||||
{
|
||||
m_draw_layer++;
|
||||
m_pixelput_called = false;
|
||||
}
|
||||
}
|
||||
Sprite& new_sprite = p_scene->CreateSprite(texture);
|
||||
new_sprite.SetCenter(Vec2f{ texture->GetWidth() * 0.5f, texture->GetHeight() * 0.5f });
|
||||
new_sprite.SetPosition(Vec2f{ static_cast<float>(x), static_cast<float>(y) });
|
||||
new_sprite.SetScale(Vec2f{ scale_x, scale_y });
|
||||
new_sprite.SetRotation(angle);
|
||||
}
|
||||
else if(!p_scene->IsTextureAtGivenDrawLayer(texture, m_draw_layer))
|
||||
else if(!p_scene->IsTextureAtGivenDrawLayer(texture, m_draw_layer))
|
||||
p_scene->BringToDrawLayer(sprite.Get(), m_draw_layer);
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace mlx
|
||||
|
||||
void* MemManager::AlignedMalloc(std::size_t alignment, std::size_t size)
|
||||
{
|
||||
#ifdef MLX_COMPILER_MSVC
|
||||
#ifdef MLX_PLAT_WINDOWS
|
||||
void* ptr = _aligned_malloc(size, alignment);
|
||||
#else
|
||||
if(alignment < sizeof(void*))
|
||||
@@ -66,7 +66,7 @@ namespace mlx
|
||||
{
|
||||
auto it = std::find_if(s_blocks.begin(), s_blocks.end(), [=](const Descriptor& rhs){ return ptr == rhs.ptr; });
|
||||
|
||||
#ifdef MLX_COMPILER_MSVC
|
||||
#ifdef MLX_PLAT_WINDOWS
|
||||
void* ptr2 = _aligned_realloc(ptr, size, alignment);
|
||||
if(it != s_blocks.end())
|
||||
s_blocks.erase(it);
|
||||
@@ -90,7 +90,7 @@ namespace mlx
|
||||
auto it = std::find_if(s_blocks.begin(), s_blocks.end(), [=](const Descriptor& rhs){ return ptr == rhs.ptr; });
|
||||
if(it == s_blocks.end())
|
||||
return;
|
||||
#ifdef MLX_COMPILER_MSVC
|
||||
#ifdef MLX_PLAT_WINDOWS
|
||||
if(it->aligned)
|
||||
_aligned_free(it->ptr);
|
||||
else
|
||||
@@ -105,7 +105,7 @@ namespace mlx
|
||||
{
|
||||
for(const Descriptor& desc : s_blocks)
|
||||
{
|
||||
#ifdef MLX_COMPILER_MSVC
|
||||
#ifdef MLX_PLAT_WINDOWS
|
||||
if(desc.aligned)
|
||||
_aligned_free(desc.ptr);
|
||||
else
|
||||
|
||||
@@ -8,7 +8,6 @@ namespace mlx
|
||||
|
||||
void Profiler::BeginRuntimeSession()
|
||||
{
|
||||
std::lock_guard lock(m_mutex);
|
||||
if(m_runtime_session_began)
|
||||
return;
|
||||
m_output_stream.open("./runtime_profile.mlx.json", std::ofstream::out | std::ofstream::trunc);
|
||||
@@ -22,7 +21,6 @@ namespace mlx
|
||||
|
||||
void Profiler::AppendProfileData(ProfileResult&& result)
|
||||
{
|
||||
std::lock_guard lock(m_mutex);
|
||||
auto it = m_profile_data.find(result.name);
|
||||
if(it != m_profile_data.end())
|
||||
{
|
||||
@@ -49,7 +47,6 @@ namespace mlx
|
||||
|
||||
void Profiler::EndRuntimeSession()
|
||||
{
|
||||
std::lock_guard lock(m_mutex);
|
||||
if(!m_runtime_session_began)
|
||||
return;
|
||||
for(auto& [_, pair] : m_profile_data)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
#include "Utils/Buffer.h"
|
||||
#include "mlx.h"
|
||||
#include <PreCompiled.h>
|
||||
#include <Core/SDLManager.h>
|
||||
#include <Core/Memory.h>
|
||||
@@ -43,7 +45,7 @@ namespace mlx
|
||||
Internal::WindowInfos* infos = new Internal::WindowInfos;
|
||||
Verify(infos != nullptr, "SDL: window allocation failed");
|
||||
|
||||
std::uint32_t flags = SDL_WINDOW_VULKAN;
|
||||
std::uint32_t flags = 0;
|
||||
if(hidden)
|
||||
flags |= SDL_WINDOW_HIDDEN;
|
||||
else
|
||||
@@ -56,7 +58,12 @@ namespace mlx
|
||||
infos->window = SDL_CreateWindow(info->title, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, info->width, info->height, flags);
|
||||
if(!infos->window)
|
||||
FatalError("SDL: unable to open a new window; %", SDL_GetError());
|
||||
infos->icon = SDL_CreateRGBSurfaceFrom(static_cast<void*>(logo_mlx), logo_mlx_width, logo_mlx_height, 32, 4 * logo_mlx_width, Rmask(), Gmask(), Bmask(), Amask());
|
||||
|
||||
mlx_color* buffer = new mlx_color[logo_mlx_size];
|
||||
std::memcpy(buffer, logo_mlx, logo_mlx_size);
|
||||
infos->icon = SDL_CreateRGBSurfaceFrom(buffer, logo_mlx_width, logo_mlx_height, 32, logo_mlx_width * 4, Rmask(), Gmask(), Bmask(), Amask());
|
||||
if(!infos->icon)
|
||||
FatalError("SDL: unable to create a window icon; %", SDL_GetError());
|
||||
SDL_SetWindowIcon(infos->window, infos->icon);
|
||||
|
||||
m_windows_registry.insert(infos);
|
||||
@@ -74,7 +81,10 @@ namespace mlx
|
||||
if(infos->window != nullptr)
|
||||
SDL_DestroyWindow(infos->window);
|
||||
if(infos->icon != nullptr)
|
||||
{
|
||||
delete[] reinterpret_cast<mlx_color*>(infos->icon->pixels);
|
||||
SDL_FreeSurface(infos->icon);
|
||||
}
|
||||
|
||||
m_windows_registry.erase(infos);
|
||||
delete infos;
|
||||
@@ -88,28 +98,38 @@ namespace mlx
|
||||
|
||||
VkSurfaceKHR SDLManager::CreateVulkanSurface(Handle window, VkInstance instance) const noexcept
|
||||
{
|
||||
VkSurfaceKHR surface;
|
||||
if(!SDL_Vulkan_CreateSurface(static_cast<Internal::WindowInfos*>(window)->window, instance, &surface))
|
||||
FatalError("SDL: could not create a Vulkan surface; %", SDL_GetError());
|
||||
return surface;
|
||||
}
|
||||
SDL_SysWMinfo info;
|
||||
SDL_VERSION(&info.version);
|
||||
if(SDL_GetWindowWMInfo(static_cast<Internal::WindowInfos*>(window)->window, &info) != SDL_TRUE)
|
||||
FatalError("SDL Manager: cannot retrieve window informations");
|
||||
|
||||
std::vector<const char*> SDLManager::GetRequiredVulkanInstanceExtentions(Handle window) const noexcept
|
||||
{
|
||||
std::uint32_t count;
|
||||
if(!SDL_Vulkan_GetInstanceExtensions(static_cast<Internal::WindowInfos*>(window)->window, &count, nullptr))
|
||||
FatalError("SDL Manager: could not retrieve Vulkan instance extensions");
|
||||
std::vector<const char*> extensions(count);
|
||||
if(!SDL_Vulkan_GetInstanceExtensions(static_cast<Internal::WindowInfos*>(window)->window, &count, extensions.data()))
|
||||
FatalError("SDL Manager: could not retrieve Vulkan instance extensions");
|
||||
extensions.push_back(VK_KHR_SURFACE_EXTENSION_NAME);
|
||||
return extensions;
|
||||
switch(info.subsystem)
|
||||
{
|
||||
#ifdef SDL_VIDEO_DRIVER_WINDOWS
|
||||
case SDL_SYSWM_WINDOWS: return kvfCreateSurfaceKHR(instance, KVF_SURFACE_WINDOWS, static_cast<void*>(info.info.win.hinstance), static_cast<void*>(info.info.win.window));
|
||||
#endif
|
||||
#ifdef SDL_VIDEO_DRIVER_X11
|
||||
case SDL_SYSWM_X11: return kvfCreateSurfaceKHR(instance, KVF_SURFACE_XLIB, static_cast<void*>(info.info.x11.display), static_cast<void*>(&info.info.x11.window));
|
||||
#endif
|
||||
#ifdef SDL_VIDEO_DRIVER_COCOA
|
||||
case SDL_SYSWM_COCOA: FatalError("SDL Manager: Vulkan surfaces over Metal are not supported yet. Please fill an issue here https://github.com/seekrs/MacroLibX/issues/new");
|
||||
#endif
|
||||
#ifdef SDL_VIDEO_DRIVER_WAYLAND
|
||||
case SDL_SYSWM_WAYLAND: return kvfCreateSurfaceKHR(instance, KVF_SURFACE_WAYLAND, static_cast<void*>(info.info.wl.display), static_cast<void*>(info.info.wl.surface));
|
||||
#endif
|
||||
#ifdef SDL_VIDEO_DRIVER_ANDROID
|
||||
case SDL_SYSWM_ANDROID: return kvfCreateSurfaceKHR(instance, KVF_SURFACE_ANDROID, nullptr, static_cast<void*>(info.info.android.window));
|
||||
#endif
|
||||
|
||||
default : FatalError("SDL Manager: unsupported windowing system"); break;
|
||||
}
|
||||
return VK_NULL_HANDLE;
|
||||
}
|
||||
|
||||
Vec2ui SDLManager::GetVulkanDrawableSize(Handle window) const noexcept
|
||||
{
|
||||
Vec2i extent;
|
||||
SDL_Vulkan_GetDrawableSize(static_cast<Internal::WindowInfos*>(window)->window, &extent.x, &extent.y);
|
||||
SDL_GetWindowSize(static_cast<Internal::WindowInfos*>(window)->window, &extent.x, &extent.y);
|
||||
return Vec2ui{ extent };
|
||||
}
|
||||
|
||||
@@ -142,6 +162,21 @@ namespace mlx
|
||||
SDL_SetWindowTitle(static_cast<Internal::WindowInfos*>(window)->window, title.data());
|
||||
}
|
||||
|
||||
void SDLManager::SetWindowIcon(Handle window, NonOwningPtr<Texture> texture) const noexcept
|
||||
{
|
||||
Internal::WindowInfos* infos = static_cast<Internal::WindowInfos*>(window);
|
||||
if(infos->icon != nullptr)
|
||||
{
|
||||
delete[] reinterpret_cast<mlx_color*>(infos->icon->pixels);
|
||||
SDL_FreeSurface(infos->icon);
|
||||
}
|
||||
|
||||
int width = texture->GetWidth(), height = texture->GetHeight();
|
||||
|
||||
infos->icon = SDL_CreateRGBSurfaceFrom(texture->GetBufferCopy(), width, height, 32, width * 4, Rmask(), Gmask(), Bmask(), Amask());
|
||||
SDL_SetWindowIcon(infos->window, infos->icon);
|
||||
}
|
||||
|
||||
void SDLManager::SetWindowFullscreen(Handle window, bool enable) const noexcept
|
||||
{
|
||||
SDL_SetWindowFullscreen(static_cast<Internal::WindowInfos*>(window)->window, (enable ? SDL_WINDOW_FULLSCREEN_DESKTOP : 0));
|
||||
@@ -266,6 +301,8 @@ namespace mlx
|
||||
case SDL_WINDOWEVENT_LEAVE: functor(MLX_WINDOW_EVENT, id, 6); break;
|
||||
case SDL_WINDOWEVENT_FOCUS_LOST: functor(MLX_WINDOW_EVENT, id, 7); break;
|
||||
case SDL_WINDOWEVENT_SIZE_CHANGED: functor(MLX_WINDOW_EVENT, id, 8); break;
|
||||
case SDL_WINDOWEVENT_RESIZED: functor(MLX_WINDOW_EVENT, id, 9); break;
|
||||
case SDL_WINDOWEVENT_RESTORED: functor(MLX_WINDOW_EVENT, id, 11); break;
|
||||
|
||||
default : break;
|
||||
}
|
||||
@@ -284,6 +321,7 @@ namespace mlx
|
||||
{
|
||||
if(m_drop_sdl_responsability)
|
||||
return;
|
||||
|
||||
SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_EVENTS);
|
||||
SDL_Quit();
|
||||
s_instance = nullptr;
|
||||
|
||||
@@ -6,6 +6,29 @@
|
||||
|
||||
namespace mlx
|
||||
{
|
||||
PutPixelManager::PutPixelManager(NonOwningPtr<class Renderer> renderer) : p_renderer(renderer)
|
||||
{
|
||||
MLX_PROFILE_FUNCTION();
|
||||
std::function<void(const EventBase&)> functor = [this](const EventBase& event)
|
||||
{
|
||||
// Suboptimal for multi-windows applications
|
||||
if(event.What() == Event::ResizeEventCode)
|
||||
{
|
||||
VkExtent2D extent{ .width = 0, .height = 0 };
|
||||
if(p_renderer->GetWindow())
|
||||
extent = kvfGetSwapchainImagesSize(p_renderer->GetSwapchain().Get());
|
||||
else if(p_renderer->GetRenderTarget())
|
||||
extent = VkExtent2D{ .width = p_renderer->GetRenderTarget()->GetWidth(), .height = p_renderer->GetRenderTarget()->GetHeight() };
|
||||
else
|
||||
FatalError("a renderer was created without window nor render target attached (wtf!?)");
|
||||
|
||||
for(auto& texture : m_textures)
|
||||
texture->Resize(extent.width, extent.height);
|
||||
}
|
||||
};
|
||||
EventBus::RegisterListener({ functor, "mlx_put_pixel_manager_" + std::to_string(reinterpret_cast<std::uintptr_t>(this)) });
|
||||
}
|
||||
|
||||
NonOwningPtr<Texture> PutPixelManager::DrawPixel(int x, int y, std::uint64_t draw_layer, mlx_color color)
|
||||
{
|
||||
MLX_PROFILE_FUNCTION();
|
||||
@@ -53,21 +76,8 @@ namespace mlx
|
||||
is_newlayer = true;
|
||||
|
||||
if(m_current_texture_index >= m_textures.size())
|
||||
{
|
||||
VkExtent2D extent{ .width = 0, .height = 0 };
|
||||
if(p_renderer->GetWindow())
|
||||
extent = kvfGetSwapchainImagesSize(p_renderer->GetSwapchain().Get());
|
||||
else if(p_renderer->GetRenderTarget())
|
||||
extent = VkExtent2D{ .width = p_renderer->GetRenderTarget()->GetWidth(), .height = p_renderer->GetRenderTarget()->GetHeight() };
|
||||
else
|
||||
FatalError("a renderer was created without window nor render target attached (wtf)");
|
||||
m_textures.push_back(NewTexture());
|
||||
|
||||
#ifdef DEBUG
|
||||
m_textures.push_back(std::make_unique<Texture>(CPUBuffer{}, extent.width, extent.height, VK_FORMAT_R8G8B8A8_SRGB, false, "mlx_put_pixel_layer_" + std::to_string(m_current_texture_index)));
|
||||
#else
|
||||
m_textures.push_back(std::make_unique<Texture>(CPUBuffer{}, extent.width, extent.height, VK_FORMAT_R8G8B8A8_SRGB, false, std::string_view{}));
|
||||
#endif
|
||||
}
|
||||
try
|
||||
{
|
||||
m_placements[draw_layer] = m_textures.at(m_current_texture_index).get();
|
||||
@@ -83,6 +93,23 @@ namespace mlx
|
||||
}
|
||||
}
|
||||
|
||||
std::unique_ptr<Texture> PutPixelManager::NewTexture()
|
||||
{
|
||||
VkExtent2D extent{ .width = 0, .height = 0 };
|
||||
if(p_renderer->GetWindow())
|
||||
extent = kvfGetSwapchainImagesSize(p_renderer->GetSwapchain().Get());
|
||||
else if(p_renderer->GetRenderTarget())
|
||||
extent = VkExtent2D{ .width = p_renderer->GetRenderTarget()->GetWidth(), .height = p_renderer->GetRenderTarget()->GetHeight() };
|
||||
else
|
||||
FatalError("a renderer was created without window nor render target attached (wtf!?)");
|
||||
|
||||
#ifdef DEBUG
|
||||
return std::make_unique<Texture>(CPUBuffer{}, extent.width, extent.height, VK_FORMAT_R8G8B8A8_SRGB, false, "mlx_put_pixel_layer_" + std::to_string(m_current_texture_index));
|
||||
#else
|
||||
return std::make_unique<Texture>(CPUBuffer{}, extent.width, extent.height, VK_FORMAT_R8G8B8A8_SRGB, false, std::string_view{});
|
||||
#endif
|
||||
}
|
||||
|
||||
void PutPixelManager::ResetRenderData()
|
||||
{
|
||||
m_placements.clear();
|
||||
|
||||
@@ -8,9 +8,9 @@ namespace mlx
|
||||
{
|
||||
namespace Internal
|
||||
{
|
||||
struct ResizeEventBroadcast : public EventBase
|
||||
struct SwapchainResizeEventBroadcast : public EventBase
|
||||
{
|
||||
Event What() const override { return Event::ResizeEventCode; }
|
||||
Event What() const override { return Event::SwapchainResizeEventCode; }
|
||||
};
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace mlx
|
||||
if(!m_events_hooks.contains(window_id) || m_events_hooks[window_id][event].empty())
|
||||
return;
|
||||
if(event == MLX_WINDOW_EVENT && code == 8)
|
||||
EventBus::SendBroadcast(Internal::ResizeEventBroadcast{});
|
||||
EventBus::SendBroadcast(Internal::SwapchainResizeEventBroadcast{});
|
||||
for(const auto& hook : m_events_hooks[window_id][event])
|
||||
{
|
||||
if(hook.fn)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
#include "Utils/Buffer.h"
|
||||
#include "mlx.h"
|
||||
#include <PreCompiled.h>
|
||||
#include <Renderer/Image.h>
|
||||
#include <Maths/Vec4.h>
|
||||
@@ -24,7 +26,7 @@
|
||||
|
||||
namespace mlx
|
||||
{
|
||||
mlx_color ReverseColor(mlx_color color)
|
||||
MLX_FORCEINLINE mlx_color ReverseColor(mlx_color color)
|
||||
{
|
||||
mlx_color reversed_color;
|
||||
reversed_color.r = color.a;
|
||||
@@ -226,25 +228,34 @@ namespace mlx
|
||||
void Texture::SetRegion(int x, int y, int w, int h, mlx_color* pixels) noexcept
|
||||
{
|
||||
MLX_PROFILE_FUNCTION();
|
||||
if(x < 0 || y < 0 || static_cast<std::uint32_t>(x) >= m_width || static_cast<std::uint32_t>(y) >= m_height)
|
||||
return;
|
||||
if(w < 0 || h < 0)
|
||||
if(w < 0 || h < 0 || x < -w || y < -h
|
||||
|| x >= static_cast<int>(m_width) || y >= static_cast<int>(m_height))
|
||||
return;
|
||||
if(!m_staging_buffer.has_value())
|
||||
OpenCPUBuffer();
|
||||
for(std::uint32_t i = 0, moving_x = x, moving_y = y;; i++, moving_x++)
|
||||
const int
|
||||
start_x = std::max<int>(x, 0),
|
||||
start_y = std::max<int>(y, 0),
|
||||
start_row = start_y * m_width,
|
||||
start_i = (start_y - y) * w + (start_x - x),
|
||||
end_x = std::min<int>(x + w, m_width),
|
||||
end_y = std::min<int>(y + h, m_height),
|
||||
end_row = end_y * m_width,
|
||||
incr = (x + w) - end_x + (start_x - x);
|
||||
for(int i = start_i, dx = start_x, row = start_row;; i++, dx++)
|
||||
{
|
||||
if(moving_x >= static_cast<std::uint32_t>(x + w) || moving_x >= m_width)
|
||||
if(dx >= end_x)
|
||||
{
|
||||
moving_x = x;
|
||||
moving_y++;
|
||||
if(moving_y >= static_cast<std::uint32_t>(y + h) || moving_y >= m_height)
|
||||
i += incr;
|
||||
dx = start_x;
|
||||
row += m_width;
|
||||
if(row >= end_row)
|
||||
break;
|
||||
}
|
||||
if constexpr(std::endian::native == std::endian::little)
|
||||
m_staging_buffer->GetMap<mlx_color*>()[(moving_y * m_width) + moving_x] = ReverseColor(pixels[i]);
|
||||
m_staging_buffer->GetMap<mlx_color*>()[row + dx] = ReverseColor(pixels[i]);
|
||||
else
|
||||
m_staging_buffer->GetMap<mlx_color*>()[(moving_y * m_width) + moving_x] = pixels[i];
|
||||
m_staging_buffer->GetMap<mlx_color*>()[row + dx] = pixels[i];
|
||||
}
|
||||
m_has_been_modified = true;
|
||||
}
|
||||
@@ -252,23 +263,55 @@ namespace mlx
|
||||
void Texture::SetLinearRegion(int x, int y, std::size_t len, mlx_color* pixels) noexcept
|
||||
{
|
||||
MLX_PROFILE_FUNCTION();
|
||||
if(x < 0 || y < 0 || static_cast<std::uint32_t>(x) >= m_width || static_cast<std::uint32_t>(y) >= m_height)
|
||||
if(x >= static_cast<int>(m_width) || y >= static_cast<int>(m_height))
|
||||
return;
|
||||
if(!m_staging_buffer.has_value())
|
||||
OpenCPUBuffer();
|
||||
int
|
||||
start = y * m_width + x,
|
||||
dest_start = std::max<int>(start, 0),
|
||||
src_start = dest_start - start,
|
||||
dest_end = std::min<int>(start + len, m_width * m_height);
|
||||
if constexpr(std::endian::native == std::endian::little)
|
||||
{
|
||||
for(std::size_t i = 0; i < len && (y * m_width) + x + i < m_width * m_height; i++)
|
||||
m_staging_buffer->GetMap<mlx_color*>()[(y * m_width) + x + i] = ReverseColor(pixels[i]);
|
||||
for(int i = dest_start, j = src_start; i < dest_end; i++, j++)
|
||||
m_staging_buffer->GetMap<mlx_color*>()[i] = ReverseColor(pixels[j]);
|
||||
}
|
||||
else
|
||||
{
|
||||
std::size_t len_guard;
|
||||
if((y * m_width + x + len) < m_width * m_height)
|
||||
len_guard = len;
|
||||
std::memcpy(
|
||||
&m_staging_buffer->GetMap<mlx_color*>()[dest_start],
|
||||
&pixels[src_start], dest_end - dest_start);
|
||||
}
|
||||
m_has_been_modified = true;
|
||||
}
|
||||
|
||||
void Texture::SetRectangle(int x, int y, int w, int h, mlx_color color) noexcept
|
||||
{
|
||||
MLX_PROFILE_FUNCTION();
|
||||
if(w < 0 || h < 0 || x < -w || y < -h
|
||||
|| x >= static_cast<int>(m_width) || y >= static_cast<int>(m_height))
|
||||
return;
|
||||
if(!m_staging_buffer.has_value())
|
||||
OpenCPUBuffer();
|
||||
const int
|
||||
start_x = std::max<int>(x, 0),
|
||||
start_row = std::max<int>(y, 0) * m_width,
|
||||
end_x = std::min<int>(x + w, m_width),
|
||||
end_row = std::min<int>(y + h, m_height) * m_width;
|
||||
for(int dx = start_x, row = start_row;; dx++)
|
||||
{
|
||||
if(dx >= end_x)
|
||||
{
|
||||
dx = start_x;
|
||||
row += m_width;
|
||||
if(row >= end_row)
|
||||
break;
|
||||
}
|
||||
if constexpr(std::endian::native == std::endian::little)
|
||||
m_staging_buffer->GetMap<mlx_color*>()[row + dx] = ReverseColor(color);
|
||||
else
|
||||
len_guard = len - (m_width * m_height - (y * m_width + x + len));
|
||||
std::memcpy(&m_staging_buffer->GetMap<mlx_color*>()[(y * m_width) + x], pixels, len_guard);
|
||||
m_staging_buffer->GetMap<mlx_color*>()[row + dx] = color;
|
||||
}
|
||||
m_has_been_modified = true;
|
||||
}
|
||||
@@ -289,23 +332,23 @@ namespace mlx
|
||||
void Texture::GetRegion(int x, int y, int w, int h, mlx_color* dst) noexcept
|
||||
{
|
||||
MLX_PROFILE_FUNCTION();
|
||||
if(x < 0 || y < 0 || static_cast<std::uint32_t>(x) >= m_width || static_cast<std::uint32_t>(y) >= m_height)
|
||||
if(w < 0 || h < 0 || x < 0 || y < 0 || static_cast<std::uint32_t>(x + w) >= m_width || static_cast<std::uint32_t>(y + h) >= m_height)
|
||||
return;
|
||||
if(!m_staging_buffer.has_value())
|
||||
OpenCPUBuffer();
|
||||
for(std::uint32_t i = 0, moving_x = x, moving_y = y;; i++, moving_x++)
|
||||
for(std::uint32_t i = 0, dx = x, row = y * m_width;; i++, dx++)
|
||||
{
|
||||
if(moving_x >= static_cast<std::uint32_t>(x + w) || moving_x >= m_width)
|
||||
if(dx >= m_width)
|
||||
{
|
||||
moving_x = x;
|
||||
moving_y++;
|
||||
if(moving_y >= static_cast<std::uint32_t>(y + h) || moving_y >= m_height)
|
||||
dx = x;
|
||||
row += m_width;
|
||||
if(row >= m_height * m_width)
|
||||
break;
|
||||
}
|
||||
if constexpr(std::endian::native == std::endian::little)
|
||||
dst[i] = ReverseColor(m_staging_buffer->GetMap<mlx_color*>()[(moving_y * m_width) + moving_x]);
|
||||
dst[i] = ReverseColor(m_staging_buffer->GetMap<mlx_color*>()[row + dx]);
|
||||
else
|
||||
dst[i] = m_staging_buffer->GetMap<mlx_color*>()[(moving_y * m_width) + moving_x];
|
||||
dst[i] = m_staging_buffer->GetMap<mlx_color*>()[row + dx];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -320,16 +363,8 @@ namespace mlx
|
||||
processed_color.g = static_cast<std::uint8_t>(color.g * 255.f);
|
||||
processed_color.b = static_cast<std::uint8_t>(color.b * 255.f);
|
||||
processed_color.a = static_cast<std::uint8_t>(color.a * 255.f);
|
||||
if(processed_color.r == 0 && processed_color.g == 0 && processed_color.b == 0)
|
||||
std::memset(m_staging_buffer->GetMap(), processed_color.a, m_staging_buffer->GetSize());
|
||||
else
|
||||
{
|
||||
for(std::size_t y = 0; y < m_height; y++)
|
||||
{
|
||||
for(std::size_t x = 0; x < m_width; x++)
|
||||
m_staging_buffer->GetMap<mlx_color*>()[y * m_width + x] = processed_color;
|
||||
}
|
||||
}
|
||||
for(std::size_t i = 0; i < m_width * m_height; i++)
|
||||
m_staging_buffer->GetMap<mlx_color*>()[i] = processed_color;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -346,6 +381,17 @@ namespace mlx
|
||||
m_has_been_modified = false;
|
||||
}
|
||||
|
||||
mlx_color* Texture::GetBufferCopy() noexcept
|
||||
{
|
||||
MLX_PROFILE_FUNCTION();
|
||||
if(!m_staging_buffer.has_value())
|
||||
OpenCPUBuffer();
|
||||
|
||||
mlx_color* dst = new mlx_color[m_width * m_height];
|
||||
std::memcpy(dst, m_staging_buffer->GetMap<mlx_color*>(), m_width * m_height * sizeof(mlx_color));
|
||||
return dst;
|
||||
}
|
||||
|
||||
void Texture::OpenCPUBuffer()
|
||||
{
|
||||
MLX_PROFILE_FUNCTION();
|
||||
@@ -362,8 +408,16 @@ namespace mlx
|
||||
m_staging_buffer->Init(BufferType::Staging, size, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT, {}, {});
|
||||
#endif
|
||||
|
||||
SyncCPUBuffer();
|
||||
}
|
||||
|
||||
void Texture::SyncCPUBuffer(VkCommandBuffer cmd)
|
||||
{
|
||||
if(!m_staging_buffer.has_value())
|
||||
return;
|
||||
VkImageLayout old_layout = m_layout;
|
||||
VkCommandBuffer cmd = kvfCreateCommandBuffer(RenderCore::Get().GetDevice());
|
||||
if(cmd == VK_NULL_HANDLE)
|
||||
cmd = kvfCreateCommandBuffer(RenderCore::Get().GetDevice());
|
||||
kvfBeginCommandBuffer(cmd, VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT);
|
||||
TransitionLayout(VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, cmd);
|
||||
kvfCopyImageToBuffer(cmd, m_staging_buffer->Get(), m_image, m_staging_buffer->GetOffset(), VK_IMAGE_ASPECT_COLOR_BIT, { m_width, m_height, 1 });
|
||||
@@ -375,6 +429,105 @@ namespace mlx
|
||||
kvfDestroyCommandBuffer(RenderCore::Get().GetDevice(), cmd);
|
||||
}
|
||||
|
||||
void Texture::CopyTo(Texture& other)
|
||||
{
|
||||
VkImageLayout old_layout = m_layout;
|
||||
VkImageLayout other_old_layout = other.GetLayout();
|
||||
|
||||
VkImageSubresourceLayers subresource{};
|
||||
subresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
subresource.mipLevel = 0;
|
||||
subresource.layerCount = 1;
|
||||
subresource.baseArrayLayer = 0;
|
||||
|
||||
VkExtent3D extent{};
|
||||
extent.width = m_width;
|
||||
extent.height = m_height;
|
||||
extent.depth = 1;
|
||||
|
||||
VkOffset3D offset{};
|
||||
offset.x = 0;
|
||||
offset.y = 0;
|
||||
offset.z = 0;
|
||||
|
||||
VkImageCopy region{};
|
||||
region.srcSubresource = subresource;
|
||||
region.dstSubresource = subresource;
|
||||
region.extent = extent;
|
||||
region.srcOffset = offset;
|
||||
region.dstOffset = offset;
|
||||
|
||||
VkCommandBuffer cmd = kvfCreateCommandBuffer(RenderCore::Get().GetDevice());
|
||||
kvfBeginCommandBuffer(cmd, VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT);
|
||||
|
||||
TransitionLayout(VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, cmd);
|
||||
other.TransitionLayout(VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, cmd);
|
||||
|
||||
kvfCopyImageToImage(cmd, m_image, m_layout, other.Get(), other.GetLayout(), 1, ®ion);
|
||||
|
||||
TransitionLayout(old_layout, cmd);
|
||||
other.TransitionLayout(other_old_layout, cmd);
|
||||
|
||||
kvfEndCommandBuffer(cmd);
|
||||
|
||||
SyncCPUBuffer(cmd);
|
||||
}
|
||||
|
||||
void Texture::Resize(std::uint32_t width, std::uint32_t height)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
Texture new_texture = Texture(CPUBuffer{}, width, height, m_format, m_is_multisampled, m_debug_name);
|
||||
#else
|
||||
Texture new_texture = Texture(CPUBuffer{}, width, height, m_format, m_is_multisampled, std::string_view{});
|
||||
#endif
|
||||
|
||||
if(m_staging_buffer.has_value())
|
||||
{
|
||||
new_texture.OpenCPUBuffer();
|
||||
new_texture.m_staging_buffer->CopyFrom(*m_staging_buffer);
|
||||
}
|
||||
|
||||
// Suboptimal operations, should bake all of them in a single command buffer
|
||||
new_texture.Clear(VK_NULL_HANDLE, Vec4f{ 0.f });
|
||||
CopyTo(new_texture);
|
||||
|
||||
Swap(new_texture);
|
||||
|
||||
#ifdef DEBUG
|
||||
DebugLog("Texture: resized '%'", m_debug_name);
|
||||
#endif
|
||||
}
|
||||
|
||||
void Texture::Swap(Texture& texture) noexcept
|
||||
{
|
||||
MLX_PROFILE_FUNCTION();
|
||||
|
||||
#ifdef DEBUG
|
||||
std::swap(m_debug_name, texture.m_debug_name);
|
||||
#endif
|
||||
std::swap(m_allocation, texture.m_allocation);
|
||||
std::swap(m_image, texture.m_image);
|
||||
std::swap(m_image_view, texture.m_image_view);
|
||||
std::swap(m_sampler, texture.m_sampler);
|
||||
std::swap(m_format, texture.m_format);
|
||||
std::swap(m_tiling, texture.m_tiling);
|
||||
std::swap(m_layout, texture.m_layout);
|
||||
std::swap(m_type, texture.m_type);
|
||||
std::swap(m_width, texture.m_width);
|
||||
std::swap(m_height, texture.m_height);
|
||||
std::swap(m_is_multisampled, texture.m_is_multisampled);
|
||||
|
||||
if(m_staging_buffer.has_value() && texture.m_staging_buffer.has_value())
|
||||
m_staging_buffer->Swap(*texture.m_staging_buffer);
|
||||
else if(m_staging_buffer.has_value())
|
||||
m_staging_buffer.reset();
|
||||
else if(texture.m_staging_buffer.has_value())
|
||||
texture.m_staging_buffer.reset();
|
||||
|
||||
m_has_been_modified = true;
|
||||
texture.m_has_been_modified = true;
|
||||
}
|
||||
|
||||
Texture* StbTextureLoad(const std::filesystem::path& file, int* w, int* h)
|
||||
{
|
||||
using namespace std::literals;
|
||||
|
||||
@@ -127,6 +127,9 @@ namespace mlx
|
||||
void GraphicPipeline::Destroy() noexcept
|
||||
{
|
||||
MLX_PROFILE_FUNCTION();
|
||||
if(m_pipeline == VK_NULL_HANDLE)
|
||||
return;
|
||||
|
||||
p_vertex_shader.reset();
|
||||
p_fragment_shader.reset();
|
||||
for(auto fb : m_framebuffers)
|
||||
|
||||
@@ -55,17 +55,17 @@ namespace mlx
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
void* VulkanAllocationFunction(void*, std::size_t size, std::size_t alignment, VkSystemAllocationScope)
|
||||
void* VKAPI_PTR VulkanAllocationFunction(void*, std::size_t size, std::size_t alignment, VkSystemAllocationScope)
|
||||
{
|
||||
return MemManager::AlignedMalloc(alignment, size);
|
||||
}
|
||||
|
||||
void* VulkanReallocationFunction(void*, void* ptr, std::size_t size, std::size_t alignment, VkSystemAllocationScope)
|
||||
void* VKAPI_PTR VulkanReallocationFunction(void*, void* ptr, std::size_t size, std::size_t alignment, VkSystemAllocationScope)
|
||||
{
|
||||
return MemManager::AlignedRealloc(ptr, alignment, size);
|
||||
}
|
||||
|
||||
void VulkanFreeFunction(void*, void* ptr)
|
||||
void VKAPI_PTR VulkanFreeFunction(void*, void* ptr)
|
||||
{
|
||||
MemManager::Free(ptr);
|
||||
}
|
||||
@@ -100,8 +100,25 @@ namespace mlx
|
||||
info.width = 1;
|
||||
info.height = 1;
|
||||
window = std::make_unique<Window>(&info, true);
|
||||
instance_extensions = window->GetRequiredVulkanInstanceExtentions();
|
||||
#ifdef MLX_PLAT_MACOS
|
||||
instance_extensions.push_back(VK_KHR_SURFACE_EXTENSION_NAME);
|
||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||
instance_extensions.push_back(VK_KHR_XCB_SURFACE_EXTENSION_NAME);
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
||||
instance_extensions.push_back(VK_KHR_XLIB_SURFACE_EXTENSION_NAME);
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||
instance_extensions.push_back(VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME);
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||
instance_extensions.push_back(VK_KHR_WIN32_SURFACE_EXTENSION_NAME);
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
||||
instance_extensions.push_back(VK_EXT_METAL_SURFACE_EXTENSION_NAME);
|
||||
instance_extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME);
|
||||
#endif
|
||||
}
|
||||
@@ -185,6 +202,41 @@ namespace mlx
|
||||
MLX_LOAD_FUNCTION(vkGetPhysicalDeviceSurfaceFormatsKHR);
|
||||
MLX_LOAD_FUNCTION(vkGetPhysicalDeviceSurfacePresentModesKHR);
|
||||
MLX_LOAD_FUNCTION(vkGetPhysicalDeviceSurfaceSupportKHR);
|
||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||
#ifdef VK_KHR_android_surface
|
||||
MLX_LOAD_FUNCTION(vkCreateAndroidSurfaceKHR);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||
#ifdef VK_KHR_xcb_surface
|
||||
MLX_LOAD_FUNCTION(vkCreateXcbSurfaceKHR);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
||||
#ifdef VK_KHR_xlib_surface
|
||||
MLX_LOAD_FUNCTION(vkCreateXlibSurfaceKHR);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||
#ifdef VK_KHR_wayland_surface
|
||||
MLX_LOAD_FUNCTION(vkCreateWaylandSurfaceKHR);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||
#ifdef VK_KHR_win32_surface
|
||||
MLX_LOAD_FUNCTION(vkCreateWin32SurfaceKHR);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
||||
#ifdef VK_EXT_metal_surface
|
||||
MLX_LOAD_FUNCTION(vkCreateMetalSurfaceEXT);
|
||||
#endif
|
||||
#endif
|
||||
kvfPassInstanceVulkanFunctionPointers(&pfns);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace mlx
|
||||
Event What() const override { return Event::ResizeEventCode; }
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
std::string VulkanFormatName(VkFormat format)
|
||||
{
|
||||
#define STRINGIFY(x) case x: return #x
|
||||
@@ -161,7 +161,7 @@ namespace mlx
|
||||
|
||||
std::function<void(const EventBase&)> functor = [this](const EventBase& event)
|
||||
{
|
||||
if(event.What() == Event::ResizeEventCode && !m_resize)
|
||||
if(event.What() == Event::SwapchainResizeEventCode && !m_resize)
|
||||
m_resize = true;
|
||||
};
|
||||
EventBus::RegisterListener({ functor, "mlx_swapchain_" + std::to_string(reinterpret_cast<std::uintptr_t>(this)) });
|
||||
|
||||
@@ -21,6 +21,6 @@ rm vulkan-headers.zip
|
||||
|
||||
# Update KVF
|
||||
rm -f ../third_party/kvf.h
|
||||
git clone https://github.com/Kbz-8/KVF.git ../third_party/KVF/
|
||||
git clone https://git.kbz8.me/kbz_8/KVF.git ../third_party/KVF/
|
||||
mv ../third_party/KVF/kvf.h ../third_party/kvf.h
|
||||
rm -rf ../third_party/KVF
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
[wrap-file]
|
||||
directory = SDL2-2.32.8
|
||||
source_url = https://github.com/libsdl-org/SDL/releases/download/release-2.32.8/SDL2-2.32.8.tar.gz
|
||||
source_filename = SDL2-2.32.8.tar.gz
|
||||
source_hash = 0ca83e9c9b31e18288c7ec811108e58bac1f1bb5ec6577ad386830eac51c787e
|
||||
patch_filename = sdl2_2.32.8-1_patch.zip
|
||||
patch_url = https://wrapdb.mesonbuild.com/v2/sdl2_2.32.8-1/get_patch
|
||||
patch_hash = 5df17ea39ca418826db20e96bd821fa52b5718dac64b6225119fb6588c2744f0
|
||||
source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/sdl2_2.32.8-1/SDL2-2.32.8.tar.gz
|
||||
wrapdb_version = 2.32.8-1
|
||||
|
||||
[provide]
|
||||
sdl2 = sdl2_dep
|
||||
sdl2main = sdl2main_dep
|
||||
sdl2_test = sdl2_test_dep
|
||||
Vendored
+248
-5
@@ -55,6 +55,46 @@
|
||||
#define VK_NO_PROTOTYPES
|
||||
#endif
|
||||
|
||||
#ifndef KVF_NO_KHR
|
||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||
#include <vulkan/vulkan_android.h>
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||
#include <vulkan/vulkan_wayland.h>
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||
typedef struct HINSTANCE__* HINSTANCE;
|
||||
typedef struct HWND__* HWND;
|
||||
typedef struct HMONITOR__* HMONITOR;
|
||||
typedef void* HANDLE;
|
||||
typedef /*_Null_terminated_*/ const wchar_t* LPCWSTR;
|
||||
typedef unsigned long DWORD;
|
||||
typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES;
|
||||
#include <vulkan/vulkan_win32.h>
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||
struct xcb_connection_t;
|
||||
typedef uint32_t xcb_window_t;
|
||||
typedef uint32_t xcb_visualid_t;
|
||||
#include <vulkan/vulkan_xcb.h>
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
||||
#include <vulkan/vulkan_metal.h>
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
||||
typedef struct _XDisplay Display;
|
||||
typedef unsigned long XID;
|
||||
typedef XID Window;
|
||||
typedef unsigned long VisualID;
|
||||
#include <vulkan/vulkan_xlib.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <vulkan/vulkan_core.h>
|
||||
|
||||
#include <stdint.h>
|
||||
@@ -82,6 +122,18 @@ typedef enum
|
||||
KVF_IMAGE_OTHER = 4,
|
||||
} KvfImageType;
|
||||
|
||||
#ifndef KVF_NO_KHR
|
||||
typedef enum
|
||||
{
|
||||
KVF_SURFACE_ANDROID = 0,
|
||||
KVF_SURFACE_XLIB = 1,
|
||||
KVF_SURFACE_XCB = 2,
|
||||
KVF_SURFACE_WAYLAND = 3,
|
||||
KVF_SURFACE_WINDOWS = 4,
|
||||
KVF_SURFACE_METAL = 5,
|
||||
} KvfSurfaceType;
|
||||
#endif
|
||||
|
||||
typedef void (*KvfErrorCallback)(const char* message);
|
||||
|
||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||
@@ -104,6 +156,7 @@ void kvfSetValidationWarningCallback(KvfErrorCallback callback);
|
||||
void kvfAddLayer(const char* layer);
|
||||
|
||||
VkInstance kvfCreateInstance(const char** extensions_enabled, uint32_t extensions_count);
|
||||
VkInstance kvfCreateInstanceNext(const char** extensions_enabled, uint32_t extensions_count, void* p_next);
|
||||
void kvfDestroyInstance(VkInstance instance);
|
||||
|
||||
// If surfaces given to theses functions are VK_NULL_HANDLE no present queues will be searched and thus kvfQueuePresentKHR will not work
|
||||
@@ -147,10 +200,39 @@ void kvfDestroySemaphore(VkDevice device, VkSemaphore semaphore);
|
||||
uint32_t kvfGetSwapchainMinImagesCount(VkSwapchainKHR swapchain);
|
||||
VkExtent2D kvfGetSwapchainImagesSize(VkSwapchainKHR swapchain);
|
||||
void kvfDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain);
|
||||
|
||||
/**
|
||||
* For Windows:
|
||||
* - instance_handle -> HINSTANCE
|
||||
* - window_handle -> HWND window handle
|
||||
*
|
||||
* For Wayland:
|
||||
* - instance_handle -> wl_display
|
||||
* - window_handle -> wl_surface
|
||||
*
|
||||
* For XLIB:
|
||||
* - instance_handle -> Display
|
||||
* - window_handle -> Window
|
||||
*
|
||||
* For XCB:
|
||||
* - instance_handle -> xcb_connection_t
|
||||
* - window_handle -> xcb_window_t
|
||||
*
|
||||
* For Metal:
|
||||
* - instance_handle -> ignored
|
||||
* - window_handle -> CAMetalLayer
|
||||
*
|
||||
* For Android:
|
||||
* - instance_handle -> ignored
|
||||
* - window_handle -> ANativeWindow
|
||||
*/
|
||||
VkSurfaceKHR kvfCreateSurfaceKHR(VkInstance instance, KvfSurfaceType type, void* instance_handle, void* window_handle);
|
||||
#endif
|
||||
|
||||
VkImage kvfCreateImage(VkDevice device, uint32_t width, uint32_t height, VkFormat format, VkImageTiling tiling, VkImageUsageFlags usage, KvfImageType type);
|
||||
void kvfCopyImageToBuffer(VkCommandBuffer cmd, VkBuffer dst, VkImage src, size_t buffer_offset, VkImageAspectFlagBits aspect, VkExtent3D extent);
|
||||
void kvfCopyImageToImage(VkCommandBuffer cmd, VkImage src, VkImageLayout src_layout, VkImage dst, VkImageLayout dst_layout, uint32_t count, const VkImageCopy* regions);
|
||||
|
||||
void kvfDestroyImage(VkDevice device, VkImage image);
|
||||
VkImageView kvfCreateImageView(VkDevice device, VkImage image, VkFormat format, VkImageViewType type, VkImageAspectFlags aspect, int layer_count);
|
||||
void kvfDestroyImageView(VkDevice device, VkImageView image_view);
|
||||
@@ -235,6 +317,7 @@ VkPipeline kvfCreateGraphicsPipeline(VkDevice device, VkPipelineCache cache, VkP
|
||||
void kvfDestroyPipeline(VkDevice device, VkPipeline pipeline);
|
||||
|
||||
void kvfCheckVk(VkResult result);
|
||||
int32_t kvfFindMemoryType(VkPhysicalDevice physical_device, uint32_t type_filter, VkMemoryPropertyFlags properties);
|
||||
|
||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||
#ifdef KVF_DEFINE_VULKAN_FUNCTION_PROTOTYPE
|
||||
@@ -268,6 +351,42 @@ void kvfCheckVk(VkResult result);
|
||||
KVF_DEFINE_VULKAN_FUNCTION_PROTOTYPE(vkGetPhysicalDeviceSurfaceFormatsKHR);
|
||||
KVF_DEFINE_VULKAN_FUNCTION_PROTOTYPE(vkGetPhysicalDeviceSurfacePresentModesKHR);
|
||||
KVF_DEFINE_VULKAN_FUNCTION_PROTOTYPE(vkGetPhysicalDeviceSurfaceSupportKHR);
|
||||
|
||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||
#ifdef VK_KHR_android_surface
|
||||
KVF_DEFINE_VULKAN_FUNCTION_PROTOTYPE(vkCreateAndroidSurfaceKHR);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||
#ifdef VK_KHR_xcb_surface
|
||||
KVF_DEFINE_VULKAN_FUNCTION_PROTOTYPE(vkCreateXcbSurfaceKHR);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
||||
#ifdef VK_KHR_xlib_surface
|
||||
KVF_DEFINE_VULKAN_FUNCTION_PROTOTYPE(vkCreateXlibSurfaceKHR);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||
#ifdef VK_KHR_wayland_surface
|
||||
KVF_DEFINE_VULKAN_FUNCTION_PROTOTYPE(vkCreateWaylandSurfaceKHR);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||
#ifdef VK_KHR_win32_surface
|
||||
KVF_DEFINE_VULKAN_FUNCTION_PROTOTYPE(vkCreateWin32SurfaceKHR);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
||||
#ifdef VK_EXT_metal_surface
|
||||
KVF_DEFINE_VULKAN_FUNCTION_PROTOTYPE(vkCreateMetalSurfaceEXT);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -519,6 +638,19 @@ void kvfCheckVk(VkResult result)
|
||||
__kvfCheckVk(result);
|
||||
}
|
||||
|
||||
int32_t kvfFindMemoryType(VkPhysicalDevice physical_device, uint32_t type_filter, VkMemoryPropertyFlags properties)
|
||||
{
|
||||
VkPhysicalDeviceMemoryProperties mem_properties;
|
||||
KVF_GET_INSTANCE_FUNCTION(vkGetPhysicalDeviceMemoryProperties)(physical_device, &mem_properties);
|
||||
|
||||
for(int32_t i = 0; i < (int32_t)mem_properties.memoryTypeCount; i++)
|
||||
{
|
||||
if((type_filter & (1 << i)) && (mem_properties.memoryTypes[i].propertyFlags & properties) == properties)
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void __kvfAddDeviceToArray(VkPhysicalDevice device, int32_t graphics_queue, int32_t present_queue, int32_t compute_queue)
|
||||
{
|
||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||
@@ -1151,7 +1283,7 @@ const char* kvfVerbaliseVkResult(VkResult result)
|
||||
case VK_ERROR_OUT_OF_DATE_KHR: return "A surface has changed in such a way that it is no longer compatible with the swapchain";
|
||||
case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR: return "The display used by a swapchain does not use the same presentable image layout";
|
||||
case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR: return "The requested window is already connected to a VkSurfaceKHR, or to some other non-Vulkan API";
|
||||
case VK_ERROR_VALIDATION_FAILED_EXT: return "A validation layer found an error";
|
||||
case VK_ERROR_VALIDATION_FAILED_EXT: return "A command failed because invalid usage was detected by the implementation or a validation layer.";
|
||||
|
||||
default: return "Unknown Vulkan error";
|
||||
}
|
||||
@@ -1295,6 +1427,11 @@ void kvfAddLayer(const char* layer)
|
||||
}
|
||||
|
||||
VkInstance kvfCreateInstance(const char** extensions_enabled, uint32_t extensions_count)
|
||||
{
|
||||
return kvfCreateInstanceNext(extensions_enabled, extensions_count, NULL);
|
||||
}
|
||||
|
||||
VkInstance kvfCreateInstanceNext(const char** extensions_enabled, uint32_t extensions_count, void* p_next)
|
||||
{
|
||||
VkInstance instance = VK_NULL_HANDLE;
|
||||
|
||||
@@ -1305,7 +1442,7 @@ VkInstance kvfCreateInstance(const char** extensions_enabled, uint32_t extension
|
||||
create_info.ppEnabledExtensionNames = extensions_enabled;
|
||||
create_info.enabledLayerCount = 0;
|
||||
create_info.ppEnabledLayerNames = NULL;
|
||||
create_info.pNext = NULL;
|
||||
create_info.pNext = p_next;
|
||||
#if defined(VK_USE_PLATFORM_MACOS_MVK) || defined(VK_USE_PLATFORM_METAL_EXT)
|
||||
create_info.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
|
||||
#else
|
||||
@@ -1324,6 +1461,8 @@ VkInstance kvfCreateInstance(const char** extensions_enabled, uint32_t extension
|
||||
memcpy(new_extension_set, extensions_enabled, sizeof(char*) * extensions_count);
|
||||
new_extension_set[extensions_count] = VK_EXT_DEBUG_UTILS_EXTENSION_NAME;
|
||||
|
||||
debug_create_info.pNext = p_next;
|
||||
|
||||
create_info.enabledExtensionCount = extensions_count + 1;
|
||||
create_info.ppEnabledExtensionNames = new_extension_set;
|
||||
create_info.enabledLayerCount = __kvf_extra_layers_count;
|
||||
@@ -2069,6 +2208,98 @@ void kvfDestroySemaphore(VkDevice device, VkSemaphore semaphore)
|
||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||
__kvfDestroySwapchain(device, swapchain);
|
||||
}
|
||||
|
||||
VkSurfaceKHR kvfCreateSurfaceKHR(VkInstance instance, KvfSurfaceType type, void* instance_handle, void* window_handle)
|
||||
{
|
||||
VkSurfaceKHR surface = VK_NULL_HANDLE;
|
||||
switch(type)
|
||||
{
|
||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||
case KVF_SURFACE_ANDROID:
|
||||
{
|
||||
VkAndroidSurfaceCreateInfoKHR create_info = {};
|
||||
create_info.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
|
||||
create_info.pNext = nullptr;
|
||||
create_info.flags = 0;
|
||||
create_info.window = (ANativeWindow*)window_handle;
|
||||
kvfCheckVk(KVF_GET_INSTANCE_FUNCTION(vkCreateAndroidSurfaceKHR)(instance, &create_info, NULL, &surface));
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
||||
case KVF_SURFACE_XLIB:
|
||||
{
|
||||
VkXlibSurfaceCreateInfoKHR create_info = {};
|
||||
create_info.sType = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR;
|
||||
create_info.pNext = nullptr;
|
||||
create_info.flags = 0;
|
||||
create_info.dpy = (Display*)instance_handle;
|
||||
create_info.window = *(Window*)window_handle;
|
||||
kvfCheckVk(KVF_GET_INSTANCE_FUNCTION(vkCreateXlibSurfaceKHR)(instance, &create_info, NULL, &surface));
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||
case KVF_SURFACE_XCB:
|
||||
{
|
||||
VkXcbSurfaceCreateInfoKHR create_info = {};
|
||||
create_info.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
|
||||
create_info.pNext = nullptr;
|
||||
create_info.flags = 0;
|
||||
create_info.connection = (xcb_connection_t*)instance_handle;
|
||||
create_info.window = (*xcb_window_t*)window_handle;
|
||||
kvfCheckVk(KVF_GET_INSTANCE_FUNCTION(vkCreateXcbSurfaceKHR)(instance, &create_info, NULL, &surface));
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||
case KVF_SURFACE_WAYLAND:
|
||||
{
|
||||
VkWaylandSurfaceCreateInfoKHR create_info = {};
|
||||
create_info.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;
|
||||
create_info.pNext = nullptr;
|
||||
create_info.flags = 0;
|
||||
create_info.display = (wl_display*)instance_handle;
|
||||
create_info.surface = (wl_surface*)window_handle;
|
||||
kvfCheckVk(KVF_GET_INSTANCE_FUNCTION(vkCreateWaylandSurfaceKHR)(instance, &create_info, NULL, &surface));
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||
case KVF_SURFACE_WINDOWS:
|
||||
{
|
||||
VkWin32SurfaceCreateInfoKHR create_info = {};
|
||||
create_info.sType = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR;
|
||||
create_info.pNext = nullptr;
|
||||
create_info.flags = 0;
|
||||
create_info.hinstance = (HINSTANCE)instance_handle;
|
||||
create_info.hwnd = (HWND)window_handle;
|
||||
kvfCheckVk(KVF_GET_INSTANCE_FUNCTION(vkCreateWin32SurfaceKHR)(instance, &create_info, NULL, &surface));
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
||||
case KVF_SURFACE_METAL:
|
||||
{
|
||||
VkMetalSurfaceCreateInfoEXT create_info = {};
|
||||
create_info.sType = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT;
|
||||
create_info.pNext = nullptr;
|
||||
create_info.flags = 0;
|
||||
create_info.pLayer = (CAMetalLayer*)window_handle;
|
||||
kvfCheckVk(KVF_GET_INSTANCE_FUNCTION(vkCreateMetalSurfaceEXT)(instance, &create_info, NULL, &surface));
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
default: break;
|
||||
}
|
||||
return surface;
|
||||
}
|
||||
#endif
|
||||
|
||||
VkImage kvfCreateImage(VkDevice device, uint32_t width, uint32_t height, VkFormat format, VkImageTiling tiling, VkImageUsageFlags usage, KvfImageType type)
|
||||
@@ -2125,6 +2356,18 @@ void kvfCopyImageToBuffer(VkCommandBuffer cmd, VkBuffer dst, VkImage src, size_t
|
||||
KVF_GET_DEVICE_FUNCTION(vkCmdCopyImageToBuffer)(cmd, src, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, dst, 1, ®ion);
|
||||
}
|
||||
|
||||
void kvfCopyImageToImage(VkCommandBuffer cmd, VkImage src, VkImageLayout src_layout, VkImage dst, VkImageLayout dst_layout, uint32_t count, const VkImageCopy* regions)
|
||||
{
|
||||
KVF_ASSERT(cmd != VK_NULL_HANDLE);
|
||||
KVF_ASSERT(dst != VK_NULL_HANDLE);
|
||||
KVF_ASSERT(src != VK_NULL_HANDLE);
|
||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkCommandBuffer(cmd);
|
||||
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||
#endif
|
||||
KVF_GET_DEVICE_FUNCTION(vkCmdCopyImage)(cmd, src, src_layout, dst, dst_layout, count, regions);
|
||||
}
|
||||
|
||||
void kvfDestroyImage(VkDevice device, VkImage image)
|
||||
{
|
||||
if(image == VK_NULL_HANDLE)
|
||||
@@ -2316,7 +2559,7 @@ void kvfCopyBufferToImage(VkCommandBuffer cmd, VkImage dst, VkBuffer src, size_t
|
||||
|
||||
void kvfDestroyBuffer(VkDevice device, VkBuffer buffer)
|
||||
{
|
||||
if(buffer != VK_NULL_HANDLE)
|
||||
if(buffer == VK_NULL_HANDLE)
|
||||
return;
|
||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||
@@ -2933,7 +3176,7 @@ void kvfGPipelineBuilderEnableAdditiveBlending(KvfGraphicsPipelineBuilder* build
|
||||
builder->color_blend_attachment_state.dstColorBlendFactor = VK_BLEND_FACTOR_ONE;
|
||||
builder->color_blend_attachment_state.colorBlendOp = VK_BLEND_OP_ADD;
|
||||
builder->color_blend_attachment_state.srcAlphaBlendFactor = VK_BLEND_FACTOR_ONE;
|
||||
builder->color_blend_attachment_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_ZERO;
|
||||
builder->color_blend_attachment_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
|
||||
builder->color_blend_attachment_state.alphaBlendOp = VK_BLEND_OP_ADD;
|
||||
}
|
||||
|
||||
@@ -2946,7 +3189,7 @@ void kvfGPipelineBuilderEnableAlphaBlending(KvfGraphicsPipelineBuilder* builder)
|
||||
builder->color_blend_attachment_state.dstColorBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
|
||||
builder->color_blend_attachment_state.colorBlendOp = VK_BLEND_OP_ADD;
|
||||
builder->color_blend_attachment_state.srcAlphaBlendFactor = VK_BLEND_FACTOR_ONE;
|
||||
builder->color_blend_attachment_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_ZERO;
|
||||
builder->color_blend_attachment_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
|
||||
builder->color_blend_attachment_state.alphaBlendOp = VK_BLEND_OP_ADD;
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_VIDEO_CODEC_AV1STD_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
+4
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_VIDEO_CODEC_H264STD_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -44,6 +44,8 @@ typedef enum StdVideoH264ProfileIdc {
|
||||
STD_VIDEO_H264_PROFILE_IDC_BASELINE = 66,
|
||||
STD_VIDEO_H264_PROFILE_IDC_MAIN = 77,
|
||||
STD_VIDEO_H264_PROFILE_IDC_HIGH = 100,
|
||||
STD_VIDEO_H264_PROFILE_IDC_HIGH_10 = 110,
|
||||
STD_VIDEO_H264_PROFILE_IDC_HIGH_422 = 122,
|
||||
STD_VIDEO_H264_PROFILE_IDC_HIGH_444_PREDICTIVE = 244,
|
||||
STD_VIDEO_H264_PROFILE_IDC_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_VIDEO_CODEC_H265STD_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_VIDEO_CODEC_VP9STD_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_VIDEO_CODECS_COMMON_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Vendored
+1520
-1075
File diff suppressed because it is too large
Load Diff
Vendored
+3
-3
@@ -2,8 +2,7 @@
|
||||
* Copyright 2015-2023 The Khronos Group Inc.
|
||||
* Copyright 2015-2023 Valve Corporation
|
||||
* Copyright 2015-2023 LunarG, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
@@ -44,8 +43,9 @@
|
||||
typedef VkResult(VKAPI_PTR *PFN_vkNegotiateLoaderICDInterfaceVersion)(uint32_t *pVersion);
|
||||
// This is defined in vk_layer.h which will be found by the loader, but if an ICD is building against this
|
||||
// file directly, it won't be found.
|
||||
#ifndef PFN_GetPhysicalDeviceProcAddr
|
||||
#ifndef IS_DEFINED_PFN_GetPhysicalDeviceProcAddr
|
||||
typedef PFN_vkVoidFunction(VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char *pName);
|
||||
#define IS_DEFINED_PFN_GetPhysicalDeviceProcAddr
|
||||
#endif
|
||||
|
||||
// Typedefs for loader/ICD interface
|
||||
|
||||
Vendored
+4
-2
@@ -2,8 +2,7 @@
|
||||
* Copyright 2015-2023 The Khronos Group Inc.
|
||||
* Copyright 2015-2023 Valve Corporation
|
||||
* Copyright 2015-2023 LunarG, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
@@ -27,7 +26,10 @@
|
||||
#define VK_CURRENT_CHAIN_VERSION 1
|
||||
|
||||
// Typedef for use in the interfaces below
|
||||
#ifndef IS_DEFINED_PFN_GetPhysicalDeviceProcAddr
|
||||
typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char* pName);
|
||||
#define IS_DEFINED_PFN_GetPhysicalDeviceProcAddr
|
||||
#endif
|
||||
|
||||
// Version negotiation values
|
||||
typedef enum VkNegotiateLayerStructType {
|
||||
|
||||
Vendored
+2
-3
@@ -2,9 +2,8 @@
|
||||
// File: vk_platform.h
|
||||
//
|
||||
/*
|
||||
** Copyright 2014-2025 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** Copyright 2014-2026 The Khronos Group Inc.
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
|
||||
|
||||
Vendored
+137
-9353
File diff suppressed because it is too large
Load Diff
Vendored
+2
-3
@@ -2,9 +2,8 @@
|
||||
#define VULKAN_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
#include "vk_platform.h"
|
||||
|
||||
Vendored
+6564
-2813
File diff suppressed because it is too large
Load Diff
Vendored
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_ANDROID_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Vendored
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_BETA_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Vendored
+3362
-675
File diff suppressed because it is too large
Load Diff
Vendored
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_DIRECTFB_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Vendored
+2091
-835
File diff suppressed because it is too large
Load Diff
+613
-109
File diff suppressed because it is too large
Load Diff
+1041
-33
File diff suppressed because it is too large
Load Diff
Vendored
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_FUCHSIA_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Vendored
+14855
-7436
File diff suppressed because it is too large
Load Diff
Vendored
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_GGP_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
+11234
-3500
File diff suppressed because it is too large
Load Diff
Vendored
+2446
-178
File diff suppressed because it is too large
Load Diff
+60
-25
@@ -1,5 +1,4 @@
|
||||
// Copyright 2015-2025 The Khronos Group Inc.
|
||||
//
|
||||
// Copyright 2015-2026 The Khronos Group Inc.
|
||||
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
//
|
||||
|
||||
@@ -35,6 +34,18 @@
|
||||
# include <ciso646>
|
||||
#endif
|
||||
|
||||
#define VULKAN_HPP_STRINGIFY2( text ) #text
|
||||
#define VULKAN_HPP_STRINGIFY( text ) VULKAN_HPP_STRINGIFY2( text )
|
||||
#define VULKAN_HPP_NAMESPACE_STRING VULKAN_HPP_STRINGIFY( VULKAN_HPP_NAMESPACE )
|
||||
|
||||
#if defined( __clang__ ) || defined( __GNUC__ ) || defined( __GNUG__ )
|
||||
# define VULKAN_HPP_COMPILE_WARNING( text ) _Pragma( VULKAN_HPP_STRINGIFY( GCC warning text ) )
|
||||
#elif defined( _MSC_VER )
|
||||
# define VULKAN_HPP_COMPILE_WARNING( text ) _Pragma( VULKAN_HPP_STRINGIFY( message( __FILE__ "(" VULKAN_HPP_STRINGIFY( __LINE__ ) "): warning: " text ) ) )
|
||||
#else
|
||||
# define VULKAN_HPP_COMPILE_WARNING( text )
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
|
||||
# if !defined( VULKAN_HPP_NO_SMART_HANDLE )
|
||||
# define VULKAN_HPP_NO_SMART_HANDLE
|
||||
@@ -75,6 +86,23 @@
|
||||
# define VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL 1
|
||||
#endif
|
||||
|
||||
#if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL == 1
|
||||
# if defined( __unix__ ) || defined( __APPLE__ ) || defined( __QNX__ ) || defined( __Fuchsia__ ) && !defined( VULKAN_HPP_CXX_MODULE )
|
||||
# include <dlfcn.h>
|
||||
# elif defined( _WIN32 ) && !defined( VULKAN_HPP_NO_WIN32_PROTOTYPES )
|
||||
using HINSTANCE = struct HINSTANCE__ *;
|
||||
# if defined( _WIN64 )
|
||||
# include <cstdint>
|
||||
using FARPROC = int64_t( __stdcall * )();
|
||||
# else
|
||||
using FARPROC = int( __stdcall * )();
|
||||
# endif
|
||||
extern "C" __declspec( dllimport ) HINSTANCE __stdcall LoadLibraryA( char const * lpLibFileName );
|
||||
extern "C" __declspec( dllimport ) int __stdcall FreeLibrary( HINSTANCE hLibModule );
|
||||
extern "C" __declspec( dllimport ) FARPROC __stdcall GetProcAddress( HINSTANCE hModule, char const * lpProcName );
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !defined( __has_include )
|
||||
# define __has_include( x ) false
|
||||
#endif
|
||||
@@ -87,8 +115,14 @@
|
||||
# define VULKAN_HPP_SUPPORT_SPAN
|
||||
#endif
|
||||
|
||||
#if !defined( VULKAN_HPP_STD_MODULE ) && defined( __cpp_modules ) && defined( __cpp_lib_modules )
|
||||
# define VULKAN_HPP_STD_MODULE std.compat
|
||||
#if defined( VULKAN_HPP_CXX_MODULE )
|
||||
# define VULKAN_HPP_EXPORT export
|
||||
#else
|
||||
# define VULKAN_HPP_EXPORT
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_HPP_CXX_MODULE ) && !( defined( __cpp_modules ) && defined( __cpp_lib_modules ) )
|
||||
VULKAN_HPP_COMPILE_WARNING( "This is a non-conforming implementation of C++ named modules and the standard library module." )
|
||||
#endif
|
||||
|
||||
#ifndef VK_USE_64_BIT_PTR_DEFINES
|
||||
@@ -163,7 +197,7 @@
|
||||
# else
|
||||
# define VULKAN_HPP_CONSTEXPR_17
|
||||
# endif
|
||||
# if ( 201907 <= __cpp_constexpr ) && ( !defined( __GNUC__ ) || ( 110400 < GCC_VERSION ) )
|
||||
# if ( 201907 <= __cpp_constexpr ) && ( !defined( __GNUC__ ) || ( 120000 <= GCC_VERSION ) )
|
||||
# define VULKAN_HPP_CONSTEXPR_20 constexpr
|
||||
# else
|
||||
# define VULKAN_HPP_CONSTEXPR_20
|
||||
@@ -221,14 +255,18 @@
|
||||
# define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS
|
||||
#endif
|
||||
|
||||
#if 17 <= VULKAN_HPP_CPP_VERSION
|
||||
# define VULKAN_HPP_MAYBE_UNUSED [[maybe_unused]]
|
||||
# define VULKAN_HPP_UNUSED( var )
|
||||
#else
|
||||
# define VULKAN_HPP_MAYBE_UNUSED
|
||||
# define VULKAN_HPP_UNUSED( var ) ( (void)( var ) )
|
||||
#endif
|
||||
|
||||
#if !defined( VULKAN_HPP_NAMESPACE )
|
||||
# define VULKAN_HPP_NAMESPACE vk
|
||||
#endif
|
||||
|
||||
#define VULKAN_HPP_STRINGIFY2( text ) #text
|
||||
#define VULKAN_HPP_STRINGIFY( text ) VULKAN_HPP_STRINGIFY2( text )
|
||||
#define VULKAN_HPP_NAMESPACE_STRING VULKAN_HPP_STRINGIFY( VULKAN_HPP_NAMESPACE )
|
||||
|
||||
#if !defined( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC )
|
||||
# if defined( VK_NO_PROTOTYPES )
|
||||
# define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 1
|
||||
@@ -260,20 +298,6 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
namespace VULKAN_HPP_NAMESPACE
|
||||
{
|
||||
namespace detail
|
||||
{
|
||||
class DispatchLoaderDynamic;
|
||||
|
||||
#if !defined( VULKAN_HPP_DEFAULT_DISPATCHER )
|
||||
# if VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1
|
||||
extern VULKAN_HPP_STORAGE_API DispatchLoaderDynamic defaultDispatchLoaderDynamic;
|
||||
# endif
|
||||
#endif
|
||||
} // namespace detail
|
||||
} // namespace VULKAN_HPP_NAMESPACE
|
||||
|
||||
#if !defined( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC_TYPE )
|
||||
# define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC_TYPE VULKAN_HPP_NAMESPACE::detail::DispatchLoaderDynamic
|
||||
#endif
|
||||
@@ -304,12 +328,23 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
# define VULKAN_HPP_DEFAULT_DISPATCHER ::VULKAN_HPP_NAMESPACE::detail::getDispatchLoaderStatic()
|
||||
# define VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE
|
||||
# endif
|
||||
#else
|
||||
# define VULKAN_HPP_DEFAULT_DISPATCHER_HANDLED
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_HPP_NO_DEFAULT_DISPATCHER )
|
||||
# define VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT
|
||||
# define VULKAN_HPP_DEFAULT_ASSIGNMENT( assignment )
|
||||
#else
|
||||
# define VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT = VULKAN_HPP_DEFAULT_DISPATCHER
|
||||
# define VULKAN_HPP_DEFAULT_ASSIGNMENT( assignment ) = assignment
|
||||
#endif
|
||||
#define VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT VULKAN_HPP_DEFAULT_ASSIGNMENT( VULKAN_HPP_DEFAULT_DISPATCHER )
|
||||
|
||||
#if !defined( VULKAN_HPP_EXPECTED ) && ( 23 <= VULKAN_HPP_CPP_VERSION ) && defined( __cpp_lib_expected ) && defined( VULKAN_HPP_USE_STD_EXPECTED )
|
||||
# if !( defined( VULKAN_HPP_ENABLE_STD_MODULE ) && defined( VULKAN_HPP_STD_MODULE ) )
|
||||
# include <expected>
|
||||
# endif
|
||||
# define VULKAN_HPP_EXPECTED std::expected
|
||||
# define VULKAN_HPP_UNEXPECTED std::unexpected
|
||||
#endif
|
||||
|
||||
#if !defined( VULKAN_HPP_RAII_NAMESPACE )
|
||||
|
||||
Vendored
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_IOS_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Vendored
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_MACOS_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Vendored
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_METAL_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Vendored
+3
-65
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_OHOS_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -22,7 +22,7 @@ extern "C" {
|
||||
// VK_OHOS_external_memory is a preprocessor guard. Do not pass it to API calls.
|
||||
#define VK_OHOS_external_memory 1
|
||||
struct OH_NativeBuffer;
|
||||
#define VK_OHOS_EXTERNAL_MEMORY_SPEC_VERSION 2
|
||||
#define VK_OHOS_EXTERNAL_MEMORY_SPEC_VERSION 1
|
||||
#define VK_OHOS_EXTERNAL_MEMORY_EXTENSION_NAME "VK_OHOS_external_memory"
|
||||
typedef struct VkNativeBufferUsageOHOS {
|
||||
VkStructureType sType;
|
||||
@@ -113,68 +113,6 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateSurfaceOHOS(
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
// VK_OHOS_native_buffer is a preprocessor guard. Do not pass it to API calls.
|
||||
#define VK_OHOS_native_buffer 1
|
||||
struct OHBufferHandle;
|
||||
#define VK_OHOS_NATIVE_BUFFER_SPEC_VERSION 1
|
||||
#define VK_OHOS_NATIVE_BUFFER_EXTENSION_NAME "VK_OHOS_native_buffer"
|
||||
|
||||
typedef enum VkSwapchainImageUsageFlagBitsOHOS {
|
||||
VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_OHOS = 0x00000001,
|
||||
VK_SWAPCHAIN_IMAGE_USAGE_FLAG_BITS_MAX_ENUM_OHOS = 0x7FFFFFFF
|
||||
} VkSwapchainImageUsageFlagBitsOHOS;
|
||||
typedef VkFlags VkSwapchainImageUsageFlagsOHOS;
|
||||
typedef struct VkNativeBufferOHOS {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
struct OHBufferHandle* handle;
|
||||
} VkNativeBufferOHOS;
|
||||
|
||||
typedef struct VkSwapchainImageCreateInfoOHOS {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkSwapchainImageUsageFlagsOHOS usage;
|
||||
} VkSwapchainImageCreateInfoOHOS;
|
||||
|
||||
typedef struct VkPhysicalDevicePresentationPropertiesOHOS {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 sharedImage;
|
||||
} VkPhysicalDevicePresentationPropertiesOHOS;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainGrallocUsageOHOS)(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, uint64_t* grallocUsage);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkAcquireImageOHOS)(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkQueueSignalReleaseImageOHOS)(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores, VkImage image, int32_t* pNativeFenceFd);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
#ifndef VK_ONLY_EXPORTED_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainGrallocUsageOHOS(
|
||||
VkDevice device,
|
||||
VkFormat format,
|
||||
VkImageUsageFlags imageUsage,
|
||||
uint64_t* grallocUsage);
|
||||
#endif
|
||||
|
||||
#ifndef VK_ONLY_EXPORTED_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkAcquireImageOHOS(
|
||||
VkDevice device,
|
||||
VkImage image,
|
||||
int32_t nativeFenceFd,
|
||||
VkSemaphore semaphore,
|
||||
VkFence fence);
|
||||
#endif
|
||||
|
||||
#ifndef VK_ONLY_EXPORTED_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkQueueSignalReleaseImageOHOS(
|
||||
VkQueue queue,
|
||||
uint32_t waitSemaphoreCount,
|
||||
const VkSemaphore* pWaitSemaphores,
|
||||
VkImage image,
|
||||
int32_t* pNativeFenceFd);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Vendored
+4516
-2258
File diff suppressed because it is too large
Load Diff
Vendored
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_SCREEN_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Vendored
+97
-82
@@ -1,5 +1,4 @@
|
||||
// Copyright 2015-2025 The Khronos Group Inc.
|
||||
//
|
||||
// Copyright 2015-2026 The Khronos Group Inc.
|
||||
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
//
|
||||
|
||||
@@ -8,13 +7,12 @@
|
||||
#ifndef VULKAN_SHARED_HPP
|
||||
#define VULKAN_SHARED_HPP
|
||||
|
||||
#include <vulkan/vulkan.hpp>
|
||||
|
||||
#if !defined( VULKAN_HPP_CXX_MODULE )
|
||||
# include <atomic> // std::atomic_size_t
|
||||
# include <vulkan/vulkan.hpp>
|
||||
#endif
|
||||
|
||||
namespace VULKAN_HPP_NAMESPACE
|
||||
VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE
|
||||
{
|
||||
#if !defined( VULKAN_HPP_NO_SMART_HANDLE )
|
||||
template <typename HandleType>
|
||||
@@ -84,7 +82,7 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
template <typename DestructorType, typename Deleter>
|
||||
struct SharedHeader
|
||||
{
|
||||
SharedHeader( SharedHandle<DestructorType> parent, Deleter deleter = Deleter() ) VULKAN_HPP_NOEXCEPT
|
||||
SharedHeader( SharedHandle<DestructorType> parent, Deleter deleter VULKAN_HPP_DEFAULT_ASSIGNMENT( Deleter() ) ) VULKAN_HPP_NOEXCEPT
|
||||
: parent( std::move( parent ) )
|
||||
, deleter( std::move( deleter ) )
|
||||
{
|
||||
@@ -97,7 +95,7 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
template <typename Deleter>
|
||||
struct SharedHeader<NoDestructor, Deleter>
|
||||
{
|
||||
SharedHeader( Deleter deleter = Deleter() ) VULKAN_HPP_NOEXCEPT : deleter( std::move( deleter ) ) {}
|
||||
SharedHeader( Deleter deleter VULKAN_HPP_DEFAULT_ASSIGNMENT( Deleter() ) ) VULKAN_HPP_NOEXCEPT : deleter( std::move( deleter ) ) {}
|
||||
|
||||
Deleter deleter;
|
||||
};
|
||||
@@ -113,8 +111,8 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
{
|
||||
}
|
||||
|
||||
ReferenceCounter( const ReferenceCounter & ) = delete;
|
||||
ReferenceCounter & operator=( const ReferenceCounter & ) = delete;
|
||||
ReferenceCounter( ReferenceCounter const & ) = delete;
|
||||
ReferenceCounter & operator=( ReferenceCounter const & ) = delete;
|
||||
|
||||
public:
|
||||
size_t addRef() VULKAN_HPP_NOEXCEPT
|
||||
@@ -148,7 +146,7 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
{
|
||||
}
|
||||
|
||||
SharedHandleBase( const SharedHandleBase & o ) VULKAN_HPP_NOEXCEPT
|
||||
SharedHandleBase( SharedHandleBase const & o ) VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
o.addRef();
|
||||
m_handle = o.m_handle;
|
||||
@@ -163,7 +161,7 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
o.m_control = nullptr;
|
||||
}
|
||||
|
||||
SharedHandleBase & operator=( const SharedHandleBase & o ) VULKAN_HPP_NOEXCEPT
|
||||
SharedHandleBase & operator=( SharedHandleBase const & o ) VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
SharedHandleBase( o ).swap( *this );
|
||||
return *this;
|
||||
@@ -213,7 +211,7 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
}
|
||||
# endif
|
||||
|
||||
const HandleType * operator->() const VULKAN_HPP_NOEXCEPT
|
||||
HandleType const * operator->() const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
return &m_handle;
|
||||
}
|
||||
@@ -235,25 +233,25 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
}
|
||||
|
||||
template <typename T = HandleType>
|
||||
typename std::enable_if<HasDestructor<T>::value, const SharedHandle<DestructorTypeOf<HandleType>> &>::type getDestructorType() const VULKAN_HPP_NOEXCEPT
|
||||
typename std::enable_if<HasDestructor<T>::value, SharedHandle<DestructorTypeOf<HandleType>> const &>::type getDestructorType() const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
return getHeader().parent;
|
||||
}
|
||||
|
||||
protected:
|
||||
template <typename T = HandleType>
|
||||
static typename std::enable_if<!HasDestructor<T>::value, void>::type internalDestroy( const HeaderType & control, HandleType handle ) VULKAN_HPP_NOEXCEPT
|
||||
static typename std::enable_if<!HasDestructor<T>::value, void>::type internalDestroy( HeaderType const & control, HandleType handle ) VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
control.deleter.destroy( handle );
|
||||
}
|
||||
|
||||
template <typename T = HandleType>
|
||||
static typename std::enable_if<HasDestructor<T>::value, void>::type internalDestroy( const HeaderType & control, HandleType handle ) VULKAN_HPP_NOEXCEPT
|
||||
static typename std::enable_if<HasDestructor<T>::value, void>::type internalDestroy( HeaderType const & control, HandleType handle ) VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
control.deleter.destroy( control.parent.get(), handle );
|
||||
}
|
||||
|
||||
const HeaderType & getHeader() const VULKAN_HPP_NOEXCEPT
|
||||
HeaderType const & getHeader() const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
return m_control->m_header;
|
||||
}
|
||||
@@ -282,7 +280,9 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
SharedHandle() = default;
|
||||
|
||||
template <typename T = HandleType, typename = typename std::enable_if<HasDestructor<T>::value && !HasPoolType<T>::value>::type>
|
||||
explicit SharedHandle( HandleType handle, SharedHandle<DestructorTypeOf<HandleType>> parent, DeleterType deleter = DeleterType() ) VULKAN_HPP_NOEXCEPT
|
||||
explicit SharedHandle( HandleType handle,
|
||||
SharedHandle<DestructorTypeOf<HandleType>> parent,
|
||||
DeleterType deleter VULKAN_HPP_DEFAULT_ASSIGNMENT( DeleterType() ) ) VULKAN_HPP_NOEXCEPT
|
||||
: BaseType( handle, std::move( parent ), std::move( deleter ) )
|
||||
{
|
||||
}
|
||||
@@ -293,13 +293,14 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
explicit SharedHandle( HandleType handle,
|
||||
SharedHandle<DestructorTypeOf<HandleType>> parent,
|
||||
SharedHandle<typename GetPoolType<HandleType>::type> pool,
|
||||
const Dispatcher & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT
|
||||
Dispatcher const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT
|
||||
: BaseType( handle, std::move( parent ), DeleterType{ std::move( pool ), dispatch } )
|
||||
{
|
||||
}
|
||||
|
||||
template <typename T = HandleType, typename = typename std::enable_if<!HasDestructor<T>::value>::type>
|
||||
explicit SharedHandle( HandleType handle, DeleterType deleter = DeleterType() ) VULKAN_HPP_NOEXCEPT : BaseType( handle, std::move( deleter ) )
|
||||
explicit SharedHandle( HandleType handle, DeleterType deleter VULKAN_HPP_DEFAULT_ASSIGNMENT( DeleterType() ) ) VULKAN_HPP_NOEXCEPT
|
||||
: BaseType( handle, std::move( deleter ) )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -318,24 +319,22 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
# pragma clang diagnostic ignored "-Wcast-function-type"
|
||||
# endif
|
||||
|
||||
template <typename HandleType>
|
||||
template <typename HandleType, typename Dispatcher = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
|
||||
class ObjectDestroyShared
|
||||
{
|
||||
public:
|
||||
using DestructorType = typename SharedHandleTraits<HandleType>::DestructorType;
|
||||
|
||||
template <class Dispatcher>
|
||||
using DestroyFunctionPointerType =
|
||||
typename std::conditional<HasDestructor<HandleType>::value,
|
||||
void ( DestructorType::* )( HandleType, const AllocationCallbacks *, const Dispatcher & ) const,
|
||||
void ( HandleType::* )( const AllocationCallbacks *, const Dispatcher & ) const>::type;
|
||||
void ( DestructorType::* )( HandleType, AllocationCallbacks const *, Dispatcher const & ) const,
|
||||
void ( HandleType::* )( AllocationCallbacks const *, Dispatcher const & ) const>::type;
|
||||
|
||||
using SelectorType = typename std::conditional<HasDestructor<HandleType>::value, DestructorType, HandleType>::type;
|
||||
|
||||
template <typename Dispatcher = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
|
||||
ObjectDestroyShared( Optional<const AllocationCallbacks> allocationCallbacks = nullptr,
|
||||
const Dispatcher & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT )
|
||||
: m_destroy( reinterpret_cast<decltype( m_destroy )>( static_cast<DestroyFunctionPointerType<Dispatcher>>( &SelectorType::destroy ) ) )
|
||||
ObjectDestroyShared( Optional<AllocationCallbacks const> allocationCallbacks VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ),
|
||||
Dispatcher const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT )
|
||||
: m_destroy( reinterpret_cast<decltype( m_destroy )>( static_cast<DestroyFunctionPointerType>( &SelectorType::destroy ) ) )
|
||||
, m_dispatch( &dispatch )
|
||||
, m_allocationCallbacks( allocationCallbacks )
|
||||
{
|
||||
@@ -357,24 +356,22 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
}
|
||||
|
||||
private:
|
||||
DestroyFunctionPointerType<detail::DispatchLoaderBase> m_destroy = nullptr;
|
||||
const detail::DispatchLoaderBase * m_dispatch = nullptr;
|
||||
Optional<const AllocationCallbacks> m_allocationCallbacks = nullptr;
|
||||
DestroyFunctionPointerType m_destroy = nullptr;
|
||||
Dispatcher const * m_dispatch = nullptr;
|
||||
Optional<AllocationCallbacks const> m_allocationCallbacks = nullptr;
|
||||
};
|
||||
|
||||
template <typename HandleType>
|
||||
template <typename HandleType, typename Dispatcher = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
|
||||
class ObjectFreeShared
|
||||
{
|
||||
public:
|
||||
using DestructorType = typename SharedHandleTraits<HandleType>::DestructorType;
|
||||
|
||||
template <class Dispatcher>
|
||||
using DestroyFunctionPointerType = void ( DestructorType::* )( HandleType, const AllocationCallbacks *, const Dispatcher & ) const;
|
||||
using DestroyFunctionPointerType = void ( DestructorType::* )( HandleType, AllocationCallbacks const *, Dispatcher const & ) const;
|
||||
|
||||
template <class Dispatcher = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
|
||||
ObjectFreeShared( Optional<const AllocationCallbacks> allocationCallbacks = nullptr,
|
||||
const Dispatcher & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT )
|
||||
: m_destroy( reinterpret_cast<decltype( m_destroy )>( static_cast<DestroyFunctionPointerType<Dispatcher>>( &DestructorType::free ) ) )
|
||||
ObjectFreeShared( Optional<AllocationCallbacks const> allocationCallbacks VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ),
|
||||
Dispatcher const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT )
|
||||
: m_destroy( reinterpret_cast<decltype( m_destroy )>( static_cast<DestroyFunctionPointerType>( &DestructorType::free ) ) )
|
||||
, m_dispatch( &dispatch )
|
||||
, m_allocationCallbacks( allocationCallbacks )
|
||||
{
|
||||
@@ -388,24 +385,21 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
}
|
||||
|
||||
private:
|
||||
DestroyFunctionPointerType<detail::DispatchLoaderBase> m_destroy = nullptr;
|
||||
const detail::DispatchLoaderBase * m_dispatch = nullptr;
|
||||
Optional<const AllocationCallbacks> m_allocationCallbacks = nullptr;
|
||||
DestroyFunctionPointerType m_destroy = nullptr;
|
||||
Dispatcher const * m_dispatch = nullptr;
|
||||
Optional<AllocationCallbacks const> m_allocationCallbacks = nullptr;
|
||||
};
|
||||
|
||||
template <typename HandleType>
|
||||
template <typename HandleType, typename Dispatcher = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
|
||||
class ObjectReleaseShared
|
||||
{
|
||||
public:
|
||||
using DestructorType = typename SharedHandleTraits<HandleType>::DestructorType;
|
||||
|
||||
template <class Dispatcher>
|
||||
using DestroyFunctionPointerType = void ( DestructorType::* )( HandleType, const Dispatcher & ) const;
|
||||
using DestroyFunctionPointerType = void ( DestructorType::* )( HandleType, Dispatcher const & ) const;
|
||||
|
||||
template <class Dispatcher = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
|
||||
ObjectReleaseShared( const Dispatcher & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT )
|
||||
: m_destroy( reinterpret_cast<decltype( m_destroy )>( static_cast<DestroyFunctionPointerType<Dispatcher>>( &DestructorType::release ) ) )
|
||||
, m_dispatch( &dispatch )
|
||||
ObjectReleaseShared( Dispatcher const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT )
|
||||
: m_destroy( reinterpret_cast<decltype( m_destroy )>( static_cast<DestroyFunctionPointerType>( &DestructorType::release ) ) ), m_dispatch( &dispatch )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -417,11 +411,11 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
}
|
||||
|
||||
private:
|
||||
DestroyFunctionPointerType<detail::DispatchLoaderBase> m_destroy = nullptr;
|
||||
const detail::DispatchLoaderBase * m_dispatch = nullptr;
|
||||
DestroyFunctionPointerType m_destroy = nullptr;
|
||||
Dispatcher const * m_dispatch = nullptr;
|
||||
};
|
||||
|
||||
template <typename HandleType, typename PoolType>
|
||||
template <typename HandleType, typename PoolType, typename Dispatcher = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
|
||||
class PoolFreeShared
|
||||
{
|
||||
public:
|
||||
@@ -429,17 +423,14 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
|
||||
using PoolTypeExport = PoolType;
|
||||
|
||||
template <class Dispatcher>
|
||||
using ReturnType = decltype( std::declval<DestructorType>().free( PoolType(), 0u, nullptr, Dispatcher() ) );
|
||||
|
||||
template <class Dispatcher>
|
||||
using DestroyFunctionPointerType = ReturnType<Dispatcher> ( DestructorType::* )( PoolType, uint32_t, const HandleType *, const Dispatcher & ) const;
|
||||
using DestroyFunctionPointerType = ReturnType ( DestructorType::* )( PoolType, uint32_t, HandleType const *, Dispatcher const & ) const;
|
||||
|
||||
PoolFreeShared() = default;
|
||||
|
||||
template <class Dispatcher = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
|
||||
PoolFreeShared( SharedHandle<PoolType> pool, const Dispatcher & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT )
|
||||
: m_destroy( reinterpret_cast<decltype( m_destroy )>( static_cast<DestroyFunctionPointerType<Dispatcher>>( &DestructorType::free ) ) )
|
||||
PoolFreeShared( SharedHandle<PoolType> pool, Dispatcher const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT )
|
||||
: m_destroy( reinterpret_cast<decltype( m_destroy )>( static_cast<DestroyFunctionPointerType>( &DestructorType::free ) ) )
|
||||
, m_dispatch( &dispatch )
|
||||
, m_pool( std::move( pool ) )
|
||||
{
|
||||
@@ -453,9 +444,9 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
}
|
||||
|
||||
private:
|
||||
DestroyFunctionPointerType<detail::DispatchLoaderBase> m_destroy = nullptr;
|
||||
const detail::DispatchLoaderBase * m_dispatch = nullptr;
|
||||
SharedHandle<PoolType> m_pool{};
|
||||
DestroyFunctionPointerType m_destroy = nullptr;
|
||||
Dispatcher const * m_dispatch = nullptr;
|
||||
SharedHandle<PoolType> m_pool{};
|
||||
};
|
||||
|
||||
# if defined( __GNUC__ ) && !defined( __clang__ ) && !defined( __INTEL_COMPILER )
|
||||
@@ -832,6 +823,28 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
|
||||
using SharedDebugUtilsMessengerEXT = SharedHandle<DebugUtilsMessengerEXT>;
|
||||
|
||||
//=== VK_AMD_gpa_interface ===
|
||||
template <>
|
||||
class SharedHandleTraits<GpaSessionAMD>
|
||||
{
|
||||
public:
|
||||
using DestructorType = Device;
|
||||
using deleter = detail::ObjectDestroyShared<GpaSessionAMD>;
|
||||
};
|
||||
|
||||
using SharedGpaSessionAMD = SharedHandle<GpaSessionAMD>;
|
||||
|
||||
//=== VK_EXT_descriptor_heap ===
|
||||
template <>
|
||||
class SharedHandleTraits<TensorARM>
|
||||
{
|
||||
public:
|
||||
using DestructorType = Device;
|
||||
using deleter = detail::ObjectDestroyShared<TensorARM>;
|
||||
};
|
||||
|
||||
using SharedTensorARM = SharedHandle<TensorARM>;
|
||||
|
||||
//=== VK_KHR_acceleration_structure ===
|
||||
template <>
|
||||
class SharedHandleTraits<AccelerationStructureKHR>
|
||||
@@ -946,16 +959,6 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
using SharedMicromapEXT = SharedHandle<MicromapEXT>;
|
||||
|
||||
//=== VK_ARM_tensors ===
|
||||
template <>
|
||||
class SharedHandleTraits<TensorARM>
|
||||
{
|
||||
public:
|
||||
using DestructorType = Device;
|
||||
using deleter = detail::ObjectDestroyShared<TensorARM>;
|
||||
};
|
||||
|
||||
using SharedTensorARM = SharedHandle<TensorARM>;
|
||||
|
||||
template <>
|
||||
class SharedHandleTraits<TensorViewARM>
|
||||
{
|
||||
@@ -1042,6 +1045,17 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
|
||||
using SharedIndirectExecutionSetEXT = SharedHandle<IndirectExecutionSetEXT>;
|
||||
|
||||
//=== VK_ARM_shader_instrumentation ===
|
||||
template <>
|
||||
class SharedHandleTraits<ShaderInstrumentationARM>
|
||||
{
|
||||
public:
|
||||
using DestructorType = Device;
|
||||
using deleter = detail::ObjectDestroyShared<ShaderInstrumentationARM>;
|
||||
};
|
||||
|
||||
using SharedShaderInstrumentationARM = SharedHandle<ShaderInstrumentationARM>;
|
||||
|
||||
// a number of SharedHandle specializations
|
||||
enum class SwapchainOwns
|
||||
{
|
||||
@@ -1051,9 +1065,9 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
|
||||
struct ImageHeader : SharedHeader<DestructorTypeOf<Image>, typename SharedHandleTraits<Image>::deleter>
|
||||
{
|
||||
ImageHeader( SharedHandle<DestructorTypeOf<Image>> parent,
|
||||
typename SharedHandleTraits<Image>::deleter deleter = typename SharedHandleTraits<Image>::deleter(),
|
||||
SwapchainOwns swapchainOwned = SwapchainOwns::no ) VULKAN_HPP_NOEXCEPT
|
||||
ImageHeader( SharedHandle<DestructorTypeOf<Image>> parent,
|
||||
typename SharedHandleTraits<Image>::deleter deleter VULKAN_HPP_DEFAULT_ASSIGNMENT( typename SharedHandleTraits<Image>::deleter() ),
|
||||
SwapchainOwns swapchainOwned = SwapchainOwns::no ) VULKAN_HPP_NOEXCEPT
|
||||
: SharedHeader<DestructorTypeOf<Image>, typename SharedHandleTraits<Image>::deleter>( std::move( parent ), std::move( deleter ) )
|
||||
, swapchainOwned( swapchainOwned )
|
||||
{
|
||||
@@ -1074,14 +1088,14 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
|
||||
explicit SharedHandle( Image handle,
|
||||
SharedHandle<DestructorTypeOf<Image>> parent,
|
||||
SwapchainOwns swapchain_owned = SwapchainOwns::no,
|
||||
DeleterType deleter = DeleterType() ) VULKAN_HPP_NOEXCEPT
|
||||
SwapchainOwns swapchain_owned VULKAN_HPP_DEFAULT_ASSIGNMENT( SwapchainOwns::no ),
|
||||
DeleterType deleter VULKAN_HPP_DEFAULT_ASSIGNMENT( DeleterType() ) ) VULKAN_HPP_NOEXCEPT
|
||||
: BaseType( handle, std::move( parent ), std::move( deleter ), swapchain_owned )
|
||||
{
|
||||
}
|
||||
|
||||
protected:
|
||||
static void internalDestroy( const ImageHeader & control, Image handle ) VULKAN_HPP_NOEXCEPT
|
||||
static void internalDestroy( ImageHeader const & control, Image handle ) VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
if ( control.swapchainOwned == SwapchainOwns::no )
|
||||
{
|
||||
@@ -1092,9 +1106,10 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
|
||||
struct SwapchainHeader
|
||||
{
|
||||
SwapchainHeader( SharedHandle<SurfaceKHR> surface,
|
||||
SharedHandle<DestructorTypeOf<SwapchainKHR>> parent,
|
||||
typename SharedHandleTraits<SwapchainKHR>::deleter deleter = typename SharedHandleTraits<SwapchainKHR>::deleter() ) VULKAN_HPP_NOEXCEPT
|
||||
SwapchainHeader( SharedHandle<SurfaceKHR> surface,
|
||||
SharedHandle<DestructorTypeOf<SwapchainKHR>> parent,
|
||||
typename SharedHandleTraits<SwapchainKHR>::deleter deleter
|
||||
VULKAN_HPP_DEFAULT_ASSIGNMENT( typename SharedHandleTraits<SwapchainKHR>::deleter() ) ) VULKAN_HPP_NOEXCEPT
|
||||
: surface( std::move( surface ) )
|
||||
, parent( std::move( parent ) )
|
||||
, deleter( std::move( deleter ) )
|
||||
@@ -1119,13 +1134,13 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
explicit SharedHandle( SwapchainKHR handle,
|
||||
SharedHandle<DestructorTypeOf<SwapchainKHR>> parent,
|
||||
SharedHandle<SurfaceKHR> surface,
|
||||
DeleterType deleter = DeleterType() ) VULKAN_HPP_NOEXCEPT
|
||||
DeleterType deleter VULKAN_HPP_DEFAULT_ASSIGNMENT( DeleterType() ) ) VULKAN_HPP_NOEXCEPT
|
||||
: BaseType( handle, std::move( surface ), std::move( parent ), std::move( deleter ) )
|
||||
{
|
||||
}
|
||||
|
||||
public:
|
||||
const SharedHandle<SurfaceKHR> & getSurface() const VULKAN_HPP_NOEXCEPT
|
||||
SharedHandle<SurfaceKHR> const & getSurface() const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
return getHeader().surface;
|
||||
}
|
||||
@@ -1140,13 +1155,13 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
public:
|
||||
using SharedHandleBase<HandleType, DestructorType>::SharedHandleBase;
|
||||
|
||||
const DestructorType & getDestructorType() const VULKAN_HPP_NOEXCEPT
|
||||
DestructorType const & getDestructorType() const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
return SharedHandleBase<HandleType, DestructorType>::getHeader();
|
||||
}
|
||||
|
||||
protected:
|
||||
static void internalDestroy( const DestructorType &, HandleType ) VULKAN_HPP_NOEXCEPT {}
|
||||
static void internalDestroy( DestructorType const &, HandleType ) VULKAN_HPP_NOEXCEPT {}
|
||||
};
|
||||
|
||||
//=== VK_VERSION_1_0 ===
|
||||
|
||||
+1370
-248
File diff suppressed because it is too large
Load Diff
+60094
-12923
File diff suppressed because it is too large
Load Diff
+1897
-647
File diff suppressed because it is too large
Load Diff
Vendored
+59
@@ -0,0 +1,59 @@
|
||||
#ifndef VULKAN_UBM_H_
|
||||
#define VULKAN_UBM_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
// VK_SEC_ubm_surface is a preprocessor guard. Do not pass it to API calls.
|
||||
#define VK_SEC_ubm_surface 1
|
||||
#define VK_SEC_UBM_SURFACE_SPEC_VERSION 1
|
||||
#define VK_SEC_UBM_SURFACE_EXTENSION_NAME "VK_SEC_ubm_surface"
|
||||
typedef VkFlags VkUbmSurfaceCreateFlagsSEC;
|
||||
typedef struct VkUbmSurfaceCreateInfoSEC {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkUbmSurfaceCreateFlagsSEC flags;
|
||||
struct ubm_device* device;
|
||||
struct ubm_surface* surface;
|
||||
} VkUbmSurfaceCreateInfoSEC;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateUbmSurfaceSEC)(VkInstance instance, const VkUbmSurfaceCreateInfoSEC* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||
typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceUbmPresentationSupportSEC)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct ubm_device* device);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
#ifndef VK_ONLY_EXPORTED_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateUbmSurfaceSEC(
|
||||
VkInstance instance,
|
||||
const VkUbmSurfaceCreateInfoSEC* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkSurfaceKHR* pSurface);
|
||||
#endif
|
||||
|
||||
#ifndef VK_ONLY_EXPORTED_PROTOTYPES
|
||||
VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceUbmPresentationSupportSEC(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
uint32_t queueFamilyIndex,
|
||||
struct ubm_device* device);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Vendored
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_VI_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Vendored
+62
-307
@@ -1,318 +1,73 @@
|
||||
// Copyright 2021-2025 The Khronos Group Inc.
|
||||
// Copyright 2021-2026 The Khronos Group Inc.
|
||||
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
//
|
||||
|
||||
// This header is generated from the Khronos Vulkan XML API Registry.
|
||||
|
||||
// Note: This module is still in an experimental state.
|
||||
// Any feedback is welcome on https://github.com/KhronosGroup/Vulkan-Hpp/issues.
|
||||
|
||||
module;
|
||||
|
||||
#define VULKAN_HPP_CXX_MODULE 1
|
||||
|
||||
#if __has_include( <vk_video/vulkan_video_codecs_common.h> )
|
||||
# include <vk_video/vulkan_video_codecs_common.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_h264std.h> )
|
||||
# include <vk_video/vulkan_video_codec_h264std.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_h264std_decode.h> )
|
||||
# include <vk_video/vulkan_video_codec_h264std_decode.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_h264std_encode.h> )
|
||||
# include <vk_video/vulkan_video_codec_h264std_encode.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_h265std.h> )
|
||||
# include <vk_video/vulkan_video_codec_h265std.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_h265std_decode.h> )
|
||||
# include <vk_video/vulkan_video_codec_h265std_decode.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_h265std_encode.h> )
|
||||
# include <vk_video/vulkan_video_codec_h265std_encode.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_vp9std.h> )
|
||||
# include <vk_video/vulkan_video_codec_vp9std.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_vp9std_decode.h> )
|
||||
# include <vk_video/vulkan_video_codec_vp9std_decode.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_av1std.h> )
|
||||
# include <vk_video/vulkan_video_codec_av1std.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_av1std_decode.h> )
|
||||
# include <vk_video/vulkan_video_codec_av1std_decode.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_av1std_encode.h> )
|
||||
# include <vk_video/vulkan_video_codec_av1std_encode.h>
|
||||
#endif
|
||||
|
||||
// clang-format off
|
||||
#include <vulkan/vulkan_hpp_macros.hpp>
|
||||
// clang-format on
|
||||
|
||||
export module vulkan_video;
|
||||
|
||||
import std;
|
||||
import vulkan;
|
||||
|
||||
#if defined( __clang__ )
|
||||
# pragma clang diagnostic push
|
||||
# pragma clang diagnostic ignored "-Winclude-angled-in-module-purview"
|
||||
#elif defined( _MSC_VER )
|
||||
# pragma warning( push )
|
||||
# pragma warning( disable : 5244 )
|
||||
#elif defined( __GNUC__ )
|
||||
#endif
|
||||
|
||||
#include <vulkan/vulkan_video.hpp>
|
||||
|
||||
export module vulkan_video_hpp;
|
||||
|
||||
export namespace VULKAN_HPP_NAMESPACE
|
||||
{
|
||||
namespace VULKAN_HPP_VIDEO_NAMESPACE
|
||||
{
|
||||
|
||||
//=================
|
||||
//=== CONSTANTs ===
|
||||
//=================
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_H264STD_H_ )
|
||||
//=== vulkan_video_codec_h264std ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264CpbCntListSize;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264MaxChromaPlanes;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264MaxNumListRef;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264NoReferencePicture;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ScalingList4X4NumElements;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ScalingList4X4NumLists;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ScalingList8X8NumElements;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ScalingList8X8NumLists;
|
||||
#if defined( __clang__ )
|
||||
# pragma clang diagnostic pop
|
||||
#elif defined( _MSC_VER )
|
||||
# pragma warning( pop )
|
||||
#elif defined( __GNUC__ )
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ )
|
||||
//=== vulkan_video_codec_h264std_decode ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeH264FieldOrderCountListSize;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_H265STD_H_ )
|
||||
//=== vulkan_video_codec_h265std ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ChromaQpOffsetListSize;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ChromaQpOffsetTileColsListSize;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ChromaQpOffsetTileRowsListSize;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265CpbCntListSize;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265MaxChromaPlanes;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265MaxDeltaPoc;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265MaxDpbSize;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265MaxLongTermPics;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265MaxLongTermRefPicsSps;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265MaxNumListRef;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265MaxShortTermRefPicSets;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265NoReferencePicture;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PredictorPaletteCompEntriesListSize;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PredictorPaletteComponentsListSize;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ScalingList16X16NumElements;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ScalingList16X16NumLists;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ScalingList32X32NumElements;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ScalingList32X32NumLists;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ScalingList4X4NumElements;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ScalingList4X4NumLists;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ScalingList8X8NumElements;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ScalingList8X8NumLists;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SublayersListSize;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ )
|
||||
//=== vulkan_video_codec_h265std_decode ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeH265RefPicSetListSize;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_VP9STD_H_ )
|
||||
//=== vulkan_video_codec_vp9std ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Vp9LoopFilterAdjustments;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Vp9MaxRefFrames;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Vp9MaxSegmentationPredProb;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Vp9MaxSegmentationTreeProbs;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Vp9MaxSegments;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Vp9NumRefFrames;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Vp9RefsPerFrame;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Vp9SegLvlMax;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_AV1STD_H_ )
|
||||
//=== vulkan_video_codec_av1std ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1GlobalMotionParams;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1LoopFilterAdjustments;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1MaxCdefFilterStrengths;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1MaxLoopFilterStrengths;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1MaxNumCbPoints;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1MaxNumCrPoints;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1MaxNumPlanes;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1MaxNumPosChroma;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1MaxNumPosLuma;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1MaxNumYPoints;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1MaxSegments;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1MaxTileCols;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1MaxTileRows;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1NumRefFrames;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1PrimaryRefNone;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1RefsPerFrame;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1SegLvlMax;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1SelectIntegerMv;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1SelectScreenContentTools;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1SkipModeFrames;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::Av1TotalRefsPerFrame;
|
||||
#endif
|
||||
|
||||
//=============
|
||||
//=== ENUMs ===
|
||||
//=============
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_H264STD_H_ )
|
||||
//=== vulkan_video_codec_h264std ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264AspectRatioIdc;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264CabacInitIdc;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ChromaFormatIdc;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264DisableDeblockingFilterIdc;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264LevelIdc;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264MemMgmtControlOp;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ModificationOfPicNumsIdc;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264NonVclNaluType;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264PictureType;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264PocType;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ProfileIdc;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264SliceType;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264WeightedBipredIdc;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ )
|
||||
//=== vulkan_video_codec_h264std_decode ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeH264FieldOrderCount;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_H265STD_H_ )
|
||||
//=== vulkan_video_codec_h265std ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265AspectRatioIdc;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ChromaFormatIdc;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265LevelIdc;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PictureType;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ProfileIdc;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SliceType;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_VP9STD_H_ )
|
||||
//=== vulkan_video_codec_vp9std ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9ColorSpace;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9FrameType;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9InterpolationFilter;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9Level;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9Profile;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9ReferenceName;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_AV1STD_H_ )
|
||||
//=== vulkan_video_codec_av1std ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1ChromaSamplePosition;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1ColorPrimaries;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1FrameRestorationType;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1FrameType;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1InterpolationFilter;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Level;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1MatrixCoefficients;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Profile;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1ReferenceName;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TransferCharacteristics;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TxMode;
|
||||
#endif
|
||||
|
||||
//===============
|
||||
//=== STRUCTS ===
|
||||
//===============
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_H264STD_H_ )
|
||||
//=== vulkan_video_codec_h264std ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264HrdParameters;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264PictureParameterSet;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264PpsFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ScalingLists;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264SequenceParameterSet;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264SequenceParameterSetVui;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264SpsFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264SpsVuiFlags;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ )
|
||||
//=== vulkan_video_codec_h264std_decode ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeH264PictureInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeH264PictureInfoFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeH264ReferenceInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeH264ReferenceInfoFlags;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ )
|
||||
//=== vulkan_video_codec_h264std_encode ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264PictureInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264PictureInfoFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264ReferenceInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264ReferenceInfoFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264ReferenceListsInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264ReferenceListsInfoFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264RefListModEntry;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264RefPicMarkingEntry;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264SliceHeader;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264SliceHeaderFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264WeightTable;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264WeightTableFlags;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_H265STD_H_ )
|
||||
//=== vulkan_video_codec_h265std ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265DecPicBufMgr;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265HrdFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265HrdParameters;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265LongTermRefPicsSps;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PictureParameterSet;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PpsFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PredictorPaletteEntries;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ProfileTierLevel;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ProfileTierLevelFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ScalingLists;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SequenceParameterSet;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SequenceParameterSetVui;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ShortTermRefPicSet;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ShortTermRefPicSetFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SpsFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SpsVuiFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SubLayerHrdParameters;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265VideoParameterSet;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265VpsFlags;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ )
|
||||
//=== vulkan_video_codec_h265std_decode ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeH265PictureInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeH265PictureInfoFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeH265ReferenceInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeH265ReferenceInfoFlags;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ )
|
||||
//=== vulkan_video_codec_h265std_encode ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265LongTermRefPics;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265PictureInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265PictureInfoFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265ReferenceInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265ReferenceInfoFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265ReferenceListsInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265ReferenceListsInfoFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265SliceSegmentHeader;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265SliceSegmentHeaderFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265WeightTable;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265WeightTableFlags;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_VP9STD_H_ )
|
||||
//=== vulkan_video_codec_vp9std ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9ColorConfig;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9ColorConfigFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9LoopFilter;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9LoopFilterFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9Segmentation;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9SegmentationFlags;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ )
|
||||
//=== vulkan_video_codec_vp9std_decode ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeVP9PictureInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeVP9PictureInfoFlags;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_AV1STD_H_ )
|
||||
//=== vulkan_video_codec_av1std ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1CDEF;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1ColorConfig;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1ColorConfigFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1FilmGrain;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1FilmGrainFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1GlobalMotion;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1LoopFilter;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1LoopFilterFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1LoopRestoration;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Quantization;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1QuantizationFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Segmentation;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1SequenceHeader;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1SequenceHeaderFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TileInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TileInfoFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TimingInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TimingInfoFlags;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ )
|
||||
//=== vulkan_video_codec_av1std_decode ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeAV1PictureInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeAV1PictureInfoFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeAV1ReferenceInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeAV1ReferenceInfoFlags;
|
||||
#endif
|
||||
|
||||
#if defined( VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ )
|
||||
//=== vulkan_video_codec_av1std_encode ===
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1DecoderModelInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1ExtensionHeader;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1OperatingPointInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1OperatingPointInfoFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1PictureInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1PictureInfoFlags;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1ReferenceInfo;
|
||||
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1ReferenceInfoFlags;
|
||||
#endif
|
||||
|
||||
} // namespace VULKAN_HPP_VIDEO_NAMESPACE
|
||||
} // namespace VULKAN_HPP_NAMESPACE
|
||||
|
||||
Vendored
+98
-98
@@ -1,4 +1,4 @@
|
||||
// Copyright 2021-2025 The Khronos Group Inc.
|
||||
// Copyright 2021-2026 The Khronos Group Inc.
|
||||
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
//
|
||||
|
||||
@@ -13,56 +13,55 @@
|
||||
# define has_include_was_not_defined
|
||||
#endif
|
||||
|
||||
// clang-format off
|
||||
#include <vulkan/vulkan.hpp>
|
||||
// clang-format on
|
||||
#if !defined( VULKAN_HPP_CXX_MODULE )
|
||||
# include <vulkan/vulkan.hpp>
|
||||
# if __has_include( <vk_video/vulkan_video_codecs_common.h> )
|
||||
# include <vk_video/vulkan_video_codecs_common.h>
|
||||
# endif
|
||||
# if __has_include( <vk_video/vulkan_video_codec_h264std.h> )
|
||||
# include <vk_video/vulkan_video_codec_h264std.h>
|
||||
# endif
|
||||
# if __has_include( <vk_video/vulkan_video_codec_h264std_decode.h> )
|
||||
# include <vk_video/vulkan_video_codec_h264std_decode.h>
|
||||
# endif
|
||||
# if __has_include( <vk_video/vulkan_video_codec_h264std_encode.h> )
|
||||
# include <vk_video/vulkan_video_codec_h264std_encode.h>
|
||||
# endif
|
||||
# if __has_include( <vk_video/vulkan_video_codec_h265std.h> )
|
||||
# include <vk_video/vulkan_video_codec_h265std.h>
|
||||
# endif
|
||||
# if __has_include( <vk_video/vulkan_video_codec_h265std_decode.h> )
|
||||
# include <vk_video/vulkan_video_codec_h265std_decode.h>
|
||||
# endif
|
||||
# if __has_include( <vk_video/vulkan_video_codec_h265std_encode.h> )
|
||||
# include <vk_video/vulkan_video_codec_h265std_encode.h>
|
||||
# endif
|
||||
# if __has_include( <vk_video/vulkan_video_codec_vp9std.h> )
|
||||
# include <vk_video/vulkan_video_codec_vp9std.h>
|
||||
# endif
|
||||
# if __has_include( <vk_video/vulkan_video_codec_vp9std_decode.h> )
|
||||
# include <vk_video/vulkan_video_codec_vp9std_decode.h>
|
||||
# endif
|
||||
# if __has_include( <vk_video/vulkan_video_codec_av1std.h> )
|
||||
# include <vk_video/vulkan_video_codec_av1std.h>
|
||||
# endif
|
||||
# if __has_include( <vk_video/vulkan_video_codec_av1std_decode.h> )
|
||||
# include <vk_video/vulkan_video_codec_av1std_decode.h>
|
||||
# endif
|
||||
# if __has_include( <vk_video/vulkan_video_codec_av1std_encode.h> )
|
||||
# include <vk_video/vulkan_video_codec_av1std_encode.h>
|
||||
# endif
|
||||
|
||||
#if __has_include( <vk_video/vulkan_video_codecs_common.h> )
|
||||
# include <vk_video/vulkan_video_codecs_common.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_h264std.h> )
|
||||
# include <vk_video/vulkan_video_codec_h264std.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_h264std_decode.h> )
|
||||
# include <vk_video/vulkan_video_codec_h264std_decode.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_h264std_encode.h> )
|
||||
# include <vk_video/vulkan_video_codec_h264std_encode.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_h265std.h> )
|
||||
# include <vk_video/vulkan_video_codec_h265std.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_h265std_decode.h> )
|
||||
# include <vk_video/vulkan_video_codec_h265std_decode.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_h265std_encode.h> )
|
||||
# include <vk_video/vulkan_video_codec_h265std_encode.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_vp9std.h> )
|
||||
# include <vk_video/vulkan_video_codec_vp9std.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_vp9std_decode.h> )
|
||||
# include <vk_video/vulkan_video_codec_vp9std_decode.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_av1std.h> )
|
||||
# include <vk_video/vulkan_video_codec_av1std.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_av1std_decode.h> )
|
||||
# include <vk_video/vulkan_video_codec_av1std_decode.h>
|
||||
#endif
|
||||
#if __has_include( <vk_video/vulkan_video_codec_av1std_encode.h> )
|
||||
# include <vk_video/vulkan_video_codec_av1std_encode.h>
|
||||
#endif
|
||||
|
||||
#if !defined( VULKAN_HPP_VIDEO_NAMESPACE )
|
||||
# define VULKAN_HPP_VIDEO_NAMESPACE video
|
||||
#endif
|
||||
|
||||
namespace VULKAN_HPP_NAMESPACE
|
||||
VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE
|
||||
{
|
||||
namespace VULKAN_HPP_VIDEO_NAMESPACE
|
||||
{
|
||||
|
||||
//=================
|
||||
//=== CONSTANTs ===
|
||||
//=================
|
||||
@@ -174,6 +173,8 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
eBaseline = STD_VIDEO_H264_PROFILE_IDC_BASELINE,
|
||||
eMain = STD_VIDEO_H264_PROFILE_IDC_MAIN,
|
||||
eHigh = STD_VIDEO_H264_PROFILE_IDC_HIGH,
|
||||
eHigh10 = STD_VIDEO_H264_PROFILE_IDC_HIGH_10,
|
||||
eHigh422 = STD_VIDEO_H264_PROFILE_IDC_HIGH_422,
|
||||
eHigh444Predictive = STD_VIDEO_H264_PROFILE_IDC_HIGH_444_PREDICTIVE,
|
||||
eInvalid = STD_VIDEO_H264_PROFILE_IDC_INVALID
|
||||
};
|
||||
@@ -805,7 +806,7 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
uint8_t chroma_sample_loc_type_top_field = {};
|
||||
uint8_t chroma_sample_loc_type_bottom_field = {};
|
||||
uint32_t reserved1 = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264HrdParameters * pHrdParameters = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264HrdParameters const * pHrdParameters = {};
|
||||
};
|
||||
|
||||
struct H264SpsFlags
|
||||
@@ -982,9 +983,9 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
uint32_t frame_crop_top_offset = {};
|
||||
uint32_t frame_crop_bottom_offset = {};
|
||||
uint32_t reserved2 = {};
|
||||
const int32_t * pOffsetForRefFrame = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ScalingLists * pScalingLists = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264SequenceParameterSetVui * pSequenceParameterSetVui = {};
|
||||
int32_t const * pOffsetForRefFrame = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ScalingLists const * pScalingLists = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264SequenceParameterSetVui const * pSequenceParameterSetVui = {};
|
||||
};
|
||||
|
||||
struct H264PpsFlags
|
||||
@@ -1087,7 +1088,7 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
int8_t pic_init_qs_minus26 = {};
|
||||
int8_t chroma_qp_index_offset = {};
|
||||
int8_t second_chroma_qp_index_offset = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ScalingLists * pScalingLists = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ScalingLists const * pScalingLists = {};
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -1669,9 +1670,9 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
uint8_t refList1ModOpCount = {};
|
||||
uint8_t refPicMarkingOpCount = {};
|
||||
ArrayWrapper1D<uint8_t, 7> reserved1 = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264RefListModEntry * pRefList0ModOperations = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264RefListModEntry * pRefList1ModOperations = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264RefPicMarkingEntry * pRefPicMarkingOperations = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264RefListModEntry const * pRefList0ModOperations = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264RefListModEntry const * pRefList1ModOperations = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264RefPicMarkingEntry const * pRefPicMarkingOperations = {};
|
||||
};
|
||||
|
||||
struct EncodeH264PictureInfo
|
||||
@@ -1721,7 +1722,7 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
int32_t PicOrderCnt = {};
|
||||
uint8_t temporal_id = {};
|
||||
ArrayWrapper1D<uint8_t, 3> reserved1 = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264ReferenceListsInfo * pRefLists = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264ReferenceListsInfo const * pRefLists = {};
|
||||
};
|
||||
|
||||
struct EncodeH264ReferenceInfo
|
||||
@@ -1819,7 +1820,7 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264CabacInitIdc::e0;
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264DisableDeblockingFilterIdc disable_deblocking_filter_idc =
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264DisableDeblockingFilterIdc::eDisabled;
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264WeightTable * pWeightTable = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264WeightTable const * pWeightTable = {};
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -2016,8 +2017,8 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
ArrayWrapper1D<uint8_t, STD_VIDEO_H265_SUBLAYERS_LIST_SIZE> cpb_cnt_minus1 = {};
|
||||
ArrayWrapper1D<uint16_t, STD_VIDEO_H265_SUBLAYERS_LIST_SIZE> elemental_duration_in_tc_minus1 = {};
|
||||
ArrayWrapper1D<uint16_t, 3> reserved = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SubLayerHrdParameters * pSubLayerHrdParametersNal = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SubLayerHrdParameters * pSubLayerHrdParametersVcl = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SubLayerHrdParameters const * pSubLayerHrdParametersNal = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SubLayerHrdParameters const * pSubLayerHrdParametersVcl = {};
|
||||
};
|
||||
|
||||
struct H265VpsFlags
|
||||
@@ -2198,9 +2199,9 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
uint32_t vps_time_scale = {};
|
||||
uint32_t vps_num_ticks_poc_diff_one_minus1 = {};
|
||||
uint32_t reserved3 = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265DecPicBufMgr * pDecPicBufMgr = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265HrdParameters * pHrdParameters = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ProfileTierLevel * pProfileTierLevel = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265DecPicBufMgr const * pDecPicBufMgr = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265HrdParameters const * pHrdParameters = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ProfileTierLevel const * pProfileTierLevel = {};
|
||||
};
|
||||
|
||||
struct H265ScalingLists
|
||||
@@ -2387,7 +2388,7 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
uint8_t max_bits_per_min_cu_denom = {};
|
||||
uint8_t log2_max_mv_length_horizontal = {};
|
||||
uint8_t log2_max_mv_length_vertical = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265HrdParameters * pHrdParameters = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265HrdParameters const * pHrdParameters = {};
|
||||
};
|
||||
|
||||
struct H265PredictorPaletteEntries
|
||||
@@ -2744,13 +2745,13 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
uint32_t conf_win_right_offset = {};
|
||||
uint32_t conf_win_top_offset = {};
|
||||
uint32_t conf_win_bottom_offset = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ProfileTierLevel * pProfileTierLevel = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265DecPicBufMgr * pDecPicBufMgr = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ScalingLists * pScalingLists = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ShortTermRefPicSet * pShortTermRefPicSet = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265LongTermRefPicsSps * pLongTermRefPicsSps = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SequenceParameterSetVui * pSequenceParameterSetVui = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PredictorPaletteEntries * pPredictorPaletteEntries = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ProfileTierLevel const * pProfileTierLevel = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265DecPicBufMgr const * pDecPicBufMgr = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ScalingLists const * pScalingLists = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ShortTermRefPicSet const * pShortTermRefPicSet = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265LongTermRefPicsSps const * pLongTermRefPicsSps = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SequenceParameterSetVui const * pSequenceParameterSetVui = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PredictorPaletteEntries const * pPredictorPaletteEntries = {};
|
||||
};
|
||||
|
||||
struct H265PpsFlags
|
||||
@@ -2932,8 +2933,8 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
ArrayWrapper1D<uint16_t, STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE> column_width_minus1 = {};
|
||||
ArrayWrapper1D<uint16_t, STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE> row_height_minus1 = {};
|
||||
uint32_t reserved3 = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ScalingLists * pScalingLists = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PredictorPaletteEntries * pPredictorPaletteEntries = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ScalingLists const * pScalingLists = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PredictorPaletteEntries const * pPredictorPaletteEntries = {};
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -3325,7 +3326,7 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
int8_t slice_act_cr_qp_offset = {};
|
||||
int8_t slice_qp_delta = {};
|
||||
uint16_t reserved1 = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265WeightTable * pWeightTable = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265WeightTable const * pWeightTable = {};
|
||||
};
|
||||
|
||||
struct EncodeH265ReferenceListsInfoFlags
|
||||
@@ -3561,9 +3562,9 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
int32_t PicOrderCntVal = {};
|
||||
uint8_t TemporalId = {};
|
||||
ArrayWrapper1D<uint8_t, 7> reserved1 = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265ReferenceListsInfo * pRefLists = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ShortTermRefPicSet * pShortTermRefPicSet = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265LongTermRefPics * pLongTermRefPics = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265ReferenceListsInfo const * pRefLists = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ShortTermRefPicSet const * pShortTermRefPicSet = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265LongTermRefPics const * pLongTermRefPics = {};
|
||||
};
|
||||
|
||||
struct EncodeH265ReferenceInfoFlags
|
||||
@@ -4019,9 +4020,9 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
uint8_t tile_cols_log2 = {};
|
||||
uint8_t tile_rows_log2 = {};
|
||||
ArrayWrapper1D<uint16_t, 3> reserved1 = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9ColorConfig * pColorConfig = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9LoopFilter * pLoopFilter = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9Segmentation * pSegmentation = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9ColorConfig const * pColorConfig = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9LoopFilter const * pLoopFilter = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9Segmentation const * pSegmentation = {};
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -4502,10 +4503,10 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
uint16_t context_update_tile_id = {};
|
||||
uint8_t tile_size_bytes_minus_1 = {};
|
||||
ArrayWrapper1D<uint8_t, 7> reserved1 = {};
|
||||
const uint16_t * pMiColStarts = {};
|
||||
const uint16_t * pMiRowStarts = {};
|
||||
const uint16_t * pWidthInSbsMinus1 = {};
|
||||
const uint16_t * pHeightInSbsMinus1 = {};
|
||||
uint16_t const * pMiColStarts = {};
|
||||
uint16_t const * pMiRowStarts = {};
|
||||
uint16_t const * pWidthInSbsMinus1 = {};
|
||||
uint16_t const * pHeightInSbsMinus1 = {};
|
||||
};
|
||||
|
||||
struct AV1CDEF
|
||||
@@ -4862,8 +4863,8 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
uint8_t seq_force_integer_mv = {};
|
||||
uint8_t seq_force_screen_content_tools = {};
|
||||
ArrayWrapper1D<uint8_t, 5> reserved1 = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1ColorConfig * pColorConfig = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TimingInfo * pTimingInfo = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1ColorConfig const * pColorConfig = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TimingInfo const * pTimingInfo = {};
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -5008,14 +5009,14 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
ArrayWrapper1D<uint8_t, 3> reserved2 = {};
|
||||
ArrayWrapper1D<uint8_t, STD_VIDEO_AV1_NUM_REF_FRAMES> OrderHints = {};
|
||||
ArrayWrapper1D<uint32_t, STD_VIDEO_AV1_NUM_REF_FRAMES> expectedFrameId = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TileInfo * pTileInfo = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Quantization * pQuantization = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Segmentation * pSegmentation = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1LoopFilter * pLoopFilter = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1CDEF * pCDEF = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1LoopRestoration * pLoopRestoration = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1GlobalMotion * pGlobalMotion = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1FilmGrain * pFilmGrain = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TileInfo const * pTileInfo = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Quantization const * pQuantization = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Segmentation const * pSegmentation = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1LoopFilter const * pLoopFilter = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1CDEF const * pCDEF = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1LoopRestoration const * pLoopRestoration = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1GlobalMotion const * pGlobalMotion = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1FilmGrain const * pFilmGrain = {};
|
||||
};
|
||||
|
||||
struct DecodeAV1ReferenceInfoFlags
|
||||
@@ -5421,15 +5422,15 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
ArrayWrapper1D<int8_t, STD_VIDEO_AV1_REFS_PER_FRAME> ref_frame_idx = {};
|
||||
ArrayWrapper1D<uint8_t, 3> reserved1 = {};
|
||||
ArrayWrapper1D<uint32_t, STD_VIDEO_AV1_REFS_PER_FRAME> delta_frame_id_minus_1 = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TileInfo * pTileInfo = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Quantization * pQuantization = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Segmentation * pSegmentation = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1LoopFilter * pLoopFilter = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1CDEF * pCDEF = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1LoopRestoration * pLoopRestoration = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1GlobalMotion * pGlobalMotion = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1ExtensionHeader * pExtensionHeader = {};
|
||||
const uint32_t * pBufferRemovalTimes = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TileInfo const * pTileInfo = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Quantization const * pQuantization = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Segmentation const * pSegmentation = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1LoopFilter const * pLoopFilter = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1CDEF const * pCDEF = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1LoopRestoration const * pLoopRestoration = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1GlobalMotion const * pGlobalMotion = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1ExtensionHeader const * pExtensionHeader = {};
|
||||
uint32_t const * pBufferRemovalTimes = {};
|
||||
};
|
||||
|
||||
struct EncodeAV1ReferenceInfoFlags
|
||||
@@ -5514,10 +5515,9 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1FrameType frame_type = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1FrameType::eKey;
|
||||
uint8_t OrderHint = {};
|
||||
ArrayWrapper1D<uint8_t, 3> reserved1 = {};
|
||||
const VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1ExtensionHeader * pExtensionHeader = {};
|
||||
VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1ExtensionHeader const * pExtensionHeader = {};
|
||||
};
|
||||
#endif
|
||||
|
||||
} // namespace VULKAN_HPP_VIDEO_NAMESPACE
|
||||
} // namespace VULKAN_HPP_NAMESPACE
|
||||
|
||||
|
||||
Vendored
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_WAYLAND_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Vendored
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_WIN32_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Vendored
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_XCB_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Vendored
+2
-2
@@ -2,9 +2,9 @@
|
||||
#define VULKAN_XLIB_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2025 The Khronos Group Inc.
|
||||
** Copyright 2015-2026 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user