![]() ![]() In yuzu, they’re used to have better control over thread scheduling, working as tools for the kernel to quickly pause and resume emulated guest threads from within the application, without having to rely on the OS scheduler. Instead, they yield control to other fibers in a process. This time, he has been tidying up the memory management code and refactoring the implementation to be closer to the latest Switch firmware in order to make it easier to import code from newer firmware.Īdditionally, he changed the implementation of fibers to use unique_ptr instead of shared_ptr, but later changed it again to use weak_ptr as it’s more appropriate in this use case.įibers are similar to threads, except they can’t be executed in parallel. This PR fixed the bug by preventing the wall-clock from overflowing, and now things are back to working as intended.īunnei also continues on his campaign to rewrite the kernel and its codebase. However, there was a bug introduced with these optimizations, and the timing math would result in an integer overflow. Previously, these calculations would use 128-bit math for high precision, which can be quite expensive on the processor, so a few optimizations were done to perform 64-bit math instead. Merry noticed there was a small bug when pushing data into the buffer with a granularity different from 1, but since there is no use case for a granularity different from 1 in yuzu, Merry decided to remove the parameter altogether, in favor of simplifying the codebase.īunnei has been taking a look at the timing code and fixed an integer overflow in the wall-clock - a tool used to measure the passage of time in the emulator. The ring buffer implementation in yuzu was meant to be as general as possible, which is why granularity was a parameter that the programmer could modify to fit their needs. The entities inside these slots are then considered a single “unit” of information, an information granule, from which the term “granularity” stems from. It’s possible to choose a minimal size for each “slot” of the buffer in order to exploit regularities of the information stored. ![]() In this case, only one thread at a time can insert data into the buffer (the Single-Producer), and only one thread at a time can remove elements from the buffer (the Single-Consumer). SPSC stands for “Single-Producer/Single-Consumer,” and is a model that comes from the Producer-Consumer problem proposed by computer scientists to deal with the problem of proper synchronization when various simultaneous processes write and read from the same buffer. Once it’s full, no new data is added until some information has been extracted from the buffer and processed. In particular, a ring buffer is a special type of buffer where the slot next to the final one is the first slot in the buffer (so the start and the end are connected). ![]() ![]() What does this mean exactly? Let’s explain!Ī buffer is a data structure that reserves space in memory as slots to store information temporarily: for example, an audio buffer. Merry recently caught a bug in the implementation of yuzu’s SPSC ring buffer and fixed it by removing the granularity template argument. Multi-GPU systems must have all their drivers updated, even for integrated graphics that are functional but not in use. At the time of writing, the latest version is 21.2.3, but yuzu will work with drivers as old as 20.12.1. This means that updated drivers are critical now, as lacking this extension will stop yuzu from booting games while on Vulkan.ĪMD users still require to install the latest Optional driver version to get support for VK_EXT_robustness2. On the flip side, while the requirement of Vulkan 1.1 hasn’t changed, as stated in previous articles, Rodrigo made VK_EXT_robustness2 a hard requirement. Laptop users, like desktop users, should visit the GPU manufacturer’s site ( AMD, Intel, and Nvidia) instead of the laptop vendor’s site (HP, Lenovo, Asus, etc.), as it will provide compatible and up-to-date drivers. However, any previously compatible hardware reaches this requirement with its latest GPU drivers installed, even old Fermi or GCN 1.0 series products. Thanks to progress in Linux’s mesa drivers, we’ve recently modified our minimum graphics requirements. Welcome back yuz-ers, welcome to City 17 February’s progress report! This time we will talk about Vulkan performance improvements, audio changes, how to make good use of compute shaders, new input additions, and more kernel rewrites. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |