CNA-PLAT-003: EasyGL on GLES/WebGL contexts without GL_NV_polygon_mode or WEBGL_polygon_mode refuses wireframe triangle draws

CNA snapshot 009d40f5  ·  Known Issues › Platform limitations  ·  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.

FillMode::WireFrame triangle draws throw NotSupportedException there instead of being approximated with lines; GraphicsCapability::WireFrame reports false so a game can choose Solid.

Identifier
CNA-PLAT-003
Category
Platform limitation
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
RasterizerState.FillMode = WireFrame on the GLES and WebGL EasyGL profiles

Expected behaviour

XNA HiDef supports wireframe fill; OpenGL ES and WebGL have no polygon mode unless an extension provides it.

Actual behaviour at TARGET

EasyGLRenderer.cpp's RequireSupportedFillModeEXT throws NotSupportedException for TriangleList/TriangleStrip draws when wireframe is requested and neither extension is present, with a message pointing at SupportsCapability(GraphicsCapability::WireFrame).

Source locations

Evidence

Checked by reading the named sources at 009d40f5; nothing was built or executed for this entry.

Independent re-verification: Checked by reading the named sources at 009d40f5; nothing was built or executed for this entry. The shared WireFrame tests (GraphicsDeviceCapabilityTests.cpp) assert that the reported capability matches the actual draw, so both the positive and the refusal arm exist. In CI they run only in the unfiltered general job, which builds the OPENGLES3 identity (an ES context); platform-ci's OPENGL33 leg runs smoke games rather than these fixtures, so no CI job runs them on desktop GL, and which arm the CI ES context takes depends on whether it exposes GL_NV_polygon_mode.

Focused reproduction

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

Current tests

EasyGL wireframe fixtures run on desktop GL in CI; the refusal branch is exercised only where a context lacks the extensions.

Regression test

A GLES/WebGL context test that asserts the capability is false and the draw throws.

Blast radius

Debug wireframe views and wireframe art styles on mobile and browser builds.

Workaround

Check the WireFrame capability and fall back to Solid, or draw line lists.

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