From 49f02199003c7df93ae2de41ac5075345bdad8e5 Mon Sep 17 00:00:00 2001 From: Kbz-8 Date: Thu, 25 Dec 2025 02:34:41 +0100 Subject: [PATCH] working on opcodes --- build.zig | 18 --- example/main.zig | 2 +- example/shader.nzsl | 15 +++ example/shader.spv | Bin 0 -> 544 bytes example/shader.spvasm | 268 +++++------------------------------------ example/shader.zig | 9 -- src/Module.zig | 34 ++++-- src/WordIterator.zig | 8 ++ src/opcodes.zig | 48 ++++++-- src/spv.zig | 272 +++++++----------------------------------- 10 files changed, 167 insertions(+), 507 deletions(-) create mode 100644 example/shader.nzsl create mode 100644 example/shader.spv delete mode 100644 example/shader.zig diff --git a/build.zig b/build.zig index 4429ccd..3a865ea 100644 --- a/build.zig +++ b/build.zig @@ -31,24 +31,6 @@ pub fn build(b: *std.Build) void { }), }); - const spirv_target = b.resolveTargetQuery(.{ - .cpu_arch = .spirv32, - .cpu_model = .{ .explicit = &std.Target.spirv.cpu.vulkan_v1_2 }, - .os_tag = .vulkan, - .ofmt = .spirv, - }); - - const shader = b.addObject(.{ - .name = "shader.zig", - .root_module = b.createModule(.{ - .root_source_file = b.path("example/shader.zig"), - .target = spirv_target, - }), - .use_llvm = false, - }); - - example_exe.root_module.addAnonymousImport("shader", .{ .root_source_file = shader.getEmittedBin() }); - const example_install = b.addInstallArtifact(example_exe, .{}); example_install.step.dependOn(&lib_install.step); diff --git a/example/main.zig b/example/main.zig index 726e4d3..84430d3 100644 --- a/example/main.zig +++ b/example/main.zig @@ -1,7 +1,7 @@ const std = @import("std"); const spv = @import("spv"); -const shader_source = @embedFile("shader"); +const shader_source = @embedFile("shader.spv"); pub fn main() !void { { diff --git a/example/shader.nzsl b/example/shader.nzsl new file mode 100644 index 0000000..a9494e9 --- /dev/null +++ b/example/shader.nzsl @@ -0,0 +1,15 @@ +[nzsl_version("1.1")] +module; + +struct FragOut +{ + [location(0)] color: vec4[f32] +} + +[entry(frag)] +fn main() -> FragOut +{ + let output: FragOut; + output.color = vec4[f32](1.0, 1.0, 1.0, 1.0); + return output; +} diff --git a/example/shader.spv b/example/shader.spv new file mode 100644 index 0000000000000000000000000000000000000000..db7c59e3283a69e393568976cf771022cc8154e4 GIT binary patch literal 544 zcmYk1J4*vm5QWFA8{f&s_~^n)3JXCegNOt)3#<0xueJ&JeVYyJg>z@l z%-l2QCavL0#8Uibhp`j$(~B0Bh)yI`!Mq#oSSD_QkMU$`qYW}Ek(2ME;a~inG3QPjd_YH^i{2`^T> spv.SpvWordCountShift) - 1; + const opcode = (opcode_data & spv.SpvOpCodeMask); + + var it_tmp = self.it; // Save because operations may iter on this iterator if (std.enums.fromInt(spv.SpvOp, opcode)) |spv_op| { if (op.SetupDispatcher.get(spv_op)) |pfn| { - pfn(0, &self); + pfn(allocator, word_count, &self) catch {}; } } + _ = it_tmp.skipN(word_count); + self.it = it_tmp; } + self.it = it_save; std.log.scoped(.SPIRV_Interpreter).debug( \\Loaded shader module with infos: - \\ SPIR-V version: {d}.{d} - \\ Generator: {s} (ID {d}), encoded version 0x{X} + \\ SPIR-V version: {d}.{d} + \\ Generator: {s} (ID {d}), encoded version 0x{X} + \\ Capabilities count: {d} + \\ Entry points count: {d} , .{ self.version_major, self.version_minor, spv.vendorName(self.generator_id), self.generator_id, self.generator_version, + self.capabilities.count(), + self.entry_points.items.len, }); return self; @@ -131,4 +144,9 @@ pub fn deinit(self: *Self, allocator: std.mem.Allocator) void { self.input_locations.deinit(); self.output_locations.deinit(); self.bindings.deinit(); + for (self.entry_points.items) |entry| { + allocator.free(entry.name); + allocator.free(entry.globals); + } + self.entry_points.deinit(allocator); } diff --git a/src/WordIterator.zig b/src/WordIterator.zig index 77b1ce5..c928cd2 100644 --- a/src/WordIterator.zig +++ b/src/WordIterator.zig @@ -31,3 +31,11 @@ pub fn skip(self: *Self) bool { self.index += 1; return true; } + +pub fn skipN(self: *Self, count: usize) bool { + if (self.index >= self.buffer.len) { + return false; + } + self.index += count; + return true; +} diff --git a/src/opcodes.zig b/src/opcodes.zig index 3159b5a..9715f7c 100644 --- a/src/opcodes.zig +++ b/src/opcodes.zig @@ -3,24 +3,58 @@ const spv = @import("spv.zig"); const Module = @import("Module.zig"); const Runtime = @import("Runtime.zig"); +const WordIterator = @import("WordIterator.zig"); const SpvVoid = spv.SpvVoid; const SpvByte = spv.SpvByte; const SpvWord = spv.SpvWord; const SpvBool = spv.SpvBool; -pub const OpCodeSetupFunc = *const fn (SpvWord, *Module) void; -pub const OpCodeExecFunc = *const fn (SpvWord, *Runtime) void; +pub const OpCodeSetupFunc = *const fn (std.mem.Allocator, SpvWord, *Module) anyerror!void; +pub const OpCodeExecFunc = *const fn (std.mem.Allocator, SpvWord, *Runtime) anyerror!void; pub const SetupDispatcher = block: { @setEvalBranchQuota(65535); break :block std.EnumMap(spv.SpvOp, OpCodeSetupFunc).init(.{ - .Capability = OpCapability, + .Capability = opCapability, + .EntryPoint = opEntryPoint, }); }; -fn OpCapability(word_count: SpvWord, mod: *Module) void { - _ = word_count; - _ = mod; - std.debug.print("test\n", .{}); +fn opCapability(_: std.mem.Allocator, _: SpvWord, mod: *Module) !void { + if (std.enums.fromInt(spv.SpvCapability, mod.it.next() orelse return)) |capability| { + mod.capabilities.insert(capability); + } +} + +fn opEntryPoint(allocator: std.mem.Allocator, word_count: SpvWord, mod: *Module) !void { + const entry = try mod.entry_points.addOne(allocator); + entry.exec_model = std.enums.fromInt(spv.SpvExecutionModel, mod.it.next() orelse return) orelse return; + entry.id = mod.it.next() orelse return; + entry.name = try readString(allocator, &mod.it); + + var interface_count = word_count - @divExact(entry.name.len, 4) - 2; + if (interface_count != 0) { + entry.globals = try allocator.alloc(SpvWord, interface_count); + var interface_index: u32 = 0; + while (interface_count != 0) { + entry.globals[interface_index] = mod.it.next() orelse return; + interface_index += 1; + interface_count -= 1; + } + } +} + +fn readString(allocator: std.mem.Allocator, it: *WordIterator) ![]const u8 { + var str: std.ArrayList(u8) = .empty; + while (it.next()) |word| { + (try str.addOne(allocator)).* = @truncate(word & 0x000000FF); + (try str.addOne(allocator)).* = @truncate((word & 0x0000FF00) >> 8); + (try str.addOne(allocator)).* = @truncate((word & 0x00FF0000) >> 16); + (try str.addOne(allocator)).* = @truncate((word & 0xFF000000) >> 24); + if (str.getLast() == 0) { + break; + } + } + return str.toOwnedSlice(allocator); } diff --git a/src/spv.zig b/src/spv.zig index 51c0209..245068e 100644 --- a/src/spv.zig +++ b/src/spv.zig @@ -5,11 +5,11 @@ pub const SpvByte = u8; pub const SpvWord = u32; pub const SpvBool = bool; -pub const SpvMagicNumber = 0x07230203; -pub const SpvVersion = 0x00010600; -pub const SpvRevision = 1; -pub const SpvOpCodeMask = 0xffff; -pub const SpvWordCountShift = 16; +pub const SpvMagicNumber: u32 = 0x07230203; +pub const SpvVersion: u32 = 0x00010600; +pub const SpvRevision: u32 = 1; +pub const SpvOpCodeMask: u32 = 0xffff; +pub const SpvWordCountShift: u32 = 16; pub fn vendorName(id: u32) []const u8 { return switch (id) { @@ -210,16 +210,11 @@ pub const SpvExecutionMode = enum(u32) { QuadDerivativesKHR = 5088, RequireFullQuadsKHR = 5089, SharesInputWithAMDX = 5102, - OutputLinesEXT = 5269, - OutputLinesNV = 5269, - OutputPrimitivesEXT = 5270, - OutputPrimitivesNV = 5270, - DerivativeGroupQuadsKHR = 5289, - DerivativeGroupQuadsNV = 5289, - DerivativeGroupLinearKHR = 5290, - DerivativeGroupLinearNV = 5290, - OutputTrianglesEXT = 5298, - OutputTrianglesNV = 5298, + OutputLines = 5269, + OutputPrimitives = 5270, + DerivativeGroupQuads = 5289, + DerivativeGroupLinear = 5290, + OutputTriangles = 5298, PixelInterlockOrderedEXT = 5366, PixelInterlockUnorderedEXT = 5367, SampleInterlockOrderedEXT = 5368, @@ -265,28 +260,19 @@ pub const SpvStorageClass = enum(u32) { TileImageEXT = 4172, TileAttachmentQCOM = 4491, NodePayloadAMDX = 5068, - CallableDataKHR = 5328, - CallableDataNV = 5328, - IncomingCallableDataKHR = 5329, - IncomingCallableDataNV = 5329, - RayPayloadKHR = 5338, - RayPayloadNV = 5338, - HitAttributeKHR = 5339, - HitAttributeNV = 5339, - IncomingRayPayloadKHR = 5342, - IncomingRayPayloadNV = 5342, - ShaderRecordBufferKHR = 5343, - ShaderRecordBufferNV = 5343, + CallableData = 5328, + IncomingCallableData = 5329, + RayPayload = 5338, + HitAttribute = 5339, + IncomingRayPayload = 5342, + ShaderRecordBuffer = 5343, PhysicalStorageBuffer = 5349, - PhysicalStorageBufferEXT = 5349, HitObjectAttributeNV = 5385, TaskPayloadWorkgroupEXT = 5402, HitObjectAttributeEXT = 5411, CodeSectionINTEL = 5605, DeviceOnly = 5936, - DeviceOnlyINTEL = 5936, HostOnly = 5937, - HostOnlyINTEL = 5937, Max = 0x7fffffff, }; @@ -427,13 +413,9 @@ pub const SpvImageOperandsShift = enum(u32) { SampleShift = 6, MinLodShift = 7, MakeTexelAvailableShift = 8, - MakeTexelAvailableKHRShift = 8, MakeTexelVisibleShift = 9, - MakeTexelVisibleKHRShift = 9, NonPrivateTexelShift = 10, - NonPrivateTexelKHRShift = 10, VolatileTexelShift = 11, - VolatileTexelKHRShift = 11, SignExtendShift = 12, ZeroExtendShift = 13, NontemporalShift = 14, @@ -452,13 +434,9 @@ pub const SpvImageOperandsMask = enum(u32) { SampleMask = 0x00000040, MinLodMask = 0x00000080, MakeTexelAvailableMask = 0x00000100, - MakeTexelAvailableKHRMask = 0x00000100, MakeTexelVisibleMask = 0x00000200, - MakeTexelVisibleKHRMask = 0x00000200, NonPrivateTexelMask = 0x00000400, - NonPrivateTexelKHRMask = 0x00000400, VolatileTexelMask = 0x00000800, - VolatileTexelKHRMask = 0x00000800, SignExtendMask = 0x00001000, ZeroExtendMask = 0x00002000, NontemporalMask = 0x00004000, @@ -472,9 +450,7 @@ pub const SpvFPFastMathModeShift = enum(u32) { AllowRecipShift = 3, FastShift = 4, AllowContractShift = 16, - AllowContractFastINTELShift = 16, AllowReassocShift = 17, - AllowReassocINTELShift = 17, AllowTransformShift = 18, Max = 0x7fffffff, }; @@ -487,9 +463,7 @@ pub const SpvFPFastMathModeMask = enum(u32) { AllowRecipMask = 0x00000008, FastMask = 0x00000010, AllowContractMask = 0x00010000, - AllowContractFastINTELMask = 0x00010000, AllowReassocMask = 0x00020000, - AllowReassocINTELMask = 0x00020000, AllowTransformMask = 0x00040000, }; @@ -525,7 +499,6 @@ pub const SpvFunctionParameterAttribute = enum(u32) { NoWrite = 6, NoReadWrite = 7, RuntimeAligned = 5940, - RuntimeAlignedINTEL = 5940, Max = 0x7fffffff, }; @@ -596,18 +569,13 @@ pub const SpvDecoration = enum(u32) { PassthroughNV = 5250, ViewportRelativeNV = 5252, SecondaryViewportRelativeNV = 5256, - PerPrimitiveEXT = 5271, - PerPrimitiveNV = 5271, + PerPrimitive = 5271, PerViewNV = 5272, PerTaskNV = 5273, - PerVertexKHR = 5285, - PerVertexNV = 5285, + PerVertex = 5285, NonUniform = 5300, - NonUniformEXT = 5300, RestrictPointer = 5355, - RestrictPointerEXT = 5355, AliasedPointer = 5356, - AliasedPointerEXT = 5356, HitObjectShaderRecordBufferNV = 5386, HitObjectShaderRecordBufferEXT = 5389, BindlessSamplerNV = 5398, @@ -624,102 +592,59 @@ pub const SpvDecoration = enum(u32) { StackCallINTEL = 5627, GlobalVariableOffsetINTEL = 5628, CounterBuffer = 5634, - HlslCounterBufferGOOGLE = 5634, - HlslSemanticGOOGLE = 5635, UserSemantic = 5635, UserTypeGOOGLE = 5636, FunctionRoundingModeINTEL = 5822, FunctionDenormModeINTEL = 5823, Register = 5825, - RegisterINTEL = 5825, Memory = 5826, - MemoryINTEL = 5826, Numbanks = 5827, - NumbanksINTEL = 5827, Bankwidth = 5828, - BankwidthINTEL = 5828, MaxPrivateCopies = 5829, - MaxPrivateCopiesINTEL = 5829, Singlepump = 5830, - SinglepumpINTEL = 5830, Doublepump = 5831, - DoublepumpINTEL = 5831, MaxReplicates = 5832, - MaxReplicatesINTEL = 5832, SimpleDualPort = 5833, - SimpleDualPortINTEL = 5833, Merge = 5834, - MergeINTEL = 5834, BankBits = 5835, - BankBitsINTEL = 5835, ForcePow2Depth = 5836, - ForcePow2DepthINTEL = 5836, Stridesize = 5883, - StridesizeINTEL = 5883, Wordsize = 5884, - WordsizeINTEL = 5884, TrueDualPort = 5885, - TrueDualPortINTEL = 5885, BurstCoalesce = 5899, - BurstCoalesceINTEL = 5899, CacheSize = 5900, - CacheSizeINTEL = 5900, DontStaticallyCoalesce = 5901, - DontStaticallyCoalesceINTEL = 5901, Prefetch = 5902, - PrefetchINTEL = 5902, StallEnable = 5905, - StallEnableINTEL = 5905, FuseLoopsInFunction = 5907, - FuseLoopsInFunctionINTEL = 5907, MathOpDSPMode = 5909, - MathOpDSPModeINTEL = 5909, AliasScopeINTEL = 5914, NoAliasINTEL = 5915, InitiationInterval = 5917, - InitiationIntervalINTEL = 5917, MaxConcurrency = 5918, - MaxConcurrencyINTEL = 5918, PipelineEnable = 5919, - PipelineEnableINTEL = 5919, BufferLocation = 5921, - BufferLocationINTEL = 5921, IOPipeStorage = 5944, - IOPipeStorageINTEL = 5944, FunctionFloatingPointModeINTEL = 6080, SingleElementVectorINTEL = 6085, VectorComputeCallableFunctionINTEL = 6087, MediaBlockIOINTEL = 6140, StallFree = 6151, - StallFreeINTEL = 6151, FPMaxErrorDecorationINTEL = 6170, LatencyControlLabel = 6172, - LatencyControlLabelINTEL = 6172, LatencyControlConstraint = 6173, - LatencyControlConstraintINTEL = 6173, ConduitKernelArgument = 6175, - ConduitKernelArgumentINTEL = 6175, RegisterMapKernelArgument = 6176, - RegisterMapKernelArgumentINTEL = 6176, MMHostInterfaceAddressWidth = 6177, - MMHostInterfaceAddressWidthINTEL = 6177, MMHostInterfaceDataWidth = 6178, - MMHostInterfaceDataWidthINTEL = 6178, MMHostInterfaceLatency = 6179, - MMHostInterfaceLatencyINTEL = 6179, MMHostInterfaceReadWriteMode = 6180, - MMHostInterfaceReadWriteModeINTEL = 6180, MMHostInterfaceMaxBurst = 6181, - MMHostInterfaceMaxBurstINTEL = 6181, MMHostInterfaceWaitRequest = 6182, - MMHostInterfaceWaitRequestINTEL = 6182, StableKernelArgument = 6183, - StableKernelArgumentINTEL = 6183, HostAccessINTEL = 6188, InitMode = 6190, - InitModeINTEL = 6190, ImplementInRegisterMap = 6191, - ImplementInRegisterMapINTEL = 6191, ConditionalINTEL = 6247, CacheControlLoadINTEL = 6442, CacheControlStoreINTEL = 6443, @@ -774,15 +699,10 @@ pub const SpvBuiltIn = enum(u32) { WarpIDARM = 4163, WarpMaxIDARM = 4164, SubgroupEqMask = 4416, - SubgroupEqMaskKHR = 4416, SubgroupGeMask = 4417, - SubgroupGeMaskKHR = 4417, SubgroupGtMask = 4418, - SubgroupGtMaskKHR = 4418, SubgroupLeMask = 4419, - SubgroupLeMaskKHR = 4419, SubgroupLtMask = 4420, - SubgroupLtMaskKHR = 4420, BaseVertex = 4424, BaseInstance = 4425, DrawIndex = 4426, @@ -817,49 +737,32 @@ pub const SpvBuiltIn = enum(u32) { LayerPerViewNV = 5279, MeshViewCountNV = 5280, MeshViewIndicesNV = 5281, - BaryCoordKHR = 5286, - BaryCoordNV = 5286, - BaryCoordNoPerspKHR = 5287, - BaryCoordNoPerspNV = 5287, - FragSizeEXT = 5292, - FragmentSizeNV = 5292, - FragInvocationCountEXT = 5293, - InvocationsPerPixelNV = 5293, + BaryCoord = 5286, + BaryCoordNoPersp = 5287, + FragmentSize = 5292, + FragInvocationCount = 5293, PrimitivePointIndicesEXT = 5294, PrimitiveLineIndicesEXT = 5295, PrimitiveTriangleIndicesEXT = 5296, CullPrimitiveEXT = 5299, - LaunchIdKHR = 5319, - LaunchIdNV = 5319, - LaunchSizeKHR = 5320, - LaunchSizeNV = 5320, - WorldRayOriginKHR = 5321, - WorldRayOriginNV = 5321, - WorldRayDirectionKHR = 5322, - WorldRayDirectionNV = 5322, - ObjectRayOriginKHR = 5323, - ObjectRayOriginNV = 5323, - ObjectRayDirectionKHR = 5324, - ObjectRayDirectionNV = 5324, - RayTminKHR = 5325, - RayTminNV = 5325, - RayTmaxKHR = 5326, - RayTmaxNV = 5326, - InstanceCustomIndexKHR = 5327, - InstanceCustomIndexNV = 5327, - ObjectToWorldKHR = 5330, - ObjectToWorldNV = 5330, - WorldToObjectKHR = 5331, - WorldToObjectNV = 5331, + LaunchId = 5319, + LaunchSize = 5320, + WorldRayOrigin = 5321, + WorldRayDirection = 5322, + ObjectRayOrigin = 5323, + ObjectRayDirection = 5324, + RayTmin = 5325, + RayTmax = 5326, + InstanceCustomIndex = 5327, + ObjectToWorld = 5330, + WorldToObject = 5331, HitTNV = 5332, - HitKindKHR = 5333, - HitKindNV = 5333, + HitKind = 5333, CurrentRayTimeNV = 5334, HitTriangleVertexPositionsKHR = 5335, HitMicroTriangleVertexPositionsNV = 5337, HitMicroTriangleVertexBarycentricsNV = 5344, - IncomingRayFlagsKHR = 5351, - IncomingRayFlagsNV = 5351, + IncomingRayFlags = 5351, RayGeometryIndexKHR = 5352, HitIsSphereNV = 5359, HitIsLSSNV = 5360, @@ -901,25 +804,15 @@ pub const SpvLoopControlShift = enum(u32) { PeelCountShift = 7, PartialCountShift = 8, InitiationIntervalShift = 16, - InitiationIntervalINTELShift = 16, MaxConcurrencyShift = 17, - MaxConcurrencyINTELShift = 17, DependencyArrayShift = 18, - DependencyArrayINTELShift = 18, PipelineEnableShift = 19, - PipelineEnableINTELShift = 19, LoopCoalesceShift = 20, - LoopCoalesceINTELShift = 20, MaxInterleavingShift = 21, - MaxInterleavingINTELShift = 21, SpeculatedIterationsShift = 22, - SpeculatedIterationsINTELShift = 22, NoFusionShift = 23, - NoFusionINTELShift = 23, LoopCountShift = 24, - LoopCountINTELShift = 24, MaxReinvocationDelayShift = 25, - MaxReinvocationDelayINTELShift = 25, Max = 0x7fffffff, }; @@ -935,25 +828,15 @@ pub const SpvLoopControlMask = enum(u32) { PeelCountMask = 0x00000080, PartialCountMask = 0x00000100, InitiationIntervalMask = 0x00010000, - InitiationIntervalINTELMask = 0x00010000, MaxConcurrencyMask = 0x00020000, - MaxConcurrencyINTELMask = 0x00020000, DependencyArrayMask = 0x00040000, - DependencyArrayINTELMask = 0x00040000, PipelineEnableMask = 0x00080000, - PipelineEnableINTELMask = 0x00080000, LoopCoalesceMask = 0x00100000, - LoopCoalesceINTELMask = 0x00100000, MaxInterleavingMask = 0x00200000, - MaxInterleavingINTELMask = 0x00200000, SpeculatedIterationsMask = 0x00400000, - SpeculatedIterationsINTELMask = 0x00400000, NoFusionMask = 0x00800000, - NoFusionINTELMask = 0x00800000, LoopCountMask = 0x01000000, - LoopCountINTELMask = 0x01000000, MaxReinvocationDelayMask = 0x02000000, - MaxReinvocationDelayINTELMask = 0x02000000, }; pub const SpvFunctionControlShift = enum(u32) { @@ -962,7 +845,6 @@ pub const SpvFunctionControlShift = enum(u32) { PureShift = 2, ConstShift = 3, OptNoneEXTShift = 16, - OptNoneINTELShift = 16, Max = 0x7fffffff, }; @@ -973,7 +855,6 @@ pub const SpvFunctionControlMask = enum(u32) { PureMask = 0x00000004, ConstMask = 0x00000008, OptNoneEXTMask = 0x00010000, - OptNoneINTELMask = 0x00010000, }; pub const SpvMemorySemanticsShift = enum(u32) { @@ -988,11 +869,8 @@ pub const SpvMemorySemanticsShift = enum(u32) { AtomicCounterMemoryShift = 10, ImageMemoryShift = 11, OutputMemoryShift = 12, - OutputMemoryKHRShift = 12, MakeAvailableShift = 13, - MakeAvailableKHRShift = 13, MakeVisibleShift = 14, - MakeVisibleKHRShift = 14, VolatileShift = 15, Max = 0x7fffffff, }; @@ -1010,11 +888,8 @@ pub const SpvMemorySemanticsMask = enum(u32) { AtomicCounterMemoryMask = 0x00000400, ImageMemoryMask = 0x00000800, OutputMemoryMask = 0x00001000, - OutputMemoryKHRMask = 0x00001000, MakeAvailableMask = 0x00002000, - MakeAvailableKHRMask = 0x00002000, MakeVisibleMask = 0x00004000, - MakeVisibleKHRMask = 0x00004000, VolatileMask = 0x00008000, }; @@ -1023,11 +898,8 @@ pub const SpvMemoryAccessShift = enum(u32) { AlignedShift = 1, NontemporalShift = 2, MakePointerAvailableShift = 3, - MakePointerAvailableKHRShift = 3, MakePointerVisibleShift = 4, - MakePointerVisibleKHRShift = 4, NonPrivatePointerShift = 5, - NonPrivatePointerKHRShift = 5, AliasScopeINTELMaskShift = 16, NoAliasINTELMaskShift = 17, Max = 0x7fffffff, @@ -1039,11 +911,8 @@ pub const SpvMemoryAccessMask = enum(u32) { AlignedMask = 0x00000002, NontemporalMask = 0x00000004, MakePointerAvailableMask = 0x00000008, - MakePointerAvailableKHRMask = 0x00000008, MakePointerVisibleMask = 0x00000010, - MakePointerVisibleKHRMask = 0x00000010, NonPrivatePointerMask = 0x00000020, - NonPrivatePointerKHRMask = 0x00000020, AliasScopeINTELMaskMask = 0x00010000, NoAliasINTELMaskMask = 0x00020000, }; @@ -1055,7 +924,6 @@ pub const SpvScope = enum(u32) { Subgroup = 3, Invocation = 4, QueueFamily = 5, - QueueFamilyKHR = 5, ShaderCallKHR = 6, Max = 0x7fffffff, }; @@ -1178,8 +1046,6 @@ pub const SpvCapability = enum(u32) { WorkgroupMemoryExplicitLayout16BitAccessKHR = 4430, SubgroupVoteKHR = 4431, StorageBuffer16BitAccess = 4433, - StorageUniformBufferBlock16 = 4433, - StorageUniform16 = 4434, UniformAndStorageBuffer16BitAccess = 4434, StoragePushConstant16 = 4435, StorageInputOutput16 = 4436, @@ -1224,8 +1090,7 @@ pub const SpvCapability = enum(u32) { BFloat16CooperativeMatrixKHR = 5118, SampleMaskOverrideCoverageNV = 5249, GeometryShaderPassthroughNV = 5251, - ShaderViewportIndexLayerEXT = 5254, - ShaderViewportIndexLayerNV = 5254, + ShaderViewportIndexLayer = 5254, ShaderViewportMaskNV = 5255, ShaderStereoViewNV = 5259, PerViewAttributesNV = 5260, @@ -1233,48 +1098,29 @@ pub const SpvCapability = enum(u32) { MeshShadingNV = 5266, ImageFootprintNV = 5282, MeshShadingEXT = 5283, - FragmentBarycentricKHR = 5284, - FragmentBarycentricNV = 5284, - ComputeDerivativeGroupQuadsKHR = 5288, - ComputeDerivativeGroupQuadsNV = 5288, - FragmentDensityEXT = 5291, - ShadingRateNV = 5291, + FragmentBarycentric = 5284, + ComputeDerivativeGroupQuads = 5288, + ShadingRate = 5291, GroupNonUniformPartitionedNV = 5297, ShaderNonUniform = 5301, - ShaderNonUniformEXT = 5301, RuntimeDescriptorArray = 5302, - RuntimeDescriptorArrayEXT = 5302, InputAttachmentArrayDynamicIndexing = 5303, - InputAttachmentArrayDynamicIndexingEXT = 5303, UniformTexelBufferArrayDynamicIndexing = 5304, - UniformTexelBufferArrayDynamicIndexingEXT = 5304, StorageTexelBufferArrayDynamicIndexing = 5305, - StorageTexelBufferArrayDynamicIndexingEXT = 5305, UniformBufferArrayNonUniformIndexing = 5306, - UniformBufferArrayNonUniformIndexingEXT = 5306, SampledImageArrayNonUniformIndexing = 5307, - SampledImageArrayNonUniformIndexingEXT = 5307, StorageBufferArrayNonUniformIndexing = 5308, - StorageBufferArrayNonUniformIndexingEXT = 5308, StorageImageArrayNonUniformIndexing = 5309, - StorageImageArrayNonUniformIndexingEXT = 5309, InputAttachmentArrayNonUniformIndexing = 5310, - InputAttachmentArrayNonUniformIndexingEXT = 5310, UniformTexelBufferArrayNonUniformIndexing = 5311, - UniformTexelBufferArrayNonUniformIndexingEXT = 5311, StorageTexelBufferArrayNonUniformIndexing = 5312, - StorageTexelBufferArrayNonUniformIndexingEXT = 5312, RayTracingPositionFetchKHR = 5336, RayTracingNV = 5340, RayTracingMotionBlurNV = 5341, VulkanMemoryModel = 5345, - VulkanMemoryModelKHR = 5345, VulkanMemoryModelDeviceScope = 5346, - VulkanMemoryModelDeviceScopeKHR = 5346, PhysicalStorageBufferAddresses = 5347, - PhysicalStorageBufferAddressesEXT = 5347, - ComputeDerivativeGroupLinearKHR = 5350, - ComputeDerivativeGroupLinearNV = 5350, + ComputeDerivativeGroupLinear = 5350, RayTracingProvisionalKHR = 5353, CooperativeMatrixNV = 5357, FragmentShaderSampleInterlockEXT = 5363, @@ -1282,7 +1128,6 @@ pub const SpvCapability = enum(u32) { ShaderSMBuiltinsNV = 5373, FragmentShaderPixelInterlockEXT = 5378, DemoteToHelperInvocation = 5379, - DemoteToHelperInvocationEXT = 5379, DisplacementMicromapNV = 5380, RayTracingOpacityMicromapEXT = 5381, ShaderInvocationReorderNV = 5383, @@ -1327,50 +1172,30 @@ pub const SpvCapability = enum(u32) { VariableLengthArrayINTEL = 5817, FunctionFloatControlINTEL = 5821, FPGAMemoryAttributes = 5824, - FPGAMemoryAttributesINTEL = 5824, FPFastMathModeINTEL = 5837, ArbitraryPrecisionIntegers = 5844, - ArbitraryPrecisionIntegersINTEL = 5844, ArbitraryPrecisionFloatingPoint = 5845, - ArbitraryPrecisionFloatingPointINTEL = 5845, UnstructuredLoopControlsINTEL = 5886, FPGALoopControls = 5888, - FPGALoopControlsINTEL = 5888, KernelAttributesINTEL = 5892, FPGAKernelAttributesINTEL = 5897, FPGAMemoryAccesses = 5898, - FPGAMemoryAccessesINTEL = 5898, FPGAClusterAttributes = 5904, - FPGAClusterAttributesINTEL = 5904, LoopFuse = 5906, - LoopFuseINTEL = 5906, FPGADSPControl = 5908, - FPGADSPControlINTEL = 5908, MemoryAccessAliasingINTEL = 5910, FPGAInvocationPipeliningAttributes = 5916, - FPGAInvocationPipeliningAttributesINTEL = 5916, FPGABufferLocation = 5920, - FPGABufferLocationINTEL = 5920, ArbitraryPrecisionFixedPoint = 5922, - ArbitraryPrecisionFixedPointINTEL = 5922, USMStorageClasses = 5935, - USMStorageClassesINTEL = 5935, RuntimeAlignedAttribute = 5939, - RuntimeAlignedAttributeINTEL = 5939, IOPipes = 5943, - IOPipesINTEL = 5943, BlockingPipes = 5945, - BlockingPipesINTEL = 5945, FPGAReg = 5948, - FPGARegINTEL = 5948, DotProductInputAll = 6016, - DotProductInputAllKHR = 6016, DotProductInput4x8Bit = 6017, - DotProductInput4x8BitKHR = 6017, DotProductInput4x8BitPacked = 6018, - DotProductInput4x8BitPackedKHR = 6018, DotProduct = 6019, - DotProductKHR = 6019, RayCullMaskKHR = 6020, CooperativeMatrixKHR = 6022, ReplicatedCompositesEXT = 6024, @@ -1381,26 +1206,20 @@ pub const SpvCapability = enum(u32) { AtomicFloat32AddEXT = 6033, AtomicFloat64AddEXT = 6034, LongCompositesINTEL = 6089, - OptNoneEXT = 6094, - OptNoneINTEL = 6094, + OptNone = 6094, AtomicFloat16AddEXT = 6095, DebugInfoModuleINTEL = 6114, BFloat16ConversionINTEL = 6115, SplitBarrierINTEL = 6141, ArithmeticFenceEXT = 6144, FPGAClusterAttributesV2 = 6150, - FPGAClusterAttributesV2INTEL = 6150, FPGAKernelAttributesv2INTEL = 6161, TaskSequence = 6162, - TaskSequenceINTEL = 6162, FPMaxErrorINTEL = 6169, FPGALatencyControl = 6171, - FPGALatencyControlINTEL = 6171, FPGAArgumentInterfaces = 6174, - FPGAArgumentInterfacesINTEL = 6174, GlobalVariableHostAccessINTEL = 6187, GlobalVariableFPGADecorations = 6189, - GlobalVariableFPGADecorationsINTEL = 6189, SubgroupBufferPrefetchINTEL = 6220, Subgroup2DBlockIOINTEL = 6228, Subgroup2DBlockTransformINTEL = 6229, @@ -1428,8 +1247,7 @@ pub const SpvRayFlagsShift = enum(u32) { CullFrontFacingTrianglesKHRShift = 5, CullOpaqueKHRShift = 6, CullNoOpaqueKHRShift = 7, - SkipBuiltinPrimitivesNVShift = 8, - SkipTrianglesKHRShift = 8, + SkipBuiltinPrimitivesShift = 8, SkipAABBsKHRShift = 9, ForceOpacityMicromap2StateEXTShift = 10, Max = 0x7fffffff, @@ -1445,8 +1263,7 @@ pub const SpvRayFlagsMask = enum(u32) { CullFrontFacingTrianglesKHRMask = 0x00000020, CullOpaqueKHRMask = 0x00000040, CullNoOpaqueKHRMask = 0x00000080, - SkipBuiltinPrimitivesNVMask = 0x00000100, - SkipTrianglesKHRMask = 0x00000100, + SkipBuiltinPrimitivesMask = 0x00000100, SkipAABBsKHRMask = 0x00000200, ForceOpacityMicromap2StateEXTMask = 0x00000400, }; @@ -1520,7 +1337,6 @@ pub const SpvOverflowModes = enum(u32) { pub const SpvPackedVectorFormat = enum(u32) { PackedVectorFormat4x8Bit = 0, - PackedVectorFormat4x8BitKHR = 0, Max = 0x7fffffff, }; @@ -1612,9 +1428,7 @@ pub const SpvTensorOperandsMask = enum(u32) { pub const SpvInitializationModeQualifier = enum(u32) { InitOnDeviceReprogram = 0, - InitOnDeviceReprogramINTEL = 0, InitOnDeviceReset = 1, - InitOnDeviceResetINTEL = 1, Max = 0x7fffffff, };