![]() (This also occurs in RetroArch's bsnes core.) Oddly, despite ares xshm uses OpenMP (), ares running with xshm driver does not exhibit anomalously high CPU usage, remaining at around 105% of a single core. I have not tested if this increases the maximum FPS (by allowing the main thread to clock higher) or reduces it (by increasing thread wakeup delays). Alternatively the OMP_WAIT_POLICY=passive environment variable makes OpenMP not spin-wait, in which case the OpenMP threads eat under 10% of a CPU core each. You can avoid initializing and using OpenMP by disabling Fast PPU () and switching to a video backend other than XShm () (OpenGL 2.0 works, though that seems to burn CPU and throttle to 60fps, and 3.0 works but I haven't tested much). My theory is that each thread is woken up to perform a very small amount of computation, but very often so it spends most of its time spin-waiting, rather than either doing useful work or sleeping on a futex (not burning CPU) Interestingly when I interrupt bsnes in gdb, do_wait actually calls futex_wait which does not burn CPU. This is due to OpenMP creating 11 worker threads across 6 CPU cores and 12 CPU threads, and when they don't have work, they run gomp_barrier_wait_end -> do_wait -> do_spin (according to profilers), burning nearly 50% of a CPU core each. When I run the AUR bsnes package (the window appearance is quite buggy, with gray-on-black menubar and transparent window background on XShm), and opening any SNES game, bsnes loads my 12-thread CPU to nearly 40%. Perhaps there is a way to both avoid flicker on GTK+2 and not break GTK+3, but until we find it, I would rather occasional flicker on GTK+2 than permanently broken GTK+3. Even the menu-bar, which by default draws text in a very dark grey, so you can hardly read what it says. that background colour is used for everything. GTK+3 was designed around the more modern compositing model, which doesn't need that "default background colour" hack, and as a result when you set the window background colour on GTK+3. GTK+2 was designed around the X11 model, and so it works basically the way bsnes expects. Because the bsnes window is mostly black, bsnes sets its window background colour to black, so the flickering of X-server-drawn and application-drawn content will be less obvious. The X11 protocol gives each window a "default background colour", to be used by the X server to fill the blanks after the window manager has resized the window, but before the application has been able to repaint it. ![]() Specifically on X11, when the user resizes a window the window manager, the X server, and the application can all have different ideas about the exact window size. However, on some platforms that's not enough. When the window is resized, the hiro Viewport widget repaints itself, according to whatever hiro backend is in use. The bsnes window is mostly covered by the viewport, which is supposed to be black. CPU, SA1, and SuperFX overclocking support. ![]() Optional emulation of flaws in older emulators for compatibility with older unofficial software.Optional high-level emulation of most SNES coprocessors.Auto-saving of states when unloading games, and auto-resuming of states when reloading games.Support for WASAPI exclusive mode audio.Support for Direct3D exclusive mode video.Run-ahead support for removing internal game engine input latency.Just-in-time input polling for minimal input latency.Adaptive sync and dynamic rate control for perfect audio/video synchronization.Several built-in software filters, including HQ2x (by MaxSt) and snes_ntsc (by blargg).Save states with undo and redo support (for reverting accidental saves and loads).Advanced mapping system allowing multiple bindings to every emulated input.Optional higan game folder support (standard game ROM files are also fully supported!).Extensive Satellaview emulation, including BS Memory flash write and wear-leveling emulation.Customizable per-byte game mappings to support any cartridges, including prototype games.Built-in save state manager with screenshot previews and naming capabilities.Built-in cheat code database for hundreds of popular games (by mightymo).Built-in games database with thousands of game entries.Speed mode settings which retain smooth audio output (50%, 75%, 100%, 150%, 200%).Low-level emulation of all SNES coprocessors (DSP-n, ST-01n, Cx4).HD mode 7 graphics with optional supersampling (by DerKoun).True Super Game Boy emulation (using the SameBoy core by Lior Halphon). ![]() Bsnes is a multi-platform Super Nintendo (Super Famicom) emulator, originally developed by Near, which focuses on performance, features, and ease of use. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |