[Migrated] SPIR-V Support
Personne n'a encore pris cette issue.
- Langage dominant
- Rust
- Étoiles
- 3.4k
- Forks
- 126
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
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
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Il s’agit d’une issue de suivi générale pour la prise en charge de l’assembly SPIR-V, sans fichiers source, tests ni points d’entrée indiqués. Commencez par examiner les capacités SPIR-V non cochées dans la checklist ; le travail est terminé lorsque les capacités manquantes pertinentes sont implémentées et que leurs entrées dans la checklist peuvent être marquées comme terminées.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- rust
- Domaine
- compilers, computer-graphics
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 20/100