Rust-GPU / Rust-GPU/rust-gpu

[Migrated] SPIR-V Support

Ouverte
#136 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. 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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.