[Migrated] SPIR-V Support
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Rust
- Sterne
- 3.4k
- Forks
- 125
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
Issue automatically imported from old repo: https://github.com/EmbarkStudios/rust-gpu/issues/383
Old labels: t: tracking issue,s: needs update
Originally creatd by XAMPPRocky on 2021-01-18T15:02:57Z
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
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Dies ist ein übergreifendes Tracking-Issue zur Unterstützung von SPIR-V-Assembly, ohne dass Quelldateien, Tests oder Einstiegspunkte genannt werden. Beginne mit der Durchsicht der nicht abgehakten SPIR-V-Fähigkeiten in der Checkliste; die Arbeit ist abgeschlossen, wenn die relevanten fehlenden Fähigkeiten implementiert sind und ihre Einträge in der Checkliste als abgeschlossen markiert werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- rust
- Bereich
- compilers, computer-graphics
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 20/100