lib/gpu/src/root.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 //! Devices, memory, pipelines, surfaces and presentation for compiled
2 //! kernels. A backend loads an artifact whose interface `choir_abi`
3 //! describes, checks the artifact's requirements against the device, and
4 //! launches it. The package links no compiler.
5
6 const build_options = @import("build_options");
7
8 pub const contract = @import("contract.zig");
9 pub const host = @import("host.zig");
10 pub const recording = @import("recording.zig");
11 pub const webgpu = @import("webgpu.zig");
12 pub const wasm = @import("wasm.zig");
13
14 pub const cpu = if (build_options.native_backend_modules)
15 @import("cpu.zig")
16 else
17 @compileError("The gpu CPU backend is only available in native builds");
18
19 pub const cuda = if (build_options.native_backend_modules)
20 @import("cuda.zig")
21 else
22 @compileError("The gpu CUDA backend is only available in native builds");
23
24 pub const vulkan = if (build_options.native_backend_modules)
25 @import("vulkan.zig")
26 else
27 @compileError("The gpu Vulkan backend is only available in native builds");
28
29 pub const metal = if (build_options.native_backend_modules)
30 @import("metal.zig")
31 else
32 @compileError("The gpu Metal backend is only available in native builds");
33
34 pub const BackendError = contract.BackendError;
35 pub const BackendKind = contract.BackendKind;
36 pub const DeviceFamily = contract.DeviceFamily;
37 pub const ArtifactFormat = contract.ArtifactFormat;
38 pub const BackendMathTier = contract.BackendMathTier;
39 pub const familyForBackendKind = contract.familyForBackendKind;
40 pub const artifactFormatIsNativeCpu = contract.artifactFormatIsNativeCpu;
41 pub const artifactFormatUsesHostLoopLaunch = contract.artifactFormatUsesHostLoopLaunch;
42 pub const PayloadOwnership = contract.PayloadOwnership;
43 pub const BufferOwnership = contract.BufferOwnership;
44 pub const BufferAccess = contract.BufferAccess;
45 pub const TextureOwnership = contract.TextureOwnership;
46 pub const TextureFormat = contract.TextureFormat;
47 pub const ColorSpace = contract.ColorSpace;
48 pub const PresentMode = contract.PresentMode;
49 pub const SurfaceAlphaMode = contract.SurfaceAlphaMode;
50 pub const SurfacePlatformKind = contract.SurfacePlatformKind;
51 pub const X11Surface = contract.X11Surface;
52 pub const CocoaSurface = contract.CocoaSurface;
53 pub const WebGpuCanvasSurface = contract.WebGpuCanvasSurface;
54 pub const HeadlessSurface = contract.HeadlessSurface;
55 pub const ExternalSurface = contract.ExternalSurface;
56 pub const SurfacePlatform = contract.SurfacePlatform;
57 pub const SurfaceExtent = contract.SurfaceExtent;
58 pub const TextureExtent = contract.TextureExtent;
59 pub const TextureUsage = contract.TextureUsage;
60 pub const RenderArtifactFormat = contract.RenderArtifactFormat;
61 pub const RenderBlendMode = contract.RenderBlendMode;
62 pub const RenderPrimitiveTopology = contract.RenderPrimitiveTopology;
63 pub const RenderVertexStepMode = contract.RenderVertexStepMode;
64 pub const RenderVertexFormat = contract.RenderVertexFormat;
65 pub const RenderBindingKind = contract.RenderBindingKind;
66 pub const RenderIndexFormat = contract.RenderIndexFormat;
67 pub const RenderVertexAttribute = contract.RenderVertexAttribute;
68 pub const RenderVertexBufferLayout = contract.RenderVertexBufferLayout;
69 pub const RenderBindingDesc = contract.RenderBindingDesc;
70 pub const RenderViewport = contract.RenderViewport;
71 pub const RenderScissor = contract.RenderScissor;
72 pub const RenderDrawRange = contract.RenderDrawRange;
73 pub const SyncScope = contract.SyncScope;
74 pub const BackendObjectId = contract.BackendObjectId;
75 pub const DTypeSet = contract.DTypeSet;
76 pub const ArtifactFormatSet = contract.ArtifactFormatSet;
77 pub const TextureFormatSet = contract.TextureFormatSet;
78 pub const PresentModeSet = contract.PresentModeSet;
79 pub const ColorSpaceSet = contract.ColorSpaceSet;
80 pub const SurfacePlatformSet = contract.SurfacePlatformSet;
81 pub const RenderArtifactFormatSet = contract.RenderArtifactFormatSet;
82 pub const RenderBlendModeSet = contract.RenderBlendModeSet;
83 pub const RenderPrimitiveTopologySet = contract.RenderPrimitiveTopologySet;
84 pub const RenderVertexFormatSet = contract.RenderVertexFormatSet;
85 pub const RenderBindingKindSet = contract.RenderBindingKindSet;
86 pub const RenderIndexFormatSet = contract.RenderIndexFormatSet;
87 pub const DeviceIdentity = contract.DeviceIdentity;
88 pub const MemoryLimits = contract.MemoryLimits;
89 pub const SubgroupFacts = contract.SubgroupFacts;
90 pub const FloatControlWidths = contract.FloatControlWidths;
91 pub const FloatControlIndependence = contract.FloatControlIndependence;
92 pub const FloatArithmeticProfile = contract.FloatArithmeticProfile;
93 pub const FloatControlFacts = contract.FloatControlFacts;
94 pub const ThreadgroupFacts = contract.ThreadgroupFacts;
95 pub const LayoutFeatures = contract.LayoutFeatures;
96 pub const RuntimeRequirements = contract.RuntimeRequirements;
97 pub const TextureCapabilities = contract.TextureCapabilities;
98 pub const SurfaceCapabilities = contract.SurfaceCapabilities;
99 pub const RasterCapabilities = contract.RasterCapabilities;
100 pub const BackendCapabilities = contract.BackendCapabilities;
101 pub const ArtifactPayload = contract.ArtifactPayload;
102 pub const ExternalPayload = contract.ExternalPayload;
103 pub const KernelArtifactDesc = contract.KernelArtifactDesc;
104 pub const KernelArtifact = contract.KernelArtifact;
105 pub const LoadedArtifact = contract.LoadedArtifact;
106 pub const RenderPipelineDesc = contract.RenderPipelineDesc;
107 pub const RenderArtifactDesc = contract.RenderArtifactDesc;
108 pub const RenderArtifact = contract.RenderArtifact;
109 pub const LoadedRenderArtifact = contract.LoadedRenderArtifact;
110 pub const BufferHandle = contract.BufferHandle;
111 pub const StreamHandle = contract.StreamHandle;
112 pub const EventHandle = contract.EventHandle;
113 pub const SurfaceHandle = contract.SurfaceHandle;
114 pub const TextureHandle = contract.TextureHandle;
115 pub const TextureView = contract.TextureView;
116 pub const SurfaceFrame = contract.SurfaceFrame;
117 pub const BufferAllocation = contract.BufferAllocation;
118 pub const BufferImport = contract.BufferImport;
119 pub const TextureAllocation = contract.TextureAllocation;
120 pub const SurfaceCreationRequest = contract.SurfaceCreationRequest;
121 pub const SurfaceFrameAcquireRequest = contract.SurfaceFrameAcquireRequest;
122 pub const PresentRequest = contract.PresentRequest;
123 pub const SurfaceClearColor = contract.SurfaceClearColor;
124 pub const SurfaceFrameWriteOp = contract.SurfaceFrameWriteOp;
125 pub const SurfaceFrameWriteRequest = contract.SurfaceFrameWriteRequest;
126 pub const StreamAllocation = contract.StreamAllocation;
127 pub const EventAllocation = contract.EventAllocation;
128 pub const BufferBinding = contract.BufferBinding;
129 pub const BufferWriteRequest = contract.BufferWriteRequest;
130 pub const BufferFillRequest = contract.BufferFillRequest;
131 pub const BufferReadRequest = contract.BufferReadRequest;
132 pub const LaunchRequest = contract.LaunchRequest;
133 pub const RenderRequest = contract.RenderRequest;
134 pub const RenderBundleSubmit = contract.RenderBundleSubmit;
135 pub const TextureWriteRequest = contract.TextureWriteRequest;
136 pub const TextureReadRequest = contract.TextureReadRequest;
137 pub const RenderCompare = contract.RenderCompare;
138 pub const RenderDepthState = contract.RenderDepthState;
139 pub const RenderDepthBias = contract.RenderDepthBias;
140 pub const RenderFilter = contract.RenderFilter;
141 pub const RenderAddressMode = contract.RenderAddressMode;
142 pub const RenderSampler = contract.RenderSampler;
143 pub const RenderSampledTexture = contract.RenderSampledTexture;
144 pub const RenderResource = contract.RenderResource;
145 pub const RenderBindingsRequest = contract.RenderBindingsRequest;
146 pub const RenderBindings = contract.RenderBindings;
147 pub const RenderColorLoad = contract.RenderColorLoad;
148 pub const RenderDepthLoad = contract.RenderDepthLoad;
149 pub const RenderColorAttachment = contract.RenderColorAttachment;
150 pub const RenderDepthAttachment = contract.RenderDepthAttachment;
151 pub const RenderBufferRange = contract.RenderBufferRange;
152 pub const RenderDraw = contract.RenderDraw;
153 pub const RenderPass = contract.RenderPass;
154 pub const RenderBundle = contract.RenderBundle;
155 pub const CompileRequest = contract.CompileRequest;
156 pub const CompilePayload = contract.CompilePayload;
157 pub const SyncRequest = contract.SyncRequest;
158 pub const EventQueryRequest = contract.EventQueryRequest;
159 pub const EventRecordRequest = contract.EventRecordRequest;
160 pub const EventElapsedRequest = contract.EventElapsedRequest;
161 pub const BackendVTable = contract.BackendVTable;
162 pub const BackendHandle = contract.BackendHandle;