Closed Bug 1036785 Opened 10 years ago Closed 10 years ago

[OMTC] Use DIB surfaces when not accelerating content drawing

Categories

(Core :: Graphics: Layers, defect)

x86_64
Windows 8.1
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla33

People

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

References

Details

Attachments

(2 files, 1 obsolete file)

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.
Attached 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: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla33
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: