1 | // (penguinliong) Device capability is a shared intelligence between the runtime |
2 | // environment and the code generator. It's only about the program executed |
3 | // on-device rather than any platform specific capability provided by some |
4 | // graphics APIs like Vulkan or CUDA. For example, DirectX shader model, CUDA |
5 | // compute capability and Vulkan physical device features can be listed here as |
6 | // device capabilities, yet things like Vulkan API version and GLFW version |
7 | // should not. |
8 | #ifdef PER_DEVICE_CAPABILITY |
9 | // SPIR-V Caps |
10 | PER_DEVICE_CAPABILITY(reserved) |
11 | PER_DEVICE_CAPABILITY(spirv_version) |
12 | PER_DEVICE_CAPABILITY(spirv_has_int8) |
13 | PER_DEVICE_CAPABILITY(spirv_has_int16) |
14 | PER_DEVICE_CAPABILITY(spirv_has_int64) |
15 | PER_DEVICE_CAPABILITY(spirv_has_float16) |
16 | PER_DEVICE_CAPABILITY(spirv_has_float64) |
17 | PER_DEVICE_CAPABILITY(spirv_has_atomic_int64) |
18 | PER_DEVICE_CAPABILITY(spirv_has_atomic_float16) // load, store, exchange |
19 | PER_DEVICE_CAPABILITY(spirv_has_atomic_float16_add) |
20 | PER_DEVICE_CAPABILITY(spirv_has_atomic_float16_minmax) |
21 | PER_DEVICE_CAPABILITY(spirv_has_atomic_float) // load, store, exchange |
22 | PER_DEVICE_CAPABILITY(spirv_has_atomic_float_add) |
23 | PER_DEVICE_CAPABILITY(spirv_has_atomic_float_minmax) |
24 | PER_DEVICE_CAPABILITY(spirv_has_atomic_float64) // load, store, exchange |
25 | PER_DEVICE_CAPABILITY(spirv_has_atomic_float64_add) |
26 | PER_DEVICE_CAPABILITY(spirv_has_atomic_float64_minmax) |
27 | PER_DEVICE_CAPABILITY(spirv_has_variable_ptr) |
28 | PER_DEVICE_CAPABILITY(spirv_has_physical_storage_buffer) |
29 | PER_DEVICE_CAPABILITY(spirv_has_subgroup_basic) |
30 | PER_DEVICE_CAPABILITY(spirv_has_subgroup_vote) |
31 | PER_DEVICE_CAPABILITY(spirv_has_subgroup_arithmetic) |
32 | PER_DEVICE_CAPABILITY(spirv_has_subgroup_ballot) |
33 | PER_DEVICE_CAPABILITY(spirv_has_non_semantic_info) |
34 | PER_DEVICE_CAPABILITY(spirv_has_no_integer_wrap_decoration) |
35 | #endif |
36 | |
37 | #ifdef PER_BUFFER_FORMAT |
38 | PER_BUFFER_FORMAT(unknown) |
39 | PER_BUFFER_FORMAT(r8) |
40 | PER_BUFFER_FORMAT(rg8) |
41 | PER_BUFFER_FORMAT(rgba8) |
42 | PER_BUFFER_FORMAT(rgba8srgb) |
43 | PER_BUFFER_FORMAT(bgra8) |
44 | PER_BUFFER_FORMAT(bgra8srgb) |
45 | PER_BUFFER_FORMAT(r8u) |
46 | PER_BUFFER_FORMAT(rg8u) |
47 | PER_BUFFER_FORMAT(rgba8u) |
48 | PER_BUFFER_FORMAT(r8i) |
49 | PER_BUFFER_FORMAT(rg8i) |
50 | PER_BUFFER_FORMAT(rgba8i) |
51 | PER_BUFFER_FORMAT(r16) |
52 | PER_BUFFER_FORMAT(rg16) |
53 | PER_BUFFER_FORMAT(rgb16) |
54 | PER_BUFFER_FORMAT(rgba16) |
55 | PER_BUFFER_FORMAT(r16u) |
56 | PER_BUFFER_FORMAT(rg16u) |
57 | PER_BUFFER_FORMAT(rgb16u) |
58 | PER_BUFFER_FORMAT(rgba16u) |
59 | PER_BUFFER_FORMAT(r16i) |
60 | PER_BUFFER_FORMAT(rg16i) |
61 | PER_BUFFER_FORMAT(rgb16i) |
62 | PER_BUFFER_FORMAT(rgba16i) |
63 | PER_BUFFER_FORMAT(r16f) |
64 | PER_BUFFER_FORMAT(rg16f) |
65 | PER_BUFFER_FORMAT(rgb16f) |
66 | PER_BUFFER_FORMAT(rgba16f) |
67 | PER_BUFFER_FORMAT(r32u) |
68 | PER_BUFFER_FORMAT(rg32u) |
69 | PER_BUFFER_FORMAT(rgb32u) |
70 | PER_BUFFER_FORMAT(rgba32u) |
71 | PER_BUFFER_FORMAT(r32i) |
72 | PER_BUFFER_FORMAT(rg32i) |
73 | PER_BUFFER_FORMAT(rgb32i) |
74 | PER_BUFFER_FORMAT(rgba32i) |
75 | PER_BUFFER_FORMAT(r32f) |
76 | PER_BUFFER_FORMAT(rg32f) |
77 | PER_BUFFER_FORMAT(rgb32f) |
78 | PER_BUFFER_FORMAT(rgba32f) |
79 | PER_BUFFER_FORMAT(depth16) |
80 | PER_BUFFER_FORMAT(depth24stencil8) |
81 | PER_BUFFER_FORMAT(depth32f) |
82 | #endif |
83 | |
84 | #ifdef PER_IMAGE_DIMENSION |
85 | PER_IMAGE_DIMENSION(d1D) |
86 | PER_IMAGE_DIMENSION(d2D) |
87 | PER_IMAGE_DIMENSION(d3D) |
88 | #endif |
89 | |
90 | #ifdef PER_IMAGE_LAYOUT |
91 | PER_IMAGE_LAYOUT(undefined) |
92 | PER_IMAGE_LAYOUT(shader_read) |
93 | PER_IMAGE_LAYOUT(shader_write) |
94 | PER_IMAGE_LAYOUT(shader_read_write) |
95 | PER_IMAGE_LAYOUT(color_attachment) |
96 | PER_IMAGE_LAYOUT(color_attachment_read) |
97 | PER_IMAGE_LAYOUT(depth_attachment) |
98 | PER_IMAGE_LAYOUT(depth_attachment_read) |
99 | PER_IMAGE_LAYOUT(transfer_dst) |
100 | PER_IMAGE_LAYOUT(transfer_src) |
101 | PER_IMAGE_LAYOUT(present_src) |
102 | #endif |
103 | |