-
Notifications
You must be signed in to change notification settings - Fork 294
Backlog
Shawn Hargreaves edited this page May 11, 2015
·
62 revisions
To help you understand where Win2D is heading, this backlog lists the work we plan to do and the order in which we plan to do it. Things near the top of the list are well understood and will happen in the next sprint or two, while items further down won't show up until later in the year and are more likely to move around or change as our understanding of them evolves.
If you have feedback on the contents or ordering of this backlog, please create an issue using the "backlog suggestion" label.
- CanvasAnimatedControl should skip Draw if the window is invisible (eg. app minimized)
- Should StepTimer sleep or busy wait, if there are a lot of ticks left?
- CanvasBitmap load/save functions (and anything else that directly uses D3D immediate context) need D3D level device access synchronisation
- Rare crash in Microsoft.Graphics.Canvas.CanvasDrawingSession.Dispose
- Publish samples separately from the product source (eg. MSDN Code Gallery?)
- We should consider renaming the top-level 'tests' folder to 'demos' (or merging with 'samples'?)
- Loading Win2D.81.sln into VS 2013 complains about wanting to retarget projects from 8.0 to 8.1
- Add Simon's webcam demo (from //BUILD talk) to Example Gallery
- Investigate whether we can make RunOnGameLoopAsync work with delegates that use await
- Investigate why Divisor property of countNeighborsEffect in Game of Life is unnecessary on Win10
- FontWeights is not accessible from arbitrary non-XAML threads
- Multiple controls should share a single CanvasDevice
- ExampleGallery should have example of creating and using a usercontrol that uses canvas (eg a graphing control)
- Controls should allow a specific CanvasDevice to be selected by the user
- Easy way to turn on the debug layer when using CanvasControl or CanvasAnimatedControl
- Should we enable the D3D debug layer when CanvasDebugLevel is set?
- CanvasImageBrush cannot set opacity before sourcerect when source is not bitmap
- DrawImage destrect emulation has artifacts when sourcerect outside original image
- Add CanvasRenderTarget, CanvasSwapChain, and CanvasImageSource constructors that take a Size
- Project the new Threshold DImage effects
- Support Win10 SoftwareBitmap
- Support gradient meshes
- Review Win10 D2D additions to see if there is anything else new we should expose
- In a UAP project, XAML controls cannot be instantiated in designer
- When adding a NuGet reference to Win2d - C# IDE fails to reference right metadata
- Once DirectXTK ships a UAP NuGet package, enable D3D interop example for UAP
- Win2D-Debug nuget package with default dependency behavior Lowest can pull in mismatched version of Win2D retail package, create non-compilable project
- Port CoreWindowExample to UAP
- Switch docs to have UAP as primary focus
- Polymorphic interop ICanvasImage from CanvasBitmap, CanvasEffect and CanvasCommandList
- Allow brushes to have polymorphic interop
- It'd be great if CanvasTextLayout wasn't a device dependent resource (currently it is, but only for interop reasons)
- Hook up interop for image effect types (convert back and forth between WinRT and underlying D2D types)
- Evaluate interop behavior of CanvasTextFormat once we have some more experience with using it
- CanvasTextFormat interop falls down if you modify the dwrite object and then try and set the Win2D properties back to the same value
- Update docs to indicate interop type when it's not clear
- Revisit ICanvasBitmapResourceCreationAdapter's interface and implementation
- GetOrCreate() should fail at compile-time based on whether or not the wrapper needs a device
- ResourceTracker.h should use strings.h rather than embedding error message literal
- Interop - find some way to make it hard to accidentally call Make(...) rather than fooManager->Create(...)
- Project ColorManagementEffect
- Project HistogramEffect (special case as it doesn't produce a regular image output)
- Add wrapper around ColorMatrixEffect to invert an image
- Work through implications of effects in command lists
- Revisit design of having input events not fire, or RunGameLoopThreadAsync work not run, if CanvasAnimatedControl is paused
- Update Example Gallery game of life to use CanvasAnimatedControl
- It is surprising that you cannot create GestureRecognizer for use with CanvasAnimatedControl from the CreateResources handler
- CanvasAnimatedControl supports keyboard input
- CanvasAnimatedControl supports scaler to render at non-display resolution
- CanvasAnimatedControl resizing isn't synchronized with the UI thread
- CanvasAnimatedControl.Size should be synchronized with the update/draw loop
- It's too hard to maintain a rendertarget the same size as a CanvasAnimatedControl
- CanvasAnimatedControl doesn't display the proper clear color in the VS XAML designer
- Support Windows.UI.Composition.ImageVisual
- Drawing sessions are efficiently created and managed (DeviceContext pooling etc.) and do not leak state across different drawing sessions
- It should be easier to write robust code that doesn't use CanvasControl
- Handle device lost from places other than Draw and CreateResources
- Tool (or API?) for simulating device lost
- CanvasCreateResourcesEventArgs should be activatable
- Can draw to a virtual surface image source
- XAML virtual canvas control
- ICoreWindow VS template for app developers
- CoreWindow swap chains: expose overlapping / foreground swap chains
- Swap chains: expose DXGI_SCALING_ASPECT_RATIO_STRETCH
- Make CanvasSwapChain.ResizeBuffers work with phone 8.1 CoreWindow
- Read bitmap contents without memory allocation (GetPixelBytes overload that takes an IBuffer)
- DrawText in perf demo hits TextLayout::SlowPath in DWrite, triples time spent in DoLayout vs. an equivalent Direct2D app
- Make sure our fast path drawing methods are as fast as possible
- Investigate optimizing exclusiveto interfaces to use static_cast rather than QI
- Investigate performance glitch when changing Example Gallery custom fonts to draw everything as a single text layout
- CanvasBitmap.CopyPixelsFromBitmap should support copying between bitmaps of different devices
- I want to load DDS files for use with CanvasBitmap
- Ensure CanvasBitmap GetBytes+SetBytes work with BC* image formats
- Consider making ImageBrush lazily create underlying D2D brushes
- API completeness: expose SetRenderingControls (buffer precision and tile size)
- API completeness: expose DrawingStateBlock
- API completeness: expose text layout GetLineMetrics and GetClusterMetrics
- API completeness: expose effect configuration properties (D2D1_PROPERTY_CACHED, D2D1_PROPERTY_PRECISION)
- API completeness: expose effect dirty rect tracking (GetEffectInvalidRectangles, GetEffectRequiredInputRectangles, InvalidateEffectInputRectangle)
- API completeness: expose caps queries (ID2D1DeviceContext::IsBufferPrecisionSupported+IsDxgiFormatSupported, ID2D1RenderTarget::IsSupported)
- API completeness: expose Device.RenderingPriority
- API completeness: expose Device.ClearResources
- API completeness: expose Device.MaximumTextureMemory
- API completeness: expose ID2D1RenderTarget::Flush
- API completeness: expose ID2D1MultiThread
- Add exposure for ID2D1DeviceContext::SetTextRenderingParams, particularly for text outline mode
- Ability to clone a CanvasTextFormat
- CanvasBitmap.CreateFromDirect3D11Surface should infer alphamode = ignore if the format is B8G8R8X8
- Consider adding CanvasStrokeStyle.Hairline (static property to create a hairline stroke style)
- Add example to ExampleGallery showing how to use a render target to persist contents between frames
- Blog post showing recommended way of creating a UserControl
- Document that CopyPixelsFromBitmap cannot copy onto itself
- Improve docs to make offscreen rendering more discoverable
- Make it more obvious that you're not supposed to use ClearType on a transparent background
- DPI Example XAML UI is wrong on WP 8.1 - IntermediateMode.None shows as "DPI" in the UI
- Example Gallery thumbnail generator should use RunOnGameLoopThreadAsync
- Consume Win2D via nuget packages within Win2D.sln
- Scrub docs to specify when a parameter is optional
- Deferred drawing errors are reported in a helpful way (use unbatched surface image source?)
- Hook into the D2D debug layer
- Find way to share test helpers.h code between test.internal and test.external
- Rationalize namespaces
- It is too difficult to run the Windows Store style tests on a fresh box
- Remove checked in PFX files
- Automate the windows phone unit tests
- Merge CsConsumer awesomeness into ExampleGallery, then retire CsConsumer
- All our runtimeclasses should be tested for interface transitivity
- Create custom imaging effects
- High performance 2D sprites
- Support spritesheets
- Allow brush mapping mode? (github #49) - Support gradient brush RelativeToBoundingBox co-ordinate mode
- Draw using floating point high precision color values (unlike WinRT color which is only 8 bit per channel)
- Support saving CanvasBitmap with pixel formats other than 32bppPBGRA to disk
- Inking
- All DWrite functionality is available in WinRT
- Ensure CanvasTextFormat exposes optical alignment and other IDWriteTextFormat1 functionality
- CanvasTextFormat doesn't correctly handle UTF-32 trimming delimiters
- Expose DWrite built-in ellipsis trimming sign
- Expose general (non-ellipsis) DWrite trimming signs
- Get the contours of glyphs
- Drawing offset and scaling factor is available to native code that needs to understand how things are translated
- Extracting the contents of a command list
- Support large (greater than GPU HW limit) images
- Printing