KhronosGroup / KhronosGroup/WebGL

deqp referencerenderer rasterization algorithm differ in js and c++

Open
#1,690 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.