Electron / Chorimum: texImage2D и putImageData замораживание рендерера - PullRequest
0 голосов
/ 24 октября 2018

У нас есть родная надстройка C ++, запущенная в процессе рендеринга Electron, предоставляющая данные растрового изображения Uint8Array в JavaScript, где они рисуются на холст через textImage2D в контексте webgl или помещаютIImageData в 2D-контекст.

Uint8Array размещается в собственном дополнении и передается через обратный вызов в JS.Он не освобождается сразу после завершения обратного вызова и хранится в пуле памяти, в котором хранятся последние 10 фреймов, отправленных для доступности для асинхронного рисования.

Если массив передается как в putImageData или texImage2D,рендер полностью зависает.Если он заранее скопирован в новый TypedArray, проблем нет, но мы хотели бы избежать дополнительной операции копирования, а значит и пула памяти.

У меня такое ощущение, что замораживание связано с тем, как обрабатывает ChromiumКоманды GL через буфер команд.

Я попытался использовать следующие аргументы командной строки Chromimum, чтобы попытаться изолировать проблему, но не повезло - процесс рендеринга останавливается, если массив не был скопирован заранее):

  • --use-passthrough-cmd-decoder приводит к увеличению времени рендеринга для 2d, а контекст null для webgl
  • --disable-gpu-sandbox ничего не делает
  • --in-process-gpu ничего не делает

Есть идеи, что происходит?

...