SPIR-V Support
XAMPPRocky opened this issue ยท 0 comments
XAMPPRocky commented
This is a tracking issue for tracking what rust-gpu can produce in terms of SPIR-V assembly.
Emoji Legend
- ๐ โ Missing
โ ๏ธ โ Incomplete- โ โ Complete (excluding vendor specific extensions)
Execution Models โ
Details
- Vertex
- Tessellation Control
- Tessellation Evaluation
- Geometry
- Fragment
- GLCompute
- Kernel (Compute)
- TaskNV
- MeshNV
- Ray Generation NV
- Ray Intersection NV
- Ray Any-hit NV
- Ray Closest-hit NV
- Ray Miss NV
- Ray Callable NV
Addressing Model โ ๏ธ
Details
- Logical
- Physical32
- Physical64
- PhysicalStorageBuffer64
Memory Model โ
Details
- Simple
- GLSL450
- OpenCL
- Vulkan
Execution Modes โ ๏ธ
Details
All models โ
Details
- Initializer
- Finalizer
- SubgroupSize
- SubgroupsPerWorkgroup
- SubgroupsPerWorkgroupId
- PostDepthCoverage
- DenormPreserve
- DenormFlushToZero
- SignedZeroInfNanPreserve
- RoundingModeRTE
- RoundingModeRTZ
Kernel โ
Details
- LocalSizeHint
- LocalSizeHintId
- VecTypeHint
- ContractionOff
Kernel & GLCompute โ
Details
- LocalSize
- LocalSizeId
Geometry โ
Details
- Invocations
- InputPoints
- InputLines
- InputLinesAdjacency
- InputTrianglesAdjacency
Geometry & Tessellation โ
Details
- Triangles
- OutputVertices
Fragment โ ๏ธ
Details
- PixelCenterInteger
- OriginUpperLeft
- OriginLowerLeft
- EarlyFragmentTests
- DepthReplacing
- DepthGreater
- DepthLess
- DepthUnchanged
- OutputPoints
- OutputLineStrip
- OutputTriangleStrip
Tessellation โ ๏ธ
Details
- SpacingEqual
- SpacingFractionalEven
- SpacingFractionalOdd
- VertexOrderCw
- VertexOrderCcw
- PointMode
- Quads
- Isolines
Vertex โ
- Xfb
Storage Classes โ
Details
- UniformConstant
- Input
- Uniform
- Output
- Workgroup
- CrossWorkgroup
- Private
- Function
- Generic
- PushConstant
- AtomicCounter
- Image
- StorageBuffer
- CallableDataKHR
- IncomingCallableDataKHR
- RayPayloadKHR
- HitAttributeKHR
- IncomingRayPayloadKHR
- ShaderRecordBufferKHR
- PhysicalStorageBuffer
Image โ ๏ธ
Details
- OpSampledImage
- OpImageSampleImplicitLod
- OpImageSampleExplicitLod
- OpImageSampleDrefImplicitLod
- OpImageSampleDrefExplicitLod
- OpImageSampleProjImplicitLod
- OpImageSampleProjExplicitLod
- OpImageSampleProjDrefImplicitLod
- OpImageSampleProjDrefExplicitLod
- OpImageFetch
- OpImageGather
- OpImageDrefGather
- OpImageRead
- OpImageWrite
- OpImageQueryFormat
- OpImageQueryOrder
- OpImageQuerySizeLod
- OpImageQuerySize
- OpImageQueryLod
- OpImageQueryLevels
- OpImageQuerySamples
- OpImageSparseSampleImplicitLod
- OpImageSparseSampleExplicitLod
- OpImageSparseSampleDrefImplicitLod
- OpImageSparseSampleDrefExplicitLod
- OpImageSparseFetch
- OpImageSparseGather
- OpImageSparseDrefGather
- OpImageSparseTexelsResident
- OpImageSparseRead
Conversions ๐
Details
- Float <-> unsigned integer
- Float <-> signed integer
- OpUconvert
- OpSConvert
- OpFConvert
- OpQuantizeToF16
- OpConvertPtrToU
- OpSatConvertSToU
- OpSatConvertUToS
- OpConvertUToPtr
- OpPtrCastToGeneric
- OpGenericCastToPtr
- OpGenericCastToPtrExplicit
- OpBitcast
Composite โ ๏ธ
Details
- OpVectorExtractDynamic
- OpVectorInsertDynamic
- OpVectorShuffle
- OpTranspose
Arithmetic โ ๏ธ
Details
- OpSNegate
- OpFNegate
- OpIAdd
- OpFAdd
- OpISub
- OpFSub
- OpIMul
- OpFMul
- OpUDiv
- OpSDiv
- OpFDiv
- OpUMod
- OpSRem
- OpSMod
- OpFRem
- OpFMod
- OpVectorTimesScalar
- OpMatrixTimesScalar
- OpVectorTimesMatrix
- OpMatrixTimesVector
- OpMatrixTimesMatrix
- OpOuterProduct
- OpDot
- OpIAddCarry
- OpISubBorrow
- OpUMulExtended
- OpSMulExtended
Bit โ ๏ธ
Details
- OpShiftRightLogical
- OpShiftRightArithmetic
- OpShiftLeftLogical
- OpBitwiseOr
- OpBitwiseXor
- OpBitwiseAnd
- OpNot
- OpBitFieldInsert
- OpBitFieldSExtract
- OpBitFieldUExtract
- OpBitReverse
- OpBitCount
Relational & Logical โ ๏ธ
Details
- OpAny
- OpAll
- OpIsNan
- OpIsInf
- OpIsFinite
- OpIsNormal
- OpSignBitSet
- OpLessOrGreater
- OpOrdered
- OpUnordered
- OpLogicalEqual
- OpLogicalNotEqual
- OpLogicalOr
- OpLogicalAnd
- OpLogicalNot
- OpSelect
- OpIEqual
- OpINotEqual
- OpUGreaterThan
- OpSGreaterThan
- OpUGreaterThanEqual
- OpSGreaterThanEqual
- OpULessThan
- OpSLessThan
- OpULessThanEqual
- OpSLessThanEqual
- OpFOrdEqual
- OpFUnordEqual
- OpFOrdNotEqual
- OpFUnordNotEqual
- OpFOrdLessThan
- OpFUnordLessThan
- OpFOrdGreaterThan
- OpFUnordGreaterThan
- OpFOrdLessThanEqual
- OpFUnordLessThanEqual
- OpFOrdGreaterThanEqual
- OpFUnordGreaterThanEqual
Derivative โ
Details
- OpDPdx
- OpDPdy
- OpFwidth
- OpDPdxFine
- OpDPdyFine
- OpFwidthFine
- OpDPdxCoarse
- OpDPdyCoarse
- OpFwidthCoarse
Atomic ๐
Details
- OpAtomicLoad
- OpAtomicStore
- OpAtomicExchange
- OpAtomicCompareExchange
- OpAtomicCompareExchangeWeak
- OpAtomicIIncrement
- OpAtomicIDecrement
- OpAtomicIAdd
- OpAtomicISub
- OpAtomicSMin
- OpAtomicUMin
- OpAtomicSMax
- OpAtomicUMax
- OpAtomicAnd
- OpAtomicOr
- OpAtomicXor
- OpAtomicFlagTestAndSet
- OpAtomicFlagClear
Barrier ๐
Details
- OpControlBarrier
- OpMemoryBarrier
- OpNamedBarrierInitialize
- OpMemoryNamedBarrier
Group & Subgroup ๐
Details
- OpGroupAsyncCopy
- OpGroupWaitEvents
- OpGroupAll
- OpGroupAny
- OpGroupBroadcast
- OpGroupIAdd
- OpGroupFAdd
- OpGroupFMin
- OpGroupUMin
- OpGroupSMin
- OpGroupFMax
- OpGroupUMax
- OpGroupSMax
Device-side Enqueue ๐
Details
- OpEnqueueMarker
- OpEnqueueKernel
- OpGetKernelNDrangeSubGroupCount
- OpGetKernelNDrangeMaxSubGroupSize
- OpGetKernelWorkGroupSize
- OpGetKernelPreferredWorkGroupSizeMultiple
- OpRetainEvent
- OpReleaseEvent
- OpCreateUserEvent
- OpIsValidEvent
- OpSetUserEventStatus
- OpCaptureEventProfilingInfo
- OpGetDefaultQueue
- OpBuildNDRange
- OpGetKernelLocalSizeForSubgroupCount
- OpGetKernelMaxNumSubgroups
Pipe ๐
Details
- OpReadPipe
- OpWritePipe
- OpReservedReadPipe
- OpReservedWritePipe
- OpReserveReadPipePackets
- OpReserveWritePipePackets
- OpCommitReadPipe
- OpCommitWritePipe
- OpIsValidReserveId
- OpGetNumPipePackets
- OpGetMaxPipePackets
- OpGroupReserveReadPipePackets
- OpGroupReserveWritePipePackets
- OpGroupCommitReadPipe
- OpGroupCommitWritePipe
- OpConstantPipeStorage
- OpCreatePipeFromPipeStorage
Non-uniform ๐
Details
- OpGroupNonUniformElect
- OpGroupNonUniformAll
- OpGroupNonUniformAny
- OpGroupNonUniformAllEqual
- OpGroupNonUniformBroadcast
- OpGroupNonUniformBroadcastFirst
- OpGroupNonUniformBallot
- OpGroupNonUniformInverseBallot
- OpGroupNonUniformBallotBitExtract
- OpGroupNonUniformBallotBitCount
- OpGroupNonUniformBallotFindLSB
- OpGroupNonUniformBallotFindMSB
- OpGroupNonUniformShuffle
- OpGroupNonUniformShuffleXor
- OpGroupNonUniformShuffleUp
- OpGroupNonUniformShuffleDown
- OpGroupNonUniformIAdd
- OpGroupNonUniformFAdd
- OpGroupNonUniformIMul
- OpGroupNonUniformFMul
- OpGroupNonUniformSMin
- OpGroupNonUniformUMin
- OpGroupNonUniformFMin
- OpGroupNonUniformSMax
- OpGroupNonUniformUMax
- OpGroupNonUniformFMax
- OpGroupNonUniformBitwiseAnd
- OpGroupNonUniformBitwiseOr
- OpGroupNonUniformBitwiseXor
- OpGroupNonUniformLogicalAnd
- OpGroupNonUniformLogicalOr
- OpGroupNonUniformLogicalXor
- OpGroupNonUniformQuadBroadcast
- OpGroupNonUniformQuadSwap