Tracking: Composite shadow layers with GL

RESOLVED FIXED

Status

()

Core
Graphics
RESOLVED FIXED
7 years ago
5 years ago

People

(Reporter: cjones, Unassigned)

Tracking

({meta})

Firefox Tracking Flags

(Not tracked)

Details

10,000-foot view of plan is
 - have LayerManagerOGL implement ShadowLayerManager
 - create a ForeignTextureImage, or normal TextureImage, for shadow layers
 - upload repainted content to texture

We need
 - ability to swap out Pixmaps when using texture-from-pixmap, should be easy
 - fast way to upload nsRegions to texture ... easiest is to create scratch ImageSurface, glTexSubImage2D that
 - maybe exotic, fast EGLImage-y stream-y things where available?
 - shaders optimized for SGX

Lots of unknowns and tests to run.  Parts of the above may have been obsoleted by recent GL layers work.
tracking-fennec: --- → ?
Blocks: 598874
Joe pointed me at http://www.dei.isep.ipp.pt/~matos/cg/docs/manual/glPixelStore.3G.html, specifically GL_UNPACK_ROW_LENGTH.  Using this plus existing Shmem rendering looks like an easy first implementation.
Chris, we try not to block on meta bugs. Can you please request blocking-fennec on all appropriate sub-bugs.
tracking-fennec: ? → 2.0-
Assignee: nobody → jones.chris.g
>  - ability to swap out Pixmaps when using texture-from-pixmap, should be easy
For this we should keep ShadowLayer parent as X-Surface, and child as Image surface, Bind Parent X-Surface to Texture, and instead of swap do XShmPutImage

>  - fast way to upload nsRegions to texture ... easiest is to create scratch
> ImageSurface, glTexSubImage2D that

Somehow this glTexSubImage2D - optimized on maemo6 (not 100% sure)

>  - maybe exotic, fast EGLImage-y stream-y things where available?
We have nice extension which allow us to lock texture and get raw pointer to memory shared to GPU (recent egl lock extension).
that allow us avoid XShmPutImage and just do memcpy locally, or paint directly to Texture memory buffer

>  - shaders optimized for SGX
Bug 572651 - is first things we need to fix
Depends on: 601888
Depends on: 572651
(In reply to comment #3)
> >  - maybe exotic, fast EGLImage-y stream-y things where available?
> We have nice extension which allow us to lock texture and get raw pointer to
> memory shared to GPU (recent egl lock extension).
> that allow us avoid XShmPutImage and just do memcpy locally, or paint directly
> to Texture memory buffer

This would work well -- we already have the TextureImage abstraction, so have a natural place to lock/unlock.  Can you point us at the docs for the extension?

Updated

7 years ago
tracking-fennec: 2.0- → 2.0b2+
Keywords: meta
Depends on: 595087
Depends on: 593880
Depends on: 602428
Depends on: 602435
Depends on: 602523
Depends on: 592464
Depends on: 604101

Updated

7 years ago
tracking-fennec: 2.0b2+ → 2.0b3+
Depends on: 607653
Blocks: 607684
Depends on: 609637
Depends on: 609838
Depends on: 610210
No longer depends on: 602523
Tracking bug doesn't block.
Assignee: jones.chris.g → nobody
tracking-fennec: 2.0b3+ → ---
Depends on: 619490
Depends on: 619491
Depends on: 621738
Depends on: 621745
Depends on: 622838
Depends on: 621527
Depends on: 623255
Depends on: 623451
Blocks: 619491
No longer depends on: 619491
Depends on: 623963
Depends on: 623728
Depends on: 624611
Depends on: 628566
Depends on: 670930

Updated

5 years ago
Status: NEW → RESOLVED
Last Resolved: 5 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.