rust-gpu icon indicating copy to clipboard operation
rust-gpu copied to clipboard

SPIR-V Support

Open XAMPPRocky opened this issue 4 years ago • 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

  • [x] Vertex
  • [x] Tessellation Control
  • [x] Tessellation Evaluation
  • [x] Geometry
  • [x] Fragment
  • [x] GLCompute
  • [x] Kernel (Compute)
  • [x] TaskNV
  • [x] MeshNV
  • [x] Ray Generation NV
  • [x] Ray Intersection NV
  • [x] Ray Any-hit NV
  • [x] Ray Closest-hit NV
  • [x] Ray Miss NV
  • [x] Ray Callable NV

Addressing Model ⚠️

Details

  • [x] Logical
  • [ ] Physical32
  • [ ] Physical64
  • [ ] PhysicalStorageBuffer64

Memory Model ✅

Details

  • [x] Simple
  • [x] GLSL450
  • [x] OpenCL
  • [x] Vulkan

Execution Modes ⚠️

Details

All models ✅

Details

  • [x] Initializer
  • [x] Finalizer
  • [x] SubgroupSize
  • [x] SubgroupsPerWorkgroup
  • [x] SubgroupsPerWorkgroupId
  • [x] PostDepthCoverage
  • [x] DenormPreserve
  • [x] DenormFlushToZero
  • [x] SignedZeroInfNanPreserve
  • [x] RoundingModeRTE
  • [x] RoundingModeRTZ

Kernel ✅

Details

  • [x] LocalSizeHint
  • [x] LocalSizeHintId
  • [x] VecTypeHint
  • [x] ContractionOff

Kernel & GLCompute ✅

Details

  • [x] LocalSize
  • [x] LocalSizeId

Geometry ✅

Details

  • [x] Invocations
  • [x] InputPoints
  • [x] InputLines
  • [x] InputLinesAdjacency
  • [x] InputTrianglesAdjacency

Geometry & Tessellation ✅

Details

  • [x] Triangles
  • [x] OutputVertices

Fragment ⚠️

Details

  • [x] PixelCenterInteger
  • [ ] OriginUpperLeft
  • [x] OriginLowerLeft
  • [x] EarlyFragmentTests
  • [x] DepthReplacing
  • [x] DepthGreater
  • [x] DepthLess
  • [x] DepthUnchanged
  • [x] OutputPoints
  • [x] OutputLineStrip
  • [x] OutputTriangleStrip

Tessellation ⚠️

Details

  • [x] SpacingEqual
  • [x] SpacingFractionalEven
  • [x] SpacingFractionalOdd
  • [x] VertexOrderCw
  • [x] VertexOrderCcw
  • [x] PointMode
  • [x] Quads
  • [ ] Isolines

Vertex ✅

  • [x] Xfb

Storage Classes ✅

Details

  • [x] UniformConstant
  • [x] Input
  • [x] Uniform
  • [x] Output
  • [x] Workgroup
  • [x] CrossWorkgroup
  • [x] Private
  • [x] Function
  • [x] Generic
  • [x] PushConstant
  • [x] AtomicCounter
  • [x] Image
  • [x] StorageBuffer
  • [x] CallableDataKHR
  • [x] IncomingCallableDataKHR
  • [x] RayPayloadKHR
  • [x] HitAttributeKHR
  • [x] IncomingRayPayloadKHR
  • [x] ShaderRecordBufferKHR
  • [x] PhysicalStorageBuffer

Image ⚠️

Details

  • [x] OpSampledImage
  • [x] OpImageSampleImplicitLod
  • [x] OpImageSampleExplicitLod
  • [x] OpImageSampleDrefImplicitLod
  • [x] OpImageSampleDrefExplicitLod
  • [x] OpImageSampleProjImplicitLod
  • [x] OpImageSampleProjExplicitLod
  • [x] OpImageSampleProjDrefImplicitLod
  • [x] OpImageSampleProjDrefExplicitLod
  • [x] OpImageFetch
  • [ ] OpImageGather
  • [ ] OpImageDrefGather
  • [x] OpImageRead
  • [x] 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

  • [x] OpVectorExtractDynamic
  • [x] OpVectorInsertDynamic
  • [ ] OpVectorShuffle
  • [ ] OpTranspose

Arithmetic ⚠️

Details

  • [x] OpSNegate
  • [x] OpFNegate
  • [x] OpIAdd
  • [x] OpFAdd
  • [x] OpISub
  • [x] OpFSub
  • [x] OpIMul
  • [x] OpFMul
  • [x] OpUDiv
  • [x] OpSDiv
  • [x] OpFDiv
  • [x] OpUMod
  • [x] OpSRem
  • [x] OpSMod
  • [x] OpFRem
  • [x] OpFMod
  • [x] OpVectorTimesScalar
  • [ ] OpMatrixTimesScalar
  • [ ] OpVectorTimesMatrix
  • [ ] OpMatrixTimesVector
  • [ ] OpMatrixTimesMatrix
  • [ ] OpOuterProduct
  • [ ] OpDot
  • [ ] OpIAddCarry
  • [ ] OpISubBorrow
  • [ ] OpUMulExtended
  • [ ] OpSMulExtended

Bit ⚠️

Details

  • [x] OpShiftRightLogical
  • [ ] OpShiftRightArithmetic
  • [x] OpShiftLeftLogical
  • [x] OpBitwiseOr
  • [x] OpBitwiseXor
  • [x] OpBitwiseAnd
  • [x] OpNot
  • [ ] OpBitFieldInsert
  • [ ] OpBitFieldSExtract
  • [ ] OpBitFieldUExtract
  • [ ] OpBitReverse
  • [ ] OpBitCount

Relational & Logical ⚠️

Details

  • [x] OpAny
  • [x] 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

  • [x] OpDPdx
  • [x] OpDPdy
  • [x] OpFwidth
  • [x] OpDPdxFine
  • [x] OpDPdyFine
  • [x] OpFwidthFine
  • [x] OpDPdxCoarse
  • [x] OpDPdyCoarse
  • [x] 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

XAMPPRocky avatar Jan 18 '21 15:01 XAMPPRocky