Kamiya
Kamiya
desktopで試す範疇なら https://github.com/RustAudio/rust-portaudio/blob/master/examples/saw.rs
よさげ
FPSカウンターだけの表示だと秒10000いける ```c for (uint32_t counter = 0 ; ; ++counter ) { // EmbeddedEmulator_update_screen(&fb); // print_framebuffer(150, 0, 2); sprintf(msg, "%d", counter); BSP_LCD_DisplayStringAt(5, 5, (uint8_t *)msg, LEFT_MODE); /* Touchscreen test */...
エミュレーションだけ入れると10fps ```c for (uint32_t counter = 0 ; ; ++counter ) { EmbeddedEmulator_update_screen(&fb); // print_framebuffer(150, 0, 2); sprintf(msg, "%d", counter); BSP_LCD_DisplayStringAt(5, 5, (uint8_t *)msg, LEFT_MODE); /* Touchscreen test */ //...
print_framebuffer入れても8fps、これは最適化が効いている気がする ```c for (uint32_t counter = 0 ; ; ++counter ) { EmbeddedEmulator_update_screen(&fb); print_framebuffer(150, 0, 2); sprintf(msg, "%d", counter); BSP_LCD_DisplayStringAt(5, 5, (uint8_t *)msg, LEFT_MODE); /* Touchscreen test */ // TS_StateTypeDef...
ざっとこんな感じ。本当ならPPUは完全並列で動かしていいのだけれど、ポリシーに反するのでアレ * Emulateが異様に遅い 80ms * print_framebuffer 10ms * print fpscounter
opt-level=3, debug_assertions=noで2msぐらい削れた
ICache/DCache有効にしてなさそう。core_cm7のSCB_xxxにキャッシュ操作周りのインライン関数がある
体感でわからんぐらいだな、なんかミスってるかも ```c SCB_EnableDCache(); SCB_EnableICache(); ```
ART, Prefetch Buffer有効化して9fpsぐらい。framebuffer解決しても15fps届くかどうかぐらいか