1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
- /**
- * Tests if multiple WebGL contexts are correctly handled.
- */
- function* ifWebGLSupported() {
- let { target, front } = yield initBackend(MULTIPLE_CONTEXTS_URL);
- front.setup({ reload: true });
- let [firstProgramActor, secondProgramActor] = yield getPrograms(front, 2);
- isnot(firstProgramActor, secondProgramActor,
- "Two distinct program actors were recevide from two separate contexts.");
- let firstVertexShader = yield firstProgramActor.getVertexShader();
- let firstFragmentShader = yield firstProgramActor.getFragmentShader();
- let secondVertexShader = yield secondProgramActor.getVertexShader();
- let secondFragmentShader = yield secondProgramActor.getFragmentShader();
- isnot(firstVertexShader, secondVertexShader,
- "The two programs should have distinct vertex shaders.");
- isnot(firstFragmentShader, secondFragmentShader,
- "The two programs should have distinct fragment shaders.");
- let firstVertSource = yield firstVertexShader.getText();
- let firstFragSource = yield firstFragmentShader.getText();
- let secondVertSource = yield secondVertexShader.getText();
- let secondFragSource = yield secondFragmentShader.getText();
- is(firstVertSource, secondVertSource,
- "The vertex shaders should have identical sources.");
- is(firstFragSource, secondFragSource,
- "The vertex shaders should have identical sources.");
- yield ensurePixelIs(front, { x: 0, y: 0 }, { r: 255, g: 255, b: 0, a: 255 }, true, "#canvas1");
- yield ensurePixelIs(front, { x: 0, y: 0 }, { r: 0, g: 255, b: 255, a: 255 }, true, "#canvas2");
- yield ensurePixelIs(front, { x: 127, y: 127 }, { r: 255, g: 255, b: 0, a: 255 }, true, "#canvas1");
- yield ensurePixelIs(front, { x: 127, y: 127 }, { r: 0, g: 255, b: 255, a: 255 }, true, "#canvas2");
- ok(true, "The two canvases are correctly drawn.");
- yield firstProgramActor.highlight([1, 0, 0, 1]);
- yield ensurePixelIs(front, { x: 0, y: 0 }, { r: 255, g: 0, b: 0, a: 255 }, true, "#canvas1");
- yield ensurePixelIs(front, { x: 0, y: 0 }, { r: 0, g: 255, b: 255, a: 255 }, true, "#canvas2");
- yield ensurePixelIs(front, { x: 127, y: 127 }, { r: 255, g: 0, b: 0, a: 255 }, true, "#canvas1");
- yield ensurePixelIs(front, { x: 127, y: 127 }, { r: 0, g: 255, b: 255, a: 255 }, true, "#canvas2");
- ok(true, "The first canvas was correctly filled after highlighting.");
- yield secondProgramActor.highlight([0, 1, 0, 1]);
- yield ensurePixelIs(front, { x: 0, y: 0 }, { r: 255, g: 0, b: 0, a: 255 }, true, "#canvas1");
- yield ensurePixelIs(front, { x: 0, y: 0 }, { r: 0, g: 255, b: 0, a: 255 }, true, "#canvas2");
- yield ensurePixelIs(front, { x: 127, y: 127 }, { r: 255, g: 0, b: 0, a: 255 }, true, "#canvas1");
- yield ensurePixelIs(front, { x: 127, y: 127 }, { r: 0, g: 255, b: 0, a: 255 }, true, "#canvas2");
- ok(true, "The second canvas was correctly filled after highlighting.");
- yield firstProgramActor.unhighlight();
- yield secondProgramActor.unhighlight();
- yield ensurePixelIs(front, { x: 0, y: 0 }, { r: 255, g: 255, b: 0, a: 255 }, true, "#canvas1");
- yield ensurePixelIs(front, { x: 0, y: 0 }, { r: 0, g: 255, b: 255, a: 255 }, true, "#canvas2");
- yield ensurePixelIs(front, { x: 127, y: 127 }, { r: 255, g: 255, b: 0, a: 255 }, true, "#canvas1");
- yield ensurePixelIs(front, { x: 127, y: 127 }, { r: 0, g: 255, b: 255, a: 255 }, true, "#canvas2");
- ok(true, "The two canvases were correctly filled after unhighlighting.");
- yield removeTab(target.tab);
- finish();
- }
|