Closed Bug 598864 Opened 14 years ago Closed 12 years ago

Tracking: Composite shadow layers with GL

Categories

(Core :: Graphics, defect)

x86_64
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: cjones, Unassigned)

References

Details

(Keywords: meta)

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: --- → ?
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
(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?
tracking-fennec: 2.0- → 2.0b2+
Keywords: meta
Depends on: 592464
tracking-fennec: 2.0b2+ → 2.0b3+
Depends on: 607653
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: 621738
Depends on: 621745
Depends on: 622838
Blocks: 619491
No longer depends on: 619491
Depends on: 623963
Depends on: 624611
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.