Skip to content

Backlog

Shawn Hargreaves edited this page Sep 28, 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.

Current sprint (actively being worked on as you read this):
  • Crash on Resume in VirtualControlExample (github #163)
  • Crash when 3D transform is behind camera (github #164)
  • DrawingSession needs to account for unit mode when calculating offset to apply to surface image sources (GitHub# 160)
  • Example Gallery font selection demo should sort the list
  • Draw to Windows.UI.Composition image visuals
  • Calling Close on an already-closed command list appears to put D2D into a permenant error state, breaking our swallow-the-error behavior
  • Expose ID2D1DeviceContext::SetTextRenderingParams, particularly for text outline mode
  • Ensure CanvasTextFormat exposes optical alignment and other IDWriteTextFormat1 functionality
  • Expose DWrite built-in ellipsis trimming sign
  • Expose general (non-ellipsis) DWrite trimming signs
  • Should the text trimming sign have a better default than nothing? (github #100)
  • Shawn's new CanvasEffect_InteropChangesInput_IsBidirectional test doesn't work if using command lists instead of rendertargets as inputs
  • Custom image effects - with 1:1 input/output mapping
  • Custom image effects - with arbitrary input/output mapping
  • Custom image effects - constant getters and reflection
Richer text support:
  • Expose text layout GetLineMetrics and GetClusterMetrics
  • Expose a way to enumerate fonts and associate them with text formats
  • There's a way to get a moral equivalent of DWRITE_FONT_METRICS
  • Sample or documentation showing how to calculate the default line spacing (github #111)
  • DrawGlyphRun and custom text renderers
  • CanvasTextFormat doesn't correctly handle UTF-32 trimming delimiters
Support Windows.UI.Composition:
  • Draw to Windows.UI.Composition swapchains
  • Higher level controls (eg. game loop) to simplify using Win2D + composition?
API completeness:
  • Expose ID2D1RenderTarget::Flush and ID2D1Device2::FlushDeviceContexts
  • Expose ID2D1MultiThread
  • Draw using floating point high precision color values (unlike WinRT color which is only 8 bit per channel)
  • Should be able to GetOrCreate from any ID2D1Effect instance to something that I can set as an effect source or pass to DrawImage
  • Support ID2D1ImageSource for loading and drawing greater-than-max-texture-size images
  • Support IWICImageEncoder for saving out greater-than-max-texture-size images
  • Provide InkStroke -> CanvasGeometry conversion path
  • Expose caps queries (ID2D1DeviceContext::IsBufferPrecisionSupported+IsDxgiFormatSupported, ID2D1RenderTarget::IsSupported)
  • Expose SetRenderingControls (buffer precision and tile size)
  • Expose effect configuration properties (D2D1_PROPERTY_CACHED, D2D1_PROPERTY_PRECISION)
  • Expose effect dirty rect tracking (GetEffectInvalidRectangles, GetEffectRequiredInputRectangles, InvalidateEffectInputRectangle)
  • Expose Device.ClearResources
  • Expose Device.MaximumTextureMemory
  • Expose Device.RenderingPriority
  • Project LookupTable3DEffect
  • Project HistogramEffect (special case as it doesn't produce a regular image output)
  • Project ColorManagementEffect
  • Support saving CanvasBitmap with pixel formats other than 32bppPBGRA to disk
Sprites:
  • High performance 2D sprites
  • Support spritesheets (sample code?)
Controls:
  • Validate virtual image source multithreaded rendering design
  • CanvasAnimatedControl.Size should be synchronized with the update/draw loop
  • CanvasAnimatedControl doesn't display the proper clear color in the VS XAML designer
  • CanvasVirtualControl doesn't show the correct ClearColor in the designer
  • XAML Loaded vs. Unloaded events aren't reliably sequenced
Repay debts:
  • Synchronization when drying ink to swapchain
  • Remove workaround for intellisense xml (devdiv:1200085)
  • Switch docs to have UAP as primary focus
Developer conveniences:
  • CanvasImageSource.CreateDrawingSession on non-UI thread generates unhelpful error
  • Should CanvasBitmap.SaveAsync fail if there's an active drawing session? (stackoverflow question)
  • CanvasVirtualImageSource & CanvasImageSource should detect and generate a clear error if you attempt to create multiple simultaneous drawing sessions
  • Poor exception message when canvas size is too large (github #122)
  • It's too hard to maintain a rendertarget the same size as a CanvasAnimatedControl
  • Ability to clone a CanvasTextFormat
  • Consider adding CanvasStrokeStyle.Hairline (static property to create a hairline stroke style)
Docs & samples:
  • Demo for deep zooming with CanvasVirtualControl and ScrollViewer
  • Doc describing potential sampling issues when drawing abutting rects?
  • Video demo in ExampleGallery crashes if device doesn't have internet connection
  • DPI Example should have CanvasVirtualControl in it
  • Doc for TargetElapsedTime leaves you asking what units it's in
  • Camera effects demo layout needs to be tweak for wide screens (the bottom of the image is cropped otherwise)
  • exportsample should put RuntimeDirective.rd.xml only into the projects that reference it
  • exportsample should not put UAP-specific TargetPlatformVersion style properties into non-UAP projects
Performance:
  • Do profiling!
  • Instrumentation to enable performance investigations (eg d3d debug markers or etw)
  • Read bitmap contents without memory allocation (GetPixelBytes overload that takes an IBuffer)
  • Support DXT block compressed data in Win2D
  • Investigate perf glitch in CustomFont demo
  • DrawText in perf demo hits TextLayout::SlowPath in DWrite, triples time spent in DoLayout vs. an equivalent Direct2D app
  • CanvasBitmap.CopyPixelsFromBitmap should support copying between bitmaps of different devices
  • Investigate performance glitch when changing Example Gallery custom fonts to draw everything as a single text layout
Text completeness:
  • Add typography options
  • Expose PANOSE properties
  • Make it possible to do word art
  • Add custom inline objects (not just brushes)
  • Expose a way to get custom layouts
  • Add a way to retrieve text analysis results, outside of custom layout
  • You can query a text layout for whether a particular range uses a font fallback
  • Enable font streaming
Boring engineering infrastructure tasks:
  • Try running Example Gallery (and test.external?) with the D2D debug layer enabled
  • Get consistent about threading/marshaling_behavior metadata on our runtimeclasses
  • Verify that our GetResults methods won't return failures that should actually be reported via the completion handler
  • Use the RaiseException trick to give the game loop thread a human readable name
  • Remove checked in PFX files
Clone this wiki locally