CNA-GAP-018: EasyGL does not register Texture3D with its context-loss recovery, so volume texture contents are lost after a real WebGL/GLES context loss

CNA snapshot 009d40f5  ·  Known Issues › Functional gaps  ·  source links pinned to 009d40f5

✓

Evidence basis: source-verified at the pinned commit; tests exist (not executed for this page). Claims on this page were checked by reading the CNA source at commit 009d40f5; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.

EasyGLTexture3DRenderer is not a RecoverableResource, unlike EasyGL's 2D textures, cube textures, render targets, buffers and queries.

Identifier
CNA-GAP-018
Category
Functional gap
Subsystem
Graphics & renderers
Status
Open
Verified against
CNA 009d40f5 (009d40f5dd085c4e674d3479675fac84b12b3e0a)
Evidence basis
Source-verified: read at TARGET, not executed
Tests touching this area
Yes: see Current tests
Affected contract
Texture3D on EasyGL profiles with context loss (WebGL2, GLES)

Expected behaviour

EasyGL restores GPU resources after a context loss through ::easygl::RecoverableResource; every resource type that holds data should take part.

Actual behaviour at TARGET

In EasyGLRenderer.hpp, EasyGLTextureRenderer, EasyGLTextureCubeRenderer, EasyGLRenderTargetRenderer, the buffers, queries and the sprite renderer derive from RecoverableResource; EasyGLTexture3DRenderer derives only from ITexture3DRenderer, so after a lost/restored context its GL name refers to nothing and its contents are gone.

Source locations

Evidence

Checked by reading the named sources at 009d40f5; nothing was built or executed for this entry. What sampling a lost volume texture shows after restoration was not observed.

Focused reproduction

No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.

Current tests

EasyGL context-loss tests exercise 2D and cube textures; none covers Texture3D.

Regression test

Add Texture3D to the simulated context-loss fixture and assert its contents after restoration.

Blast radius

Browser and mobile games that use volume textures and survive a context loss.

Workaround

Recreate Texture3D contents in a DeviceReset handler.

The same subject is explained at several altitudes. These are the neighbouring pages at each one.