D2D compute shader support tracking issue
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 20/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- csharp
- Domain
- computer-graphics
Research direction
Start with the linked Microsoft D2D compute shader documentation and review the unchecked items under Milestones 2 and 3. Use the existing prototype work and the DX12 ThreadIds APIs as context; completion means implementing the remaining projection/generator and Win2D interop milestones.
Written by the indexing model from the issue text.
Description
[!NOTE]
Tracking issue, closes #351
Description
This meta issue is for tracking all work related to adding support for D2D compute shaders.
See MS docs on D2D compute shaders for further reference.
Planned work
There's extensive work that will be needed to add full support, so it's being split into different milestones.
Milestone 1 (prototype):
- Create a new
ComputeShaderEffectnative object that implementsID2D1EffectImplandID2D1ComputeTransform- Mostly the same stuff as the pixel shader effect minus the differences there
- Can probably share/reuse a lot of code from that other type
- Add a new
ID2D1ComputeShaderinterface with appropriate hooks - Expose some
D2D1ComputeShaderEffectinterop API with methods to register shaders and whatnot - Manually implement a hello world D2D compute shader with this and get it to run
Milestone 2 (projection/generator support):
- Expose similar
ThreadIdsAPIs as for DX12 shaders - Expose some new D2D APIs for the compute shader exclusive stuff
- Write a header for D2D compute shaders
- D2D injects a custom constant buffer with additional info
- Add a new source generator to transpile compute shaders too and generate supporting code
Milestone 3 (Win2D interop):
- Add a new
ComputeShaderEffect<T>effect for Win2D interop
- Dominant language
- C#
- Stars
- 3.2k
- Forks
- 148
- Avg merge
- 4h 32m
- Merged PRs (30d)
- 3
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Sergio0694/ComputeSharp
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
Sergio0694/ComputeSharp#936 · 2 comments ·
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
Sergio0694/ComputeSharp#931 ·
-
D2D1: D2D.SampleInputAtOffset with a compound offset expression silently samples wrong coordinates Openbug :bug: untriaged :toolbox:
Difficulty 3/5 1-2 days Newbie friendliness 75/100
Sergio0694/ComputeSharp#929 ·
-
PIX integration Openquestion :question: untriaged :toolbox:
Difficulty 4/5 3-5 days Newbie friendliness 35/100
Sergio0694/ComputeSharp#926 ·
-
CopyToAsync Openproposal :bulb: untriaged :toolbox:
Difficulty 4/5 3-5 days Newbie friendliness 35/100
Sergio0694/ComputeSharp#925 ·
All issues in Sergio0694/ComputeSharp
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
:watch: Not Triaged 11.0 fundamentals/subsvc
Difficulty 2/5 1-3 hours Newbie friendliness 92/100
dotnet/AspNetCore.Docs#37699 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
SubtitleEdit/subtitleedit#15108 · 1 comment ·
-
area/docs-content Bug pulumi/docs
Difficulty 1/5 1-3 hours Newbie friendliness 94/100
-
agentic-workflows untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 76/100