EmbarkStudios/rust-gpu

SPIR-V Support

XAMPPRocky opened this issue ยท 0 comments

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