Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v13.13.0において Too many active WebGL contexts.のWarningが多数表示される。 #10960

Closed
sasagar opened this issue Jun 5, 2023 · 14 comments · Fixed by #10966
Closed
Labels
⚠️bug? This might be a bug packages/frontend Client side specific issue/PR

Comments

@sasagar
Copy link
Contributor

sasagar commented Jun 5, 2023

💡 Summary

v13.13.0において、 WARNING: Too many active WebGL contexts. Oldest context will be lost. が複数表示される。

🥰 Expected Behavior

Warningが表示されない

🤬 Actual Behavior

特にデッキ表示において多数のWARNINGが表示される。

📝 Steps to Reproduce

  1. v13.13.0のMisskeyを開く。
  2. デベロッパーツールでWarningを確認する。

📌 Environment

💻 Frontend

  • Model and OS of the device(s):
    Windows 11 22H2
  • Browser:
    Chrome 114.0.5735.90
  • Server URL:
    misskey.bktsk.com / ikaskey.bktsk.comで確認

🛰 Backend (for instance admin)

  • Installation Method or Hosting Service: docker compose
  • Misskey: 13.13.0
  • Node: 18.16.0
  • PostgreSQL: 15.3
  • Redis: 7.0.11
  • OS and Architecture: CentOS Stream 9
@sasagar sasagar added the ⚠️bug? This might be a bug label Jun 5, 2023
@syuilo
Copy link
Member

syuilo commented Jun 6, 2023

やっぱりavatarはblurhash使わない方が良いかも

@syuilo syuilo added the packages/frontend Client side specific issue/PR label Jun 6, 2023
@tamaina
Copy link
Contributor

tamaina commented Jun 6, 2023

Warningが表示されても(今のところ)問題ないし、Avatarからblurhashを外しても表示されていたはず

@syuilo
Copy link
Member

syuilo commented Jun 6, 2023

warning出すってことはパフォーマンス上の影響がありそうな気がした

@sasagar
Copy link
Contributor Author

sasagar commented Jun 6, 2023

warning出すってことはパフォーマンス上の影響がありそうな気がした

自分もその認識でIssue上げました。
再描画の頻度が高くなることで他のウインドウに影響を与えていそうです。
(v13.13.0のクライアントを表示させているとYouTubeの動画が止まる頻度が激増したりしたので)

@tamaina
Copy link
Contributor

tamaina commented Jun 6, 2023

パフォーマンスの話で言えばblurhash自体が重たい(のでAvatarは平均色塗りつぶしだけのモードを用意して描画するのがいいかも)

Warningが出るのはWorkerのOffscreenCanvasの破棄がうまく行ってない
(もしかしたらバグやらブラウザが非対応かで、メインスレッドでHTMLCanvasElementに描画しているかもしれない、がそれもまた破棄がうまくできていないということではある)

@acid-chicken
Copy link
Member

buraha をデーモンっぽく立ち上げて一定数の WebGL コンテキストしか理論上立たないようにしないとダメなんかな

@sasagar
Copy link
Contributor Author

sasagar commented Jun 6, 2023

なんだかざっと調べた感じ、上限数がWebkit系では15らしく、Mozilla系では100以上はあるという話なので、
ブラウザ依存で起こる可能性は十分ありそうでした。

ただ、現状Chromeユーザーの比率が多いと思われるので、ある程度対策した状態にした方が良さそうだなぁと思ったところでした。

@tamaina
Copy link
Contributor

tamaina commented Jun 6, 2023

Blurhash周りについては #10782 参照

@sasagar
Copy link
Contributor Author

sasagar commented Jun 6, 2023

関連するかはわからないのですが、動きのあるGifをアイコンにしているユーザーから「(自分の)アイコンが表示されるまでが遅い」という話がありました。
PCブラウザではあまり再現性が無く、iPhoneでは再現しました。何かのヒントになれば...。

@tamaina
Copy link
Contributor

tamaina commented Jun 6, 2023

@acid-chicken Canvasに直接描画できない時点でいろいろ破綻してると思うの

burahaを2Dコンテキストで頑張れないの

@acid-chicken
Copy link
Member

@acid-chicken Canvasに直接描画できない時点でいろいろ破綻してると思うの

burahaを2Dコンテキストで頑張れないの

ハードウェアアクセラレーションをかけたいので本末転倒では

const work = new OffscreenCanvas(event.data.width ?? 64, event.data.height ?? 64);

どうせ 64 以上行かないんだったら 64x64 固定で OffscreenCanvas シングルトンでいい説ない?

@tamaina
Copy link
Contributor

tamaina commented Jun 6, 2023

iPhone

SafariがOffscreenCanvasのWebGL2に対応していないためメインスレッドで頑張ってるからだと思われる

@tamaina
Copy link
Contributor

tamaina commented Jun 6, 2023

Canvas使いまわそうぜってことか()

@acid-chicken
Copy link
Member

Canvas使いまわそうぜってことか()

サイズが変わらないならコンテキストは使い回されるはず

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
⚠️bug? This might be a bug packages/frontend Client side specific issue/PR
Projects
None yet
4 participants