Rust-GPU / Rust-GPU/rust-gpu

[Migrated] SPIR-V Support

Đang mở
#136 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Ngôn ngữ chính
Rust
Star
3.4k
Fork
126
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Đây là một issue theo dõi tổng quát về việc hỗ trợ assembly SPIR-V, không nêu các tệp nguồn, bài kiểm thử hoặc điểm vào cụ thể. Hãy bắt đầu bằng cách xem lại các khả năng SPIR-V chưa được đánh dấu trong checklist; công việc hoàn tất khi các khả năng còn thiếu có liên quan được triển khai và các mục tương ứng trong checklist có thể được đánh dấu là hoàn tất.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
rust
Lĩnh vực
compilers, computer-graphics
Loại issue
Tính năng
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
20/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.