CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-gl

Creates a WebGL context without a window for headless rendering and server-side graphics

Overall
score

96%

Overview
Eval results
Files

rubric.jsonevals/scenario-4/

{
  "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-gl

tile.json