[OMTC] Use DIB surfaces when not accelerating content drawing

RESOLVED FIXED in mozilla33

Status

()

defect
RESOLVED FIXED
5 years ago
5 years ago

People

(Reporter: bas.schouten, Assigned: bas.schouten)

Tracking

(Blocks 1 bug)

unspecified
mozilla33
x86_64
Windows 8.1
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(2 attachments, 1 obsolete attachment)

Currently we're using Cairo ImageSurfaces when not using accelerated content drawing (except with a D3D9 compositor), this is bad since it means we don't get subpixel AA, even when a surface is opaque. We should fix this.
Posted patch Use DIBs for opaque surfaces (obsolete) — Splinter Review
This patch makes us use DIBs for opaque surfaces, and makes all that code shared between all the different compositors. We might want to consider DIBs even for transparent surfaces on windows, but let's hold off on that for now.
Attachment #8453556 - Flags: review?(nical.bugzilla)
This time including the new files :-)
Attachment #8453556 - Attachment is obsolete: true
Attachment #8453556 - Flags: review?(nical.bugzilla)
Attachment #8453558 - Flags: review?(nical.bugzilla)
Comment on attachment 8453558 [details] [diff] [review]
Use DIBs for opaque surfaces v2

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

Nice

::: gfx/layers/TextureDIB.h
@@ +28,5 @@
> +  virtual ~DIBTextureClient();
> +
> +  // TextureClient
> +
> +  virtual bool IsAllocated() const MOZ_OVERRIDE{ return !!mSurface; }

nit: missing space between MOZ_OVERRIDE and {
same thing with IsLocked, CanExposeDrawTarget and HasInternalBuffer

@@ +38,5 @@
> +  virtual bool IsLocked() const MOZ_OVERRIDE{ return mIsLocked; }
> +
> +  virtual bool ToSurfaceDescriptor(SurfaceDescriptor& aOutDescriptor) MOZ_OVERRIDE;
> +
> +  virtual gfx::IntSize GetSize() const { return mSize; }

nit: MOZ_OVERRIDE

@@ +40,5 @@
> +  virtual bool ToSurfaceDescriptor(SurfaceDescriptor& aOutDescriptor) MOZ_OVERRIDE;
> +
> +  virtual gfx::IntSize GetSize() const { return mSize; }
> +
> +  virtual gfx::SurfaceFormat GetFormat() const { return mFormat; }

nit: MOZ_OVERRIDE
Attachment #8453558 - Flags: review?(nical.bugzilla) → review+
This patch masks some subpixel AA differences I can't quite explain, but seem to be there on the try-servers.
Attachment #8455916 - Flags: review?(jmuizelaar)
Blocks: 1036457
Attachment #8455916 - Flags: review?(jmuizelaar) → review+
https://hg.mozilla.org/mozilla-central/rev/c98c4be7d7bf
https://hg.mozilla.org/mozilla-central/rev/65a89b89cb1e
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla33
You need to log in before you can comment on or make changes to this bug.