Platform/GFX/AzureConversion: Difference between revisions

< Platform‎ | GFX
mNo edit summary
(Remove bugs that have been resolved.)
 
(One intermediate revision by one other user not shown)
Line 13: Line 13:
= Overview of what is involved =
= Overview of what is involved =


See [http://mozillagfx.wordpress.com/2013/08/21/looking-for-a-good-first-place-to-contribute-to-gecko-gfx/ Looking for a good first place to contribute to Gecko gfx?] for a good summary of the kind of changes involved and tips on how to get started.
See <cite>[http://mozillagfx.wordpress.com/2013/08/21/looking-for-a-good-first-place-to-contribute-to-gecko-gfx/ Looking for a good first place to contribute to Gecko gfx?]</cite> for a good summary of the kind of changes involved and tips on how to get started.


= Conversion opportunities =
= Conversion opportunities =
{|
{|
! Project
! Bug(s)
! File(s) touched
! Description
|-
| Retain gradients
| {{bug|761393}}
| nsCSSRendering.cpp, among others (which?)
| Realizing gradients can be extremely expensive, due to the way they're implemented in Direct2D (and possibly also Skia).
We should cache the gfxPattern that represents these gradients, which will implicitly keep the realized gradient around.
|-
| gfxDrawable conversion
| {{bug|767132}}
| gfx/thebes/gfxDrawable.cpp
| We currently draw images (and similar things) using gfxDrawable, which only knows how to use Thebes. We should be smart enough to detect when a gfxContext is a wrapper around a DrawTarget, and call the DrawTarget functions directly to avoid wrapper overhead.
|-
|-
| Borders
| Borders

Latest revision as of 19:43, 23 September 2015

Introduction

Since bug 715768, Windows 7 and Vista have been rendering through a Thebes wrapper to the Direct2D backend of our new 2D API. Unfortunately, that means most of the benefit from our better API is lost to the wrapper.

Therefore, we should start writing code that uses the API directly, conditioned on a gfxContext actually wrapping a DrawTarget.

Relevant code:

Of special note: backend-specific types (e.g. DrawTargetCairo) are not exposed to consumer code. You can query a backend for its type, but you cannot downcast it.

Overview of what is involved

See Looking for a good first place to contribute to Gecko gfx? for a good summary of the kind of changes involved and tips on how to get started.

Conversion opportunities

Borders bug 767135 nsCSSRendering.cpp Drawing borders accurately is very complex, and often involves gradients and other things to be correct. We need to rewrite our border rendering code to use DrawTargets and retain the appropriate objects so we can get greater performance.