Closed Bug 907011 Opened 6 years ago Closed 6 years ago

Enable Azure content for D3D9

Categories

(Core :: Graphics, defect)

x86
macOS
defect
Not set

Tracking

()

RESOLVED FIXED
mozilla26

People

(Reporter: mattwoodrow, Assigned: mattwoodrow)

References

Details

Attachments

(9 files, 3 obsolete files)

6.44 KB, patch
bas.schouten
: review+
Details | Diff | Splinter Review
4.48 KB, patch
bas.schouten
: review+
Details | Diff | Splinter Review
1.38 KB, patch
bas.schouten
: review+
Details | Diff | Splinter Review
780 bytes, patch
bas.schouten
: review+
Details | Diff | Splinter Review
1.24 KB, patch
bas.schouten
: review+
Details | Diff | Splinter Review
1.84 KB, patch
bas.schouten
: review+
Details | Diff | Splinter Review
4.53 KB, patch
bas.schouten
: review+
Details | Diff | Splinter Review
2.94 KB, patch
mattwoodrow
: review+
Details | Diff | Splinter Review
2.21 KB, patch
bas.schouten
: review+
Details | Diff | Splinter Review
This should be a good stepping stone to having Azure content enabled for all windows systems.
Depends on: 904981, 904884
Comment on attachment 792590 [details] [diff] [review]
Implement CopyGlyphsToBuilder for Cairo Azure backend

Review of attachment 792590 [details] [diff] [review]:
-----------------------------------------------------------------

::: gfx/2d/ScaledFontBase.cpp
@@ +99,5 @@
>  }
>  
>  void
>  ScaledFontBase::CopyGlyphsToBuilder(const GlyphBuffer &aBuffer, PathBuilder *aBuilder)
>  {

#ifdef USE_CAIRO

@@ +102,5 @@
>  ScaledFontBase::CopyGlyphsToBuilder(const GlyphBuffer &aBuffer, PathBuilder *aBuilder)
>  {
> +  PathBuilderCairo* builder = static_cast<PathBuilderCairo*>(aBuilder);
> +
> +  // Manually build the path for the PathBuilder.

nit: This comment does not apply.
Attachment #792590 - Flags: review?(bas) → review+
Comment on attachment 792589 [details] [diff] [review]
Implement pattern matrices for the Cairo Azure backend

Review of attachment 792589 [details] [diff] [review]:
-----------------------------------------------------------------

::: gfx/2d/DrawTargetCairo.cpp
@@ +341,5 @@
> +    GfxMatrixToCairoMatrix(*matrix, mat);
> +    cairo_matrix_invert(&mat);
> +    cairo_pattern_set_matrix(pat, &mat);
> +  }
> +

nit: Remove extra whitespace :)
Attachment #792589 - Flags: review? → review+
Comment on attachment 792588 [details] [diff] [review]
Implement antialias mode for the Cairo Azure backend

Review of attachment 792588 [details] [diff] [review]:
-----------------------------------------------------------------

nit: Lots of empty line whitespace in this patch, please fix :)
Attachment #792588 - Flags: review? → review+
Comment on attachment 792591 [details] [diff] [review]
Add PopGroupAndPaint to workaround precision issue

Review of attachment 792591 [details] [diff] [review]:
-----------------------------------------------------------------

So I now fully understand the cause of this bug and it's deep within pixman. But we'll still want this patch because it will make us hit more fastpaths.

I agree with the basic idea of what you're doing, but I'm tempted to say we should try and see if we can cast a 'wider net' though considering how common the PopGroupToSource->Paint idiom is. What we can do is simply check if the surfTransform is the inverse of the current context Matrix (I could even be convinced to simply track this with a bool). (Which will practically always be true) And then we can simply do the trick you're already doing. This should actually make use able to hit a couple of more fastpaths in other backends by using Moz2D's CopySurface, what do you think?
Attachment #792591 - Flags: feedback? → feedback+
Attachment #792601 - Attachment is obsolete: true
Attachment #793279 - Flags: review?(bas)
Attachment #792594 - Flags: review? → review?(bas)
Attachment #793283 - Flags: review?(bas)
What do you think of this approach?

We could do the equivalent changes just in gfxWindowsNativeDrawing instead, but this seemed easy and useful.

Try run is fully green with the patches in this bug.

https://tbpl.mozilla.org/?tree=Try&rev=aba9e283679a

Just need reviews, and the revised PopGroupAndPaint patch and we're good to go!
Attachment #793386 - Flags: review?(bas)
Comment on attachment 793275 [details] [diff] [review]
Don't copy to the snapshot when destroying

Review of attachment 793275 [details] [diff] [review]:
-----------------------------------------------------------------

I hope this won't break anything else but from looking at the code I think it's good.
Attachment #793275 - Flags: review?(bas) → review+
Attachment #793279 - Flags: review?(bas) → review+
Comment on attachment 793386 [details] [diff] [review]
Fix windows native drawing

Review of attachment 793386 [details] [diff] [review]:
-----------------------------------------------------------------

We're keeping our usage of the Thebes API fairly high here. I believe we should replace this by doing something like a NATIVE_SURFACE_HDC that DrawTargetCairo handles internally, and optionally other DrawTargets may expose as well and give us fast Native drawing. How do you feel about that?
Attachment #793283 - Flags: review?(bas) → review+
Blocks: 907926
Patch by Bas, r=me.

Had to rename mat to oldMat to fix a compile failure, and changed the if condition to be !state.patternTransformChanged for it to take effect.

https://tbpl.mozilla.org/?tree=Try&rev=e1a5cf903ec0
Attachment #792591 - Attachment is obsolete: true
Attachment #794327 - Flags: review+
Comment on attachment 793386 [details] [diff] [review]
Fix windows native drawing

Review of attachment 793386 [details] [diff] [review]:
-----------------------------------------------------------------

I -really- don't like this patch, but if it does the job for now, let's do it.
Attachment #793386 - Flags: review?(bas) → review+
Attachment #792594 - Attachment is obsolete: true
Attachment #792594 - Flags: review?(bas)
Attachment #794434 - Flags: review?(bas)
Attachment #794434 - Flags: review?(bas) → review+
Assignee: nobody → matt.woodrow
Whiteboard: [leave open]
Depends on: 911393
You need to log in before you can comment on or make changes to this bug.