kronos_compute/core/
enums.rs

1//! Enumerations for Kronos API
2
3/// Structure type identifiers
4#[repr(i32)]
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
6pub enum VkStructureType {
7    ApplicationInfo = 0,
8    InstanceCreateInfo = 1,
9    DeviceQueueCreateInfo = 2,
10    DeviceCreateInfo = 3,
11    SubmitInfo = 4,
12    MemoryAllocateInfo = 5,
13    MappedMemoryRange = 6,
14    FenceCreateInfo = 8,
15    SemaphoreCreateInfo = 9,
16    EventCreateInfo = 10,
17    QueryPoolCreateInfo = 11,
18    BufferCreateInfo = 12,
19    PipelineShaderStageCreateInfo = 18,
20    ComputePipelineCreateInfo = 29,
21    PipelineLayoutCreateInfo = 30,
22    DescriptorSetLayoutCreateInfo = 32,
23    DescriptorPoolCreateInfo = 33,
24    DescriptorSetAllocateInfo = 34,
25    WriteDescriptorSet = 35,
26    CopyDescriptorSet = 36,
27    ShaderModuleCreateInfo = 38,
28    CommandPoolCreateInfo = 39,
29    CommandBufferAllocateInfo = 40,
30    CommandBufferBeginInfo = 42,
31    BufferMemoryBarrier = 44,
32    MemoryBarrier = 46,
33    PipelineCacheCreateInfo = 47,
34    // Timeline semaphore extensions
35    SemaphoreTypeCreateInfo = 1000207002,
36    TimelineSemaphoreSubmitInfo = 1000207003,
37    SemaphoreWaitInfo = 1000207004,
38}
39
40/// Queue capability flags
41#[repr(u32)]
42#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
43pub enum VkQueueFlagBits {
44    Compute = 0x00000002,
45    Transfer = 0x00000004,
46    SparseBinding = 0x00000008,
47}
48
49/// Memory property flags
50#[repr(u32)]
51#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
52pub enum VkMemoryPropertyFlagBits {
53    DeviceLocal = 0x00000001,
54    HostVisible = 0x00000002,
55    HostCoherent = 0x00000004,
56    HostCached = 0x00000008,
57    LazilyAllocated = 0x00000010,
58}
59
60/// Buffer usage flags
61#[repr(u32)]
62#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
63pub enum VkBufferUsageFlagBits {
64    TransferSrc = 0x00000001,
65    TransferDst = 0x00000002,
66    UniformBuffer = 0x00000010,
67    StorageBuffer = 0x00000020,
68    IndexBuffer = 0x00000040,
69    VertexBuffer = 0x00000080,
70    IndirectBuffer = 0x00000100,
71}
72
73/// Sharing mode
74#[repr(i32)]
75#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
76pub enum VkSharingMode {
77    Exclusive = 0,
78    Concurrent = 1,
79}
80
81/// Pipeline bind point
82#[repr(i32)]
83#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
84pub enum VkPipelineBindPoint {
85    Compute = 1,
86}
87
88/// Command buffer level
89#[repr(i32)]
90#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
91pub enum VkCommandBufferLevel {
92    Primary = 0,
93    Secondary = 1,
94}
95
96/// Command buffer usage flags
97#[repr(u32)]
98#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
99pub enum VkCommandBufferUsageFlagBits {
100    OneTimeSubmit = 0x00000001,
101    SimultaneousUse = 0x00000004,
102}
103
104/// Shader stage flags
105#[repr(u32)]
106#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
107pub enum VkShaderStageFlagBits {
108    Compute = 0x00000020,
109}
110
111/// Descriptor type (compute-relevant only)
112#[repr(i32)]
113#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
114pub enum VkDescriptorType {
115    Sampler = 0,
116    SampledImage = 2,
117    StorageImage = 3,
118    UniformBuffer = 6,
119    StorageBuffer = 7,
120    UniformBufferDynamic = 8,
121    StorageBufferDynamic = 9,
122}
123
124/// Pipeline stage flags
125#[repr(u32)]
126#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
127pub enum VkPipelineStageFlagBits {
128    TopOfPipe = 0x00000001,
129    ComputeShader = 0x00000800,
130    BottomOfPipe = 0x00002000,
131    Host = 0x00004000,
132    AllCommands = 0x00010000,
133}
134
135/// Access flags
136#[repr(u32)]
137#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
138pub enum VkAccessFlagBits {
139    IndirectCommandRead = 0x00000001,
140    IndexRead = 0x00000002,
141    VertexAttributeRead = 0x00000004,
142    UniformRead = 0x00000008,
143    InputAttachmentRead = 0x00000010,
144    ShaderRead = 0x00000020,
145    ShaderWrite = 0x00000040,
146    TransferRead = 0x00000800,
147    TransferWrite = 0x00001000,
148    HostRead = 0x00002000,
149    HostWrite = 0x00004000,
150    MemoryRead = 0x00008000,
151    MemoryWrite = 0x00010000,
152}
153
154/// Semaphore type
155#[repr(i32)]
156#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
157pub enum VkSemaphoreType {
158    Binary = 0,
159    Timeline = 1,
160}
161
162/// Physical device type
163#[repr(i32)]
164#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
165pub enum VkPhysicalDeviceType {
166    Other = 0,
167    IntegratedGpu = 1,
168    DiscreteGpu = 2,
169    VirtualGpu = 3,
170    Cpu = 4,
171}