Commit 4e18ca3
authored
[SPIR-V] Fix invalid codegen for empty cbuffers (microsoft#7717)
Each variable in the Uniform/Uniform Constant storage class must be
decorated with DescriptorSet + Binding.
-> VUID-StandaloneSpirv-UniformConstant-06677
When a cbuffer was empty (or only contained resources), an empty struct
and variable in the uniform storage class was created. Because the
cbuffer was empty, no binding/descriptor set was assigned, hence no
decoration was emitted.
This was fine as long as we compiled with optimizations on, as DCE would
get rid of this unused cbuffer. But compiling with -O0 would yield a
validation error.
Fixes microsoft#76811 parent dbcbac9 commit 4e18ca3
File tree
5 files changed
+52
-34
lines changed- tools/clang
- lib/SPIRV
- test/CodeGenSPIRV
5 files changed
+52
-34
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1381 | 1381 | | |
1382 | 1382 | | |
1383 | 1383 | | |
1384 | | - | |
1385 | 1384 | | |
1386 | 1385 | | |
1387 | 1386 | | |
| |||
1473 | 1472 | | |
1474 | 1473 | | |
1475 | 1474 | | |
1476 | | - | |
| 1475 | + | |
| 1476 | + | |
| 1477 | + | |
| 1478 | + | |
| 1479 | + | |
| 1480 | + | |
| 1481 | + | |
| 1482 | + | |
| 1483 | + | |
| 1484 | + | |
| 1485 | + | |
| 1486 | + | |
| 1487 | + | |
| 1488 | + | |
| 1489 | + | |
| 1490 | + | |
| 1491 | + | |
| 1492 | + | |
| 1493 | + | |
| 1494 | + | |
| 1495 | + | |
| 1496 | + | |
1477 | 1497 | | |
1478 | 1498 | | |
1479 | 1499 | | |
| |||
1486 | 1506 | | |
1487 | 1507 | | |
1488 | 1508 | | |
1489 | | - | |
1490 | | - | |
1491 | | - | |
1492 | | - | |
1493 | | - | |
1494 | | - | |
1495 | | - | |
1496 | | - | |
1497 | | - | |
1498 | | - | |
| 1509 | + | |
| 1510 | + | |
| 1511 | + | |
1499 | 1512 | | |
1500 | | - | |
1501 | | - | |
1502 | | - | |
1503 | | - | |
1504 | | - | |
1505 | | - | |
1506 | | - | |
1507 | | - | |
1508 | | - | |
| 1513 | + | |
| 1514 | + | |
| 1515 | + | |
1509 | 1516 | | |
1510 | | - | |
1511 | | - | |
1512 | | - | |
| 1517 | + | |
| 1518 | + | |
1513 | 1519 | | |
1514 | 1520 | | |
1515 | 1521 | | |
| |||
1529 | 1535 | | |
1530 | 1536 | | |
1531 | 1537 | | |
1532 | | - | |
| 1538 | + | |
1533 | 1539 | | |
1534 | 1540 | | |
1535 | 1541 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
326 | 326 | | |
327 | 327 | | |
328 | 328 | | |
329 | | - | |
| 329 | + | |
330 | 330 | | |
331 | 331 | | |
332 | 332 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1942 | 1942 | | |
1943 | 1943 | | |
1944 | 1944 | | |
1945 | | - | |
| 1945 | + | |
1946 | 1946 | | |
1947 | 1947 | | |
1948 | 1948 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
Lines changed: 10 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
| 1 | + | |
3 | 2 | | |
4 | 3 | | |
5 | 4 | | |
| |||
16 | 15 | | |
17 | 16 | | |
18 | 17 | | |
19 | | - | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
20 | 24 | | |
21 | 25 | | |
22 | 26 | | |
23 | 27 | | |
24 | | - | |
| 28 | + | |
25 | 29 | | |
26 | 30 | | |
27 | 31 | | |
28 | 32 | | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | 33 | | |
33 | 34 | | |
| 35 | + | |
34 | 36 | | |
35 | 37 | | |
36 | 38 | | |
37 | 39 | | |
38 | 40 | | |
39 | 41 | | |
40 | 42 | | |
| 43 | + | |
41 | 44 | | |
42 | 45 | | |
43 | 46 | | |
| |||
0 commit comments