Closed Bug 975764 Opened 10 years ago Closed 6 months ago

Add mesh-based transformation support to container layers

Categories

(Core :: Graphics: Layers, defect)

x86
macOS
defect

Tracking

()

RESOLVED INVALID

People

(Reporter: gal, Unassigned)

References

Details

Attachments

(1 file)

This is useful for advanced over-scroll effects as well as the CSS filter effects spec.
Assignee: nobody → gal
Attachment #8380239 - Flags: feedback?(roc)
Note: I am going to switch the internal representation of the meshes to triangle strips with degenerate triangles between each row.
Depends on: 975772
As indicated in comment 2 a triangle strip is more efficient to represent the meshes. The API will be the same so feel free to give feedback on the API while I test the triangle strip approach.
Comment on attachment 8380239 [details] [diff] [review]
API change. Backend support coming separately.

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

Sorry about the delay, somehow I lost the request.

::: gfx/layers/Layers.h
@@ +661,5 @@
> +
> +  const void *VertexBuffer() const;
> +  size_t VertexBufferSize() const;
> +
> +  const void *IndexBuffer() const;

Unclear why these return void*.

@@ +664,5 @@
> +
> +  const void *IndexBuffer() const;
> +  size_t IndexBufferSize() const;
> +
> +  gfx::IntSize GetDimensions() const { return mDim; }

All these members need documentation. especially regarding the sizes and meaning of the buffers.

@@ +1697,5 @@
>     * on this layer.
>     * Returns true if this will use an intermediate surface. This is largely
>     * backend-dependent, but it affects the operation of GetEffectiveOpacity().
>     */
> +  bool UseIntermediateSurface() { return mForceIntermediateSurface || !!mLayerMesh; }

Instead, have ComputeEffectiveTransforms set mForceIntermediateSurface if mLayerMesh is present

@@ +1756,5 @@
>    // The resolution scale inherited from the parent layer. This will already
>    // be part of mTransform.
>    float mInheritedXScale;
>    float mInheritedYScale;
> +  bool mForceIntermediateSurface;

I'm not sure why you renamed this. mUseIntermediateSurface was set iff we decided to use an intermediate surface. I'm not sure why you're changing that.

@@ +1761,3 @@
>    bool mSupportsComponentAlphaChildren;
>    bool mMayHaveReadbackChild;
> +  nsRefPtr<Mesh> mLayerMesh;

Move this up with the other pointers.
Attachment #8380239 - Flags: feedback?(roc)

The bug assignee didn't login in Bugzilla in the last 7 months, so the assignee is being reset.

Assignee: gal → nobody
Severity: normal → S3
Status: NEW → RESOLVED
Closed: 6 months ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: