Skip to content

v0.0.5 Alpha

Compare
Choose a tag to compare
@AniLeo AniLeo released this 24 Feb 15:07
· 9928 commits to master since this release

Please note that our version increases are landmarks and not stable builds
Always download the latest build from https://rpcs3.net/download
This changelog lists the main changes made since v0.0.4, mostly (but not always) by chronological order

What's new since v0.0.4 (tl;dr):

» Removed SSSE3 dependencies! RPCS3 now works with any x64 CPU. Obviously, CPUs without SSSE3 are too slow for RPCS3;
» Ryzen 5/7 performance improvements on Windows! Added internal thread scheduler for Ryzen as Windows' scheduler for Ryzen CPUs is faulty (Linux was already working properly!);
» Native user interface! You no longer need to reach your keyboard for GUI actions (excluding on-screen-keyboard actions which are not implemented yet) when playing with a controller;
» Huge Input Improvements! Greatly improved customization of all input options (XInput, MMJoy, DualShock 4, evdev);
» Multiple Input Profiles! You no longer need to change input settings every time you change to a game that requires a different layout;
» Huge Compatibility and Performance Improvements!
» Tons of awaited games finally started working!
» More AVX-512 Support! Added AVX-512 code-paths to ASMJIT Recompiler. Also added more AVX2 code-paths.
» More XOP Support! Added XOP code-paths to ASMJIT Recompiler.
» Game List Compatibility column! Database is now included on download for Windows builds, you can now easily see the status for your games (Linux users can easily download the database!);
» Removed PSP2 (PS Vita) code. A dedicated PS Vita project has emerged, therefore we chose to abandon the idea of PSP2 emulation inside RPCS3 and focus solely on PS3. If you're interested on PSVita emulation, visit Vita3K. Maybe one day when RPCS3 is very matured, PSP2 (PS Vita) emulation comes back, who knows.
» Uniformized version counter! No more confusions! RPCS3 now uses commit count everywhere instead of using TravisCI and AppVeyor individual build counters on file names. Build strings for Windows and AppImage binaries are now the same.
» And TONS of Bugfixes as always!
 

Index

» Core
» PPU
» SPU
» RSX
» Audio
» Native UI (RSX Overlay)
» Trophies
» Firmware (HLE)
» Network
» Input
» GUI
» Windows
» Linux + BSD
» Linux
» BSD
» Misc

 

Changelog

Core

– Optimized CPUID checks;
– Fixed fs::dir with constant begin/end;
– Fixed cond_variable timeout;
– Fixed "Exit RPCS3 when process finishes" command line crash;
– Improved Restart function – should now work correctly with game launchers;
– Added warning when corrupted PARAM.SFO is detected;
– Added installation for additional packages on game boot (INSDIR, PKGDIR, PS3_EXTRA);
– Removed /app_home/ dependency;
– Improved logging messages for multiple RPCS3 instances;
– Refactored logging mechanisms;
– Restored log compression;
– PKG installer update for DLC: Don't ask for overwriting, Limit cancellation capabilities;
– Improved check for cellSurmixer event queue (some games do not set event queue name, though key seems constant for them);
– Implemented setting for maximum threads to be used on LLVM compilation (default: All);
– CPUTranslator: Added bitcast, trunc, zext, sext;
– Added option to manage thread placement. Makes an impact on windows when using Ryzen processors, most other CPUs should be unaffected. Linux does a better job on its own so the option is not recommended on Linux;
– Handles exceptions at game list update, fixed RPCS3 not starting when corrupted PARAM.SFO is present;
– Handles exceptions at loading patch.yml file, fixed RPCS3 not starting when bad patch.yml file is present;
– Initial cpu_translator implementation;
– Returns CELL_ENOSYS on unpresented syscalls;
– Removed PSP2 (PS Vita) code;

PPU

– Use shared jit_compiler instance – fixes deregisterEHFrames error message on Linux;
– Disassembler: Added db8cyc, db10cyc, db12cyc, db16cyc opcodes;
– Remove SSSE3 dependency;
– Fixed primary stack size;
– PPU LLVM: rewrote add/sub instructions: Uses new patterns for saturation instructions, Avoids ZExt/SExt completely;
– PPU LLVM: rewrote AVG instructions;

SPU

– sys_spu_thread_group_create: If priority is between 16 and 255, make sure type is not SYS_SPU_THREAD_GROUP_TYPE_EXCLUSIVE_NON_CONTEXT;
– SPU ASMJIT: Interrupt optimizations - Pigeonhole optimize for branching pattern that is used to enable and disable interrupts used in code, this should lower amount of blocks that are compiled and avoid falling out of a block. Recompiled interrupt check in some cases to stay in block instead of falling out to dispatcher;
– MFC: Fixed support for list transfer stall bit with partial support for out of order execution - also give Sync commands a size so they are properly detected by queue checks;
– Fixed interrupt jump check, also change interrupt variable to atomic bool for ease of setting/checking;
– Interpreter/Recompiler: Implemented DFCMGT;
– SPU ASMJIT: Rewritten ROTH AVX-512 implementation;
– Fixed Size and Tag clamping;
– Allow reading of the RdSRR0 channel;
– Allow writing to the WrSSR0 channel;
– Remove SSSE3 dependency;
– SPU ASMJIT: Added AVX-512 support to ROT, ROTM, ROTMA, SHL, ROTH, ROTHM, ROTMAH, SHLH, CLZ, SHUFB, CFLTU, CUFLT, BG, NOR, ROTI, CG, NAND, CGTH, CLGTH instructions;
– SPU ASMJIT: Reordered some instructions for better throughput;
– Redesigned LVSL and LVSR instructions;
– Interpreter/Recompiler: Fixes for ROTM, ROTMA, SHL, ROTH, ROTHM, ROTMAH, SHLH, ROTQMBYBI, ROTQMBY instructions;
– SPU/MFC: Checks for sync command before doing a list transfer;
– SPU ASMJIT: Added AVX2 support to ROT, ROTM, ROTMA, SHL instructions;
– SPU ASMJIT: Added support for 16-bit shifts using AVX2 (ROTHM, ROTMAH, SHLH);
– SPU ASMJIT: Added support for XOP instruction set on ROT, ROTM, ROTMA, SHL, ROTH, ROTHM, ROTMAH, SHLH, ROTI, SELB, SHUFB instructions;
– Emit VZEROUPPER: Workaround dirty AVX high state;
– SPU ASMJIT: Rewrote ORX instruction;
– SPU ASMJIT: Minor change to ROTH instruction: Only AVX-512 path is changed (third version). This instruction is extremely rare;
– SPU ASMJIT: rewrote 128-bit shifts by bit: Six instructions changed to use xmm registers instead of gpr. ROTQBII, ROTQMBII, SHLQBII look better (shifts by imm). ROTQBI, ROTQMBI, SHLQBI changed for consistency (shifts by variable);
– Removed redundant and harming check from tag update completion type 2 condition;
– Implemented Stop Code 0x100;
– sys_spu_thread_get_exit_status: Implemented missing check, now checks CELL_ESTAT condition as well;
– Disassembler: Clamps SPU address - allows the SPU disassembler to nicely wrap around addresses instead of reporting "illegal address" on addresses outside of LS and resolves potential memory conflicts with main storage memory in the debugger;

RSX

– Optimized frame limiter;
– Improved nv406e::semaphore_release;
– Added WIP research into getting WCB (Write Color Buffers) working correctly. Should now mostly work correctly on OpenGL and correctly on Vulkan where on swizzle contexts are involved;
– Enables blitting from main memory to local (RSX) memory using hardware acceleration. A few more titles no longer need the slow WCB path for this;
– Fixed a bug where NVIDIA drivers would leak memory leak when window was minimized;
– Fixed FP (Fragment Program) to take into account data range modifiers in SRC1. Fixes negative color values getting to the tone-mapping passes in some games (e.g. Dark Souls 2);
– Do not discard depth buffer is stencil test is enabled (e.g. Vesperia);
– Enabled ZCull conditional render on Vulkan;
– Fixed D3D12 compiler crashes introduced by previous changes;
– Fixed shader cache constantly compiling new shaders in some games;
– Fixed default vertex attributes for undefined reads (e.g. Eternal Sonata, Ni no Kuni);
– Fixed OpenGL texture flickering due to broken optimization path when WCB was enabled;
– Synchronizes access to the present/graphics queue during submit. It's simpler to just use a global lock in this case since at the moment we only use one queue and contention only happens during submit. Should fix some cases of device_lost when running NVIDIA + WCB;
– Implemented depth clamp;
– Fixes for stencil surface configuration when address is contested;
– Work on depth/color address resolve when address contention happens;
– Implemented ZCull on the Vulkan render;
– Shader overlay implementation allowing all kinds of transforms and passes;
– Implemented binding color data for depth access for example using a RGBA->depth casting pass;
– Fixed face winding on OpenGL;
– Fragment program decompiler fixes for pack/unpack with optional register gathering implemented;
– Fixed potential crash in image_in when using CPU blit, or when unable to GPU scale the texture;
– Avoids unprotecting memory unless writing is almost guaranteed to be near immediate. Should lower chances of race conditions on sections leading to corruption, but this is not a final fix. Should greatly reduce chances of encountering;
– Fix for framebuffer setup: Ignore stencil flag if current depth format does not support stencil operation;
– Fixed depth clipping: Should now correctly scale/offset z for viewport, which may help in random clipping issues. tested game doesn't work on master without hacks (e.g. Vancouver 2010) but this fixes graphics display in it;
– Fixed image_in arg decoding / swizzle: Fixes x/y decoding, fixes some psl1ght blitting samples. After seeing countless weird values games seem to give for swizzle size, it seems the RSX just ignores the values, fixes cpu blit in age of booty;
– Fixed invalid framebuffer crash and shader compile on D3D12;
– Updated Vulkan dependencies: solves an issue where broken Windows drivers wouldn't register the ICD key and break the only detection method present on older Vulkan versions;
– Added detection for Vulkan Xlib/Wayland surface support at runtime (Linux/BSD);
– Several (many!) texture caches fixes;
– Remove SSSE3 dependency;
– Track last working state and reset to it if RSX starts to desync. This is especially useful when running Vulkan since the renderer will easily outpace the rest of the system when merely recording draw commands;
– Ignore empty index buffer sets. Mark empty/invalid IB sets as having 0 element counts;
– Implement deferred swizzle remaps for twice-remapped resources;
– Fix blit engine operations on RGB565;
– Add a timeout on nv406e::semaphore_acquire. Requires further investigation to why some semaphore addresses always lock up;
– Fix WCB causing hanging due to incorrect memory range approximation
– Properly synchronize FIFO ctrl updates. Can improve stability in some cases. The issue still happens if the SPUs lag too far behind RSX;
– Implement variable point size;
– Implement FP instructions BEM, TEXBEM, TXPBEM (untested, rarely used);
– Fix for LG2 FP instruction processing invalid values;
– Framebuffer setup fixes to avoid lost draw calls;
– Code style fixes;
– Fixed alphakill;
– Fixed color swizzle ordering for new blit destination surfaces;
– Tweak to RSX hang detection;
– Tweaks to sampler fallback paths for Vulkan;
– Fixed regression with texture format G8B8;
– Fixed typo in emulated primitive restart, fixing graphics with some AMD cards;
– Fixed emulator hang that could happen when RSX thread crashes/throws/exits, making sure the event queue is cleared and disabled and the VBlank thread is shut down;
– Added setting to disable shader preloading, useful for debugging/testing purposes;
– Added setting to force FIFO present mode option (workaround for recent MESA drivers);
– Added setting to force Force primitive restart flag (should also work on MESA drivers);
– Vulkan: Flush command queue on access violation event before attempting to touch texture cache in the event of access violations. This makes the device internal state consistent before texture operations. Fixes VK_ERROR_DEVICE_LOST in some cases when WCB is in use;
– Fixed Z clipping using selective Z clamping;
– Texture cache (blit engine) fix – Remove a conditional guess that has been properly reverse-engineered (it has been proven that in offsets are in x16 fixed point);
– OpenGL: Use correct target for type when creating new textures. They are not always 2D;
– OpenGL: Track stale cache entries for deleted textures. Avoids invalid texture getting bound to the pipeline when WCB is enabled;
– Vulkan: Implement texture barrier for framebuffer feedback situations if strict mode is disabled. Strict mode bypasses all of this and just makes a duplicate copy which is the safest way to avoid the memory access hazard;
– RSX: Improve framebuffer setup code. If pitch is 64, check the log2 dimension bits instead to determine size;;
– Fixed B8 format render target swizzling;
– Partial fix for extended clamp range draws; Try to preserve z information for draws outside the [0,1] range if the clip extents allow it. Range compression for [0,1] draws is disabled as it interferes with regular draw ops in a negative way, so this workaround will result in Z fighting on the near and far plane when extended range is used;
– Implemented decoding a shuffle flag in the low bits of the texture remap vector. Seems to affect only some formats;
– Texture format fixes: now rpcs3 almost passes all the texture formats test from autotests;
– Removes a workaround in texture cache as it seems to not be required with texture formats fixed. There are almost no test cases for this but I expect no regressions;
– OpenGL performance optimizations: Treats entire attribute buffer as a fixed heap addressed with index offsets instead of the "sliding window" approach that incurred overhead setting up the texture buffers. This was very expensive on NVIDIA drivers leading to very poor OpenGL performance on NVIDIA cards;
– Minor fixes for overlays: Do not assume swap queue is in a well defined state since a flip can be requested externally. Also avoids processing unsupported glyphs in font handlers;
– Implements swap control on Linux when using OpenGL;
– Fixed the epsilon value that was replaced with decimal to fix NVIDIA issues back to the old value. It has to be very very small, 1.E-5 is not small enough, but 1.E-10 works well enough;
– Fixed a race condition during startup using qt dialogs;
– Clean up shaders by removing as much clutter as possible and only compiling subroutines actually used by the program. Makes decompiled SPIR-V easier to read and should hopefully mean less work for the drivers as well.
– Reuse sampler objects (Vulkan) to avoid too many create/delete cycles. Wont do much for performance but its the right thing to do and it makes debugging alot easier;
– Removes subpass dependencies on Vulkan. They have a very high cost on AMD GPUs especially older GCN1 and maybe GCN2 cards and can easily drop throughput by 80%+ (Tested on R9 270x);
– Framebuffer setup improvements: Improves fast paths in framebuffer setup code and allows resource reuse when using OpenGL instead of constantly recreating new resources and binding;
– OpenGL: Do not rely on OpenGL null texture; instead, provide our own black null texture to make reads from non-existent textures return (0, 0, 0, 1);
– Implemented FBO flush-always when WCB is enabled. This is for games that read back the currently bound render target. Fixes some missing graphics in some games especially when using the blit debugger (force_cpu_blit);
– Vulkan API compliance fixes;
– Synchronize blit engine resources with cell to avoid data loss. A typical scenario would be where an image is rendered on RSX pixel pipeline to render target A which is copied to location B using blit engine. Cell then reads back the pixels at B to do some image processing on SPU and re-uploads the data from another location C. Without synchronizing reads and writes, data at B would not exist from Cell's point of view. Fixes some problems in some games like Journey.
– Vulkan: Minor memory management fixes. Avoids running out of memory during a draw call;
– FP: Explicitly gather or discard writes to output if none is defined. While the GL spec makes this work correctly, undefined output in SPIR-V updated the render target with blue pixels;
– texture cache: Fixed component ordering on depth surfaces – all components should always read R (e.g. solves TOCS/TOCS2 blur issue);
– Fixed a bug in multidraw implementation and range splitting of disjoint draw calls (e.g. solves flickering in R&C games);
– Improved workaround for AMD Vulkan driver where u16 index buffers would mistakenly break primitive restart due to fetching of the restart index T(-1), likely due to broken type identification;
– General minor optimizations all round;
– Optimize texture readback performance by tracking flushable targets and performing transfers ahead of time;
– Implemented base swapchain type to remove dependency on WSI providers being present. This is the case when attempting to run Vulkan from a secondary GPU whilst the primary GPU is an NVIDIA one on Linux. Two additional display providers other than the WSI one are also provided, one for WIN32 and another for X11 to cover the common cases. This allows use of a secondary GPU on Linux which was a big problem for graphics development on Linux. Note that while mesa drivers can present data from secondary GPUs, proprietary drivers do not, and often times the user will have the NVIDIA GPU as primary to avoid problems with X. Overhead of using the native software fallbacks is currently about 4ms at 720p, 7ms at 1080p (~250FPS max at 720p, ~125FPS max at 1080p). While this change in itself may not mean much to most users, the possibilities with display out are now infinite. Additional swapchain providers can be added to do cool things like writing images to file, injecting custom postfx, encoding image output to video and streaming over a network, etc, etc;

Audio

– Fixes for ALSA backend, improved performance;
– ALSA: Added Start Threshold parameter;

Native UI (RSX Overlay)

– Implemented core for native user interface support in rpcs3;
– Implemented save dialog with native UI;
– Implemented message dialog and progress dialog;
– Implemented trophy popup;
– Implemented shader compiling notification;
– Properly handle failed initialization and fallback paths;
– Properly handle TTF search and loading as well as fallback paths;
– Fixed native UI save_dialog when there are no saves;
– Properly handle disconnected pads on overlay;
– Added fallback path in dev_flash for glyphs and prevents Vulkan from freezing if icons are non-existent;

Trophies

– Fixed a bug on trophy manager which would hide some games;
– Returns correct disk space requirements;
– Check both bdvd and hdd locations;
– Fixed trophy initialization for Game Data (game patch);
– sceNpTrophyGetRequiredDiskSpace: Take VFS into account for trophy directory;

Firmware (HLE)

– Implements _sys_prx_load_module_by_fd, _sys_prx_load_module_on_memcontainer_by_fd;
– cellSaveData: Bugfixes;
– cellSaveData: Implemented Savedata delete operation;
– Fixed an issue with cellMsgDialog;
– Fixed an issue with exitspawn (autoexit option);
– Fixed sys_fs_open on MSELF files: previously it would move the file pointer, but not reset it;
– sys_usbd: Initial work on syscalls;
– sys_memory: Lower maximum size for memory block to fake OS size – Reports available memory minus another fake block that can be used for the OS;
– cellMsgDialog: Added SetMsg() for changing main text;
– cellGame: Don't write empty TITLE_IDs in PARAM.SFO;
– cellVDec/cellVPost: Avoids recreating SwsContext every frame;
– cellSaveData: Avoids passing vm memory to fs::file;
– cellPadSetPortSetting: Don't skip setting port settings when no controller is connected;
– cellPad: Fixed port status query -> disconnected devices don't cripple following devices by decreased now_connect;
– cellPad: Initialize devices as disconnected;
– cellGameDataCheckCreate2: Fixed PARAM.SFO;
– Implemented psf::assign;
– cellGameSetParamString: Potential fix;
– cellGameBootCheck: Experimental fix, assuming dirName is read-only;
– cellSysutil: Registered _ZN8cxmlutil7SetFileERKN4cxml7ElementEPKcRKNS0_4FileE, _ZN4cxml8Document5WriteEPFiPKvjPvES3_ and _ZN4cxml8Document12RegisterFileEPKvjPNS_4FileE functions;
– cellWebBrowser/sceNpSns: Stubbed some functions;
– cellGame: Stubbed cellHddGameSetSystemVer, cellGameDataSetSystemVer;
– cellSearch: Overhauled previous stub implementation, notable improvements;
– cellGame: Fixed a bug in cellHddGameCheck and cellGameBootCheck that caused memory access violations;
– cellUserInfo: Fixed a bug that caused memory access violations in cellUserInfoGetStat;
– sys_fs_unlink: Return CELL_ENOENT if path is an empty string;
– sys_fs_stat: Return CELL_EFAULT when path variable is not defined;
– cellGame: Better stub cellGameUpdateCheckStartAsync, cellGameUpdateCheckFinishAsync
– cellRec: Improved stubbed implementation by adding its respective callbacks;
– cellVideoExport: Improved stubbed implementation by adding its respective callbacks;
– cellVideoUpload: Improved stubbed implementation by adding its respective callbacks;
– cellPhotoExport: Improved stubbed implementation by adding its respective callbacks;
– cellMusic: Improved stubbed implementation by adding its respective callbacks;
– cellMsgDialog: Fixed a null pointer dereference;
– sys_gpio: Implemented sys_gpio_get and sys_gpio_set syscalls;
– sceNpMatcingInt: Registers module and the following functions: sceNpMatchingGetRoomMemberList, sceNpMatchingJoinRoomGUI, sceNpMatchingGetRoomListGUI, sceNpMatchingSendRoomMessage;
– sys_fs: Implemented 01000000 flag (found only in Rockband games);
– sys_libc_: Implemented _sys_qsort;

Network

– Stubs SOCK_DGRAM_P2P to handle some regressions caused by the Network overhaul;
– Added support for unspec sockets (YouTube app);
– Forces AF_INET (Youtube app);
– Fixed lv2_socket id_base;

Input

– Overhauled pad_settings dialog;
– Added a simple timer and only saves to configuration upon pressing the save button;
– XInput: Added full remapping, rumble settings, deadzones;
– DualShock4: Added remapping;
– Evdev: Added remapping, deadzones;
– MMJoy: Added remapping, deadzones;
– MMJoy: Improved multi controller support;
– MMJoy: Prioritizes button presses due to constant axis events;
– Added fallback in FindKeyCode to prevent crashes on incompatible config;
– Implemented blacklist to filter noise in pad dialog;
– MMJoy: Handle Axis and POV capabilities;
– MMJoy: Handle MMJoy reconnection;
– Fixed filter button for evdev and DualShock 4;
– Improved evdev and MMJoy stick input;
– DualShock 4: Fixed led for ds4 when connected by bluetooth;
– DualShock 4: Fixed a regression on initial DS4 connection;
– Fixed regression on numpad keys;
– Evdev: Added positive axis list yml to handle 0+ range sticks;
– MMJoy: Improved settings dialog, changed threshold behavior;
– Evdev: Improve MMJOY settings dialog / change threshold behavior;
– Evdev: Misc fixes, fixed directions, sticks and first rumble implementation;
– Implemented mouse button mapping, improved keyboard;
– Fixed connection count;
– Improved cellKB keyreleases and autorepeat;
– Enabled XInput configs with disconnected devices;
– Implemented Input Profiles;

GUI

– Implemented new progress_dialog for installations;
– Redesigned settings dialog to use an horizontal layout, solves some small screen issues;
– Uses global AppIcon instead of setting it in every Dialog;
– Moved Disable Vertex Cache option back to the GPU tab;
– Show total number of LLVM objects that are to be compiled on LLVM compilation dialogs;
– Fixed compatibility column sorting;
– Fixed Register Editor;
– Fixed CurrentSelectionIconPath();
– Fixed deadzone preview size on high dpi;
– Fixed GameList icon backgrounds on existing themes;
– Handles zero-width columns in game list;
– Implemented simple find dialog for logs;
– Use Qt for error reports;
– Fixed icon size actions;
– New themes: Darker Style and ModernBlue by TheMitoSan;
– Added commit hash to the game panel with non master builds;
– Removed obsolete and faulty m_icon_color. RepaintGui does it already;
– Updated compatibility colors to match the new ones from the website;
– Game list: Improved deduplication logic;
– Updated Qt to version 5.10.1 (also updated AppVeyor and Travis to use 5.10);
– Fixed gs_frame spawning on monitor other than the one the main window is on. Now spawns the GSFrame on top of the RPCS3 main window;
– Fixed scrolling in Game Grid;
– Improved VFS (virtual filesystem) dialog;

Windows

– File: Clamps utime range;
– Readme: Updated build instructions to include prebuilt library binaries downloads;
– Fixed free space check;
– Added sha256 hashing of builds for checksum purposes;
– Added a separate OpenSSL artifact containing the required libs to make compatibility database fetching work. These binaries are distributed by AppVeyor as part of the build environment. Users can be directed to download and extract the binaries to their local rpcs3 directory (e.g. in the quickstart guide). A warning can also be included regarding legal issues pertaining to using OpenSSL, if any;
– Package artifacts using 7z format, reduces rpcs3 artifact size from ~20MB to ~14MB;
– Compat database is fetched and packaged after the build has finished. Failed DB downloads are (hopefully) accounted for by adding some basic fault tolerance using powershell + AppVeyor caching;
– Changes Windows master builds artifact version format to: rpcs3-{tag}-{commit_count}-{commit_hash}_win64.7z;
– Changes Windows pull request artifact version format to: rpcs3-{tag}-{commit_hash}_win64.7z;

Linux + BSD:

– Installs GUI Themes to /usr/share/rpcs3 and icons to Icons in executable directory and loads them from there;
– Fixed a bug on fs::dir::open, now returns false on failed metadata instead of crashing;
– Added support for Vulkan on Wayland;

Linux

– Implemented set_ideal_processor_core;
– Readme: Updated Fedora instructions with required packages;
– Readme: Added libpulse-dev;
– Readme: Added OpenSUSE instructions;
– Workaround for NVIDIA Linux bug: For some reason, using 1.E-x notation does not work on NVIDIA Linux. Could be a bug in SPIR-V generator or the driver itself;
– Fixed commit count on AppImage (TravisCI) builds by unshallowing git clone;
– Implemented fs::unshare;
– AppImage: Now compiling with Clang 5.0 instead of Clang 4.0;
– AppImage: Removes libfreetype.so.6, fixes AppImages for some users;
– Added an easy way for package builders to disable native cpu optimizations (-march=native);
– Changes Linux master builds appimage version format to: rpcs3-{tag}-{commit_count}-{commit_hash}_linux64.AppImage, in sync with the Windows builds;

BSD

– Fixed set_ideal_processor_core on several BSD distributions;
– Fixed a bug with LLVM JIT on FreeBSD;
– Uses glslang, HLSL, OGLCompiler, SPIRV, OSDependent system libraries when building;

Misc

– Fixed command line arguments passed to rpcs3;
– Added libswscale CMake detection as the component is mandatory to build the project;
– Removed libswresample as the component was not used to build the project;
– Simplified ALSA, GLEW, Qt, ZLIB detection/integration in CMake;
– Cleaned up rpcs3/CMakeLists.txt;
– Fixed log size limitations;
– Implemented set_ideal_processor_core for MacOS;
– Bump CMake requirement to 3.1.0+;
– Fixed debug without LLVM build;
– Use depth:false instead of depth:bigNumber for unshallowed clone on TravisCI;
– Silenced some build warnings;
– Removes GIT_VERSION's incorrect commit count on non-master Pull Request builds – make GIT_VERSION only be the Commit ID in those cases (e.g: 0.0.4-abcdefgh instead of 0.0.4-3-abcdefgh);
– Replaced make by Ninja build system on Travis;
– Pass missing arguments to _sys_process_exit logging function;
– Map and update pugixml with the upstream repository instead of the one from RPCS3;
– Log sys_fs_utime values;
– Bump last PS3 firmware version indicator from 4.81 to 4.82;
– Travis: Updated URLs to retrieve glew and Vulkan deb packages;
– Updated OpenAL externals to 1.18.2;
– Updated GL header to 20180114;
– Remove ps3emu_api unused files that were really never used for anything;
– Update LLVM submodule URL (to rpcs3/llvm);
– Added ignore=dirty to hidapi submodule;
– AppVeyor: Various formatting and changes to the file structure (mainly cmd -> powershell for better readability);
– Updated versioning: rpcs3 latest release tag is now fetched using git describe, no need to manually update appveyor.yaml for each release or milestone;
– Added vscode and kdevelop files to gitignore;
– Fixed quoting in CMake files, solved an issue with packaging for NixOS;