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