Skip to content

Commit a243c94

Browse files
author
Yang Gu
committed
Split the test case
1 parent 20b2702 commit a243c94

File tree

1 file changed

+53
-52
lines changed

1 file changed

+53
-52
lines changed

tfjs-backend-webgpu/src/backend_webgpu_test.ts

Lines changed: 53 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -216,65 +216,67 @@ describeWebGPU('backend webgpu', () => {
216216
expect(() => c.dataSync()).not.toThrow();
217217
});
218218

219-
it('should reuse textures when fromPixels have same input size', async () => {
219+
it('should behave well if WEBGPU_USER_IMPORT is true or false', async () => {
220220
const useImport = tf.env().getBool('WEBGPU_USE_IMPORT');
221221
const backend = tf.backend() as WebGPUBackend;
222222
const textureManager = backend.getTextureManager();
223+
textureManager.dispose();
224+
225+
const video = document.createElement('video');
226+
const source = document.createElement('source');
227+
source.src =
228+
// tslint:disable-next-line:max-line-length
229+
'data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAAu1tZGF0AAACrQYF//+p3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE1NSByMjkwMSA3ZDBmZjIyIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxOCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MSBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTMgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0zIGJfcHlyYW1pZD0yIGJfYWRhcHQ9MSBiX2JpYXM9MCBkaXJlY3Q9MSB3ZWlnaHRiPTEgb3Blbl9nb3A9MCB3ZWlnaHRwPTIga2V5aW50PTI1MCBrZXlpbnRfbWluPTEgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTI4LjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAAAAwZYiEAD//8m+P5OXfBeLGOfKE3xkODvFZuBflHv/+VwJIta6cbpIo4ABLoKBaYTkTAAAC7m1vb3YAAABsbXZoZAAAAAAAAAAAAAAAAAAAA+gAAAPoAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIYdHJhawAAAFx0a2hkAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAPoAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAACgAAAAWgAAAAAAJGVkdHMAAAAcZWxzdAAAAAAAAAABAAAD6AAAAAAAAQAAAAABkG1kaWEAAAAgbWRoZAAAAAAAAAAAAAAAAAAAQAAAAEAAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAATttaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAD7c3RibAAAAJdzdHNkAAAAAAAAAAEAAACHYXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAACgAFoASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAADFhdmNDAWQACv/hABhnZAAKrNlCjfkhAAADAAEAAAMAAg8SJZYBAAZo6+JLIsAAAAAYc3R0cwAAAAAAAAABAAAAAQAAQAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAEAAAABAAAAFHN0c3oAAAAAAAAC5QAAAAEAAAAUc3RjbwAAAAAAAAABAAAAMAAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTguMTIuMTAw';
230+
source.type = 'video/mp4';
231+
video.appendChild(source);
232+
document.body.appendChild(video);
233+
234+
video.autoplay = true;
235+
video.loop = true;
236+
video.muted = true;
237+
video.preload = 'auto';
238+
await video.play();
239+
240+
// ensure video element to be loaded
241+
if ('requestVideoFrameCallback' in video) {
242+
// tslint:disable-next-line:no-any
243+
await new Promise(go => (video as any).requestVideoFrameCallback(go));
244+
}
223245

224246
{
225-
const video = document.createElement('video');
226-
const source = document.createElement('source');
227-
source.src =
228-
// tslint:disable-next-line:max-line-length
229-
'data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAAu1tZGF0AAACrQYF//+p3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE1NSByMjkwMSA3ZDBmZjIyIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxOCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MSBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTMgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0zIGJfcHlyYW1pZD0yIGJfYWRhcHQ9MSBiX2JpYXM9MCBkaXJlY3Q9MSB3ZWlnaHRiPTEgb3Blbl9nb3A9MCB3ZWlnaHRwPTIga2V5aW50PTI1MCBrZXlpbnRfbWluPTEgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTI4LjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAAAAwZYiEAD//8m+P5OXfBeLGOfKE3xkODvFZuBflHv/+VwJIta6cbpIo4ABLoKBaYTkTAAAC7m1vb3YAAABsbXZoZAAAAAAAAAAAAAAAAAAAA+gAAAPoAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIYdHJhawAAAFx0a2hkAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAPoAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAACgAAAAWgAAAAAAJGVkdHMAAAAcZWxzdAAAAAAAAAABAAAD6AAAAAAAAQAAAAABkG1kaWEAAAAgbWRoZAAAAAAAAAAAAAAAAAAAQAAAAEAAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAATttaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAD7c3RibAAAAJdzdHNkAAAAAAAAAAEAAACHYXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAACgAFoASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAADFhdmNDAWQACv/hABhnZAAKrNlCjfkhAAADAAEAAAMAAg8SJZYBAAZo6+JLIsAAAAAYc3R0cwAAAAAAAAABAAAAAQAAQAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAEAAAABAAAAFHN0c3oAAAAAAAAC5QAAAAEAAAAUc3RjbwAAAAAAAAABAAAAMAAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTguMTIuMTAw';
230-
source.type = 'video/mp4';
231-
video.appendChild(source);
232-
document.body.appendChild(video);
233-
234-
video.autoplay = true;
235-
video.loop = true;
236-
video.muted = true;
237-
video.preload = 'auto';
238-
await video.play();
239-
240-
// ensure video element to be loaded
241-
if ('requestVideoFrameCallback' in video) {
242-
// tslint:disable-next-line:no-any
243-
await new Promise(go => (video as any).requestVideoFrameCallback(go));
244-
}
245-
246-
{
247-
textureManager.dispose();
248-
tf.env().set('WEBGPU_USE_IMPORT', true);
249-
const res = await tf.browser.fromPixelsAsync(video);
250-
expect(res.shape).toEqual([90, 160, 3]);
251-
const data = await res.data();
252-
expect(data.length).toEqual(90 * 160 * 3);
253-
const freeTexturesAfterFromPixels = textureManager.getNumFreeTextures();
254-
expect(freeTexturesAfterFromPixels).toEqual(0);
255-
const usedTexturesAfterFromPixels = textureManager.getNumUsedTextures();
256-
expect(usedTexturesAfterFromPixels).toEqual(0);
257-
}
258-
259-
{
260-
textureManager.dispose();
261-
tf.env().set('WEBGPU_USE_IMPORT', false);
262-
const res = await tf.browser.fromPixelsAsync(video);
263-
expect(res.shape).toEqual([90, 160, 3]);
264-
const data = await res.data();
265-
expect(data.length).toEqual(90 * 160 * 3);
266-
const freeTexturesAfterFromPixels = textureManager.getNumFreeTextures();
267-
expect(freeTexturesAfterFromPixels).toEqual(1);
268-
const usedTexturesAfterFromPixels = textureManager.getNumUsedTextures();
269-
expect(usedTexturesAfterFromPixels).toEqual(0);
270-
}
271-
272-
document.body.removeChild(video);
273-
tf.env().set('WEBGPU_USE_IMPORT', useImport);
247+
tf.env().set('WEBGPU_USE_IMPORT', true);
248+
const res = await tf.browser.fromPixelsAsync(video);
249+
expect(res.shape).toEqual([90, 160, 3]);
250+
const data = await res.data();
251+
expect(data.length).toEqual(90 * 160 * 3);
252+
const freeTexturesAfterFromPixels = textureManager.getNumFreeTextures();
253+
expect(freeTexturesAfterFromPixels).toEqual(0);
254+
const usedTexturesAfterFromPixels = textureManager.getNumUsedTextures();
255+
expect(usedTexturesAfterFromPixels).toEqual(0);
256+
}
257+
258+
{
259+
tf.env().set('WEBGPU_USE_IMPORT', false);
260+
const res = await tf.browser.fromPixelsAsync(video);
261+
expect(res.shape).toEqual([90, 160, 3]);
262+
const data = await res.data();
263+
expect(data.length).toEqual(90 * 160 * 3);
264+
const freeTexturesAfterFromPixels = textureManager.getNumFreeTextures();
265+
expect(freeTexturesAfterFromPixels).toEqual(1);
266+
const usedTexturesAfterFromPixels = textureManager.getNumUsedTextures();
267+
expect(usedTexturesAfterFromPixels).toEqual(0);
274268
}
275269

270+
document.body.removeChild(video);
271+
tf.env().set('WEBGPU_USE_IMPORT', useImport);
272+
});
273+
274+
it('should reuse textures when fromPixels have same input size', async () => {
275+
const backend = tf.backend() as WebGPUBackend;
276+
const textureManager = backend.getTextureManager();
277+
textureManager.dispose();
278+
276279
{
277-
textureManager.dispose();
278280
const img = new Image(10, 10);
279281
img.src = 'data:image/gif;base64' +
280282
',R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';
@@ -296,7 +298,6 @@ describeWebGPU('backend webgpu', () => {
296298
}
297299

298300
{
299-
textureManager.dispose();
300301
const img = new Image(10, 10);
301302
img.src =
302303
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAABfSURBVChTY/gPBu8NLd/KqLxT1oZw4QAqDZSDoPeWDj9WrYUIAgG6NBAhm4FFGoIgxuCUBiKgMfikv1bW4pQGav334wdUGshBk/6SVQAUh0p/mzIDTQ6oFSGNHfz/DwAwi8mNzTi6rwAAAABJRU5ErkJggg==';

0 commit comments

Comments
 (0)