KhronosGroup / KhronosGroup/WebGL
deqp referencerenderer rasterization algorithm differ in js and c++
- Dominant language
- HTML
- Stars
- 2.9k
- Forks
- 703
- Avg merge
- 2d 9h
- Merged PRs (30d)
- 4
Description
In c++, we always do in 2x2 grid for the purpose of texture lod selection, whereas in js it's just simple rasterization per pixel through baricentric coordinates.
This caused rendering mipmapped textures to size 1 (either width or height) textures differ from GL drivers, and therefore a bunch of deqp js tests fail.
For now, we will bypass verifying rendering to size 1 textures to make these tests passing. It would be nice to match the js referencerenderer with the c++ version in the future and remove such hack.
This only happens to 3D textures. In js, the z dimension is not being considered because it doesn't have the 2x2 grid to get diff on z. This might be a possibility of the root cause.
Contributor guide
Research direction
Compare the JavaScript and C++ referencerenderer rasterization paths, starting with how each computes texture LOD from the 2x2 grid. Reproduce the failing deqp JS tests involving mipmapped 3D textures and size-1 dimensions, then verify that z participates consistently and the temporary bypass can be removed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, javascript
- Domain
- computer-graphics, testing
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100