Creates a WebGL context without a window for headless rendering and server-side graphics
Overall
score
96%
{
"context": "This criteria evaluates the engineer's ability to use WebGL 2 sync objects for GPU-CPU synchronization. The focus is on proper creation, waiting, querying, and cleanup of fence sync objects to coordinate between GPU rendering operations and CPU-side progress tracking.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Sync Object Creation",
"description": "Uses gl.fenceSync(gl.SYNC_GPU_COMMANDS_COMPLETE, 0) to create fence sync objects after GPU operations. Should create one sync object per rendering pass.",
"max_score": 25
},
{
"name": "Sync Status Querying",
"description": "Uses gl.getSyncParameter(sync, gl.SYNC_STATUS) to check if the sync object is signaled. Should query sync status to determine GPU completion state.",
"max_score": 20
},
{
"name": "Client Wait Implementation",
"description": "Uses gl.clientWaitSync(sync, 0, timeout) to wait for the GPU to signal the sync object. Should properly wait for sync signaling before proceeding with CPU operations.",
"max_score": 25
},
{
"name": "Sync Object Cleanup",
"description": "Uses gl.deleteSync(sync) to clean up sync objects after they are no longer needed. Should delete each sync object once its signaling has been confirmed.",
"max_score": 15
},
{
"name": "Sequential Pass Execution",
"description": "Ensures each rendering pass completes on the GPU before starting the next pass. Should use sync objects to enforce sequential execution rather than relying on implicit synchronization.",
"max_score": 10
},
{
"name": "Progress Callback Timing",
"description": "Calls the progress callback only after confirming GPU completion via sync objects. The callback should be invoked after clientWaitSync succeeds, not immediately after submitting draw commands.",
"max_score": 5
}
]
}Install with Tessl CLI
npx tessl i tessl/npm-gldocs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10