[Migrated] SPIR-V Support
オープン
まだ誰も着手していません。
- 主要言語
- Rust
- スター
- 3.4k
- フォーク
- 126
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
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
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
これはSPIR-Vアセンブリ対応に関する広範な追跡Issueであり、ソースファイル、テスト、エントリポイントは指定されていません。まずチェックリストで未チェックのSPIR-V機能を確認してください。関連する不足機能が実装され、チェックリストの項目を完了としてマークできれば作業は完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- rust
- 領域
- compilers, computer-graphics
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 20/100