Commit graph

189 commits

Author SHA1 Message Date
scribam
824ad4fea7 cmake: simplify glslang integration (#4652)
* cmake: simplify glslang integration

* Fix warning (ignored attributes), part 2
2018-06-06 15:45:28 +03:00
Zion Nimchuk
ea1bb3b90e Convert all spaces to tabs in CMakeLists.txt 2018-06-04 17:00:44 +04:00
Zion Nimchuk
4d3b60cf46 Unify Linux detection in CMake 2018-06-04 17:00:44 +04:00
pauls-gh
f8a0be8c3e Performance enhancement - Vulkan memory allocator (#4635)
* Incorporates the vulkan memory allocator from the AMD GPUOpen project
2018-05-23 17:02:35 +03:00
scribam
2270b8d15c vulkan: link with vulkan-1.lib instead of VKstatic.1.lib 2018-05-23 13:54:27 +03:00
scribam
6c5c89a4a3 3rdparty: remove Vulkan/Vulkan-LoaderAndValidationLayers 2018-05-19 10:59:10 +03:00
scribam
8f975e2329 cmake: improve pthread inclusion 2018-05-17 18:42:44 +04:00
scribam
3dfe46fc42 cmake: use -Wno-unused-command-line-argument only with clang (gcc doesn't have this option) 2018-05-17 18:42:44 +04:00
scribam
580c8b8803 cmake: remove leftover from #4329 about X11 2018-05-17 18:42:44 +04:00
Florent Castelli
253248349f Link against the top-level LLVM targets only
Dependencies are still linked through usage requirements.
2018-05-16 23:35:53 +01:00
Florent Castelli
afd55da8cb Add EXCLUDE_FROM_ALL to add_subdirectory calls 2018-05-16 23:35:53 +01:00
Zion Nimchuk
705525510e re-enable LLVM for travis and build AppImages with LLVM 6 2018-05-17 00:01:53 +04:00
Nekotekina
367f039523 Build transactions at runtime
Drop _xbegin family intrinsics due to bad codegen
Implemented `notifier` class, replacing vm::notify
Minor optimization: detach transactions from global mutex on TSX path
Minor optimization: don't acquire vm::passive_lock on PPU on TSX path
2018-05-16 17:31:58 +03:00
Jan Beich
2cfb2428d2 build/cmake: pass -DNDEBUG by default like msvc
Downstream may override CMAKE_CXX_FLAGS_RELEASE in order to enforce
consistent optimization flags for every package. If -DNDEBUG is lost
RPCS3 may run slower and fall victim to assertions in bundled libs.
2018-05-14 16:01:19 +01:00
Megamouse
84a4671a0e Qt: Use additional windows resource file for qt.conf
fixup for a39384cadd
2018-05-13 21:02:21 +04:00
Megamouse
a39384cadd Qt: Create qt/plugins dir to tidy up our Visual Studio builds
see folders: bearer, imageformats, styles and platforms.
This will stay compatible with the old builds too, unless someone wisely put their plugin folders into a 'plugin' subdirectory
2018-05-13 18:39:24 +04:00
Jake
75b40931fc rsx: initial capture/replay functionality (#4510)
* rsx: initial capture/replay functionality
2018-05-13 12:18:05 +03:00
Nekotekina
a975ecdc4f Use LLVM 6 2018-05-08 13:05:29 +03:00
Zion Nimchuk
3b24e7e685 Discord Rich Presence Integration (Thanks to @Megamouse for fixing the windows build) 2018-04-19 04:47:56 +04:00
Zion Nimchuk
78bb9a7278 Add appstream metadata for linux 2018-04-14 01:10:12 +04:00
Zion Nimchuk
b0352d6ef7 Silence some annoying terminal output 2018-04-03 03:17:52 +04:00
Ani
7359774c76 qt: Do not deploy Qt5Quick
We're using Qt5Qml but not Qt5Quick, therefore the extra extension can be removed
2018-03-31 02:54:59 +01:00
scribam
50446f7fef Partial compilation fixes for osx 2018-03-24 11:14:40 +00:00
scribam
af89b62194 Check if the compiler supports "-march=native" 2018-03-21 14:11:05 +03:00
scribam
526228442b Use "USE_NATIVE_INSTRUCTIONS" variable instead of a specific "TRAVIS" variable 2018-03-21 14:11:05 +03:00
TGEnigma
cb9e6e75db Debugger improvements (#4026)
* Improve debugger
 * Added 'Step Over' functionality
 * Added special SPU pause functionality that pauses the SPU thread when the tag mask is at 0x80000000 by holding ctrl while pausing
  * Go to address dialog now evaluates expressions, including defined variables such as pc, r1, r2, etc
    * Requires QtScript to be linked with the project
  * Made the option to center shown addresses (Go to addr/pc) optional by making it an entry in the GUI ini config
  * Shown addresses now appear 'selected'
  * New keyboard shortcuts!
    - Ctrl+G -> Go to address
    - F10 -> Step Over
    - F11 -> Step (Into)
2018-03-13 16:23:12 +04:00
Megamouse
5266dd6c60 Update for Qt 5.10 (#4202)
* Update Readme for Qt 5.10

* Update cmake for Qt 5.10

* Update travis to Qt 5.10.1
2018-02-23 02:08:14 +04:00
kd-11
77f2b521e1 vulkan: Swapchains reimplemented
- Adds support for abstract implementations
- Adds native windowing implementations for WIN32 and X11 as fallbacks
  when present support is lacking (headless configs)
2018-02-21 14:59:46 +03:00
Zion Nimchuk
77b8f3a0f9 Add an easy way for package builders to disable native cpu optimizations 2018-02-19 17:30:24 +04:00
Zion Nimchuk
70fe0cc224 Install and load icons from Icons in executable directory, fixes local builds using Icons 2018-01-31 01:01:33 +04:00
Zion Nimchuk
49e64b9e82 install icons to /usr/share and load them from there 2018-01-19 12:44:01 +03:00
Greg V
fbceec47b8 Add support for Vulkan on Wayland
The variable VK_USE_PLATFORM_WAYLAND_KHR is actually used by the Vulkan
header, so use it here too.
2018-01-11 12:26:41 +03:00
Nekotekina
a285409f59 Fix travis 2017-12-21 00:40:28 +03:00
Nekotekina
83da7f9b63 PPU: remove SSSE3 dependency 2017-12-20 01:21:15 +03:00
Unknown
03814e8d02 Qt: implement compatibility column 2017-12-05 16:53:14 +04:00
scribam
8901cc9ae6 Update Qt to 5.9.3 2017-11-28 15:22:47 +04:00
scribam
5f07f78c23 CMake minor improvements (#3783)
* cmake: simplify GLEW integration

* cmake: simplify ZLIB integration

* cmake: simplify ALSA detection

* cmake: check C++ compiler and flags instead of C ones

* cmake: bring consistency in Qt packages detection and remove unnecessary related "include_directories"

* cmake: harmonize coding style

* cmake: set CMAKE_INCLUDE_CURRENT_DIR to ON only when necessary
2017-11-27 22:04:55 +04:00
scribam
78101a9e57 cmake: remove unused link to ffmpeg libswresample 2017-11-25 14:07:11 +00:00
Jan Beich
dd5791a2cc Fixes from FreeBSD package (#3765)
* Thread: unbreak on BSDs after dbc9bdfe02

Utilities/Thread.cpp:1920:2: error: unknown type name 'cpu_set_t'; did you mean 'cpusetid_t'?
        cpu_set_t cs;
        ^~~~~~~~~
        cpusetid_t
/usr/include/sys/types.h:84:22: note: 'cpusetid_t' declared here
typedef __cpusetid_t    cpusetid_t;
                        ^
Utilities/Thread.cpp:1921:2: error: use of undeclared identifier 'CPU_ZERO'
        CPU_ZERO(&cs);
        ^
Utilities/Thread.cpp:1922:2: error: use of undeclared identifier 'CPU_SET'
        CPU_SET(core, &cs);
        ^
Utilities/Thread.cpp:1923:48: error: unknown type name 'cpu_set_t'; did you mean 'cpusetid_t'?
        pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cs);
                                                      ^~~~~~~~~
                                                      cpusetid_t

* JIT: use MAP_32BIT on Linux and FreeBSD

Unless RLIMIT_DATA is low enough FreeBSD by default reserves lower 2Gb
for brk(2) style heap, ignoring mmap(2) address hint requested by RPCS3.
Passing MAP_32BIT fixes the following crash

Assertion failed: ((Type == ELF::R_X86_64_32 && (Value <= UINT32_MAX)) || (Type == ELF::R_X86_64_32S && ((int64_t)Value <= INT32_MAX && (int64_t)Value >= INT32_MIN))), function resolveX86_64Relocation, file /usr/ports/devel/llvm40/work/llvm-4.0.1.src/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp, line 287.

* build: unbreak -DVULKAN_PREBUILT with system glslang on Unix

rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp:4:10: fatal error: '../../../../Vulkan/glslang/SPIRV/GlslangToSpv.h' file not found
 #include "../../../../Vulkan/glslang/SPIRV/GlslangToSpv.h"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

rpcs3/CMakeFiles/rpcs3.dir/Emu/RSX/VK/VKCommonDecompiler.cpp.o: In function `vk::compile_glsl_to_spv(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, glsl::program_domain, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >&)':
rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp:(.text+0x50e): undefined reference to `glslang::TProgram::TProgram()'
rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp:(.text+0x51d): undefined reference to `glslang::TShader::TShader(EShLanguage)'
rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp:(.text+0x542): undefined reference to `glslang::TShader::setStrings(char const* const*, int)'
rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp:(.text+0x581): undefined reference to `glslang::TShader::parse(TBuiltInResource const*, int, EProfile, bool, bool, EShMessages, glslang::TShader::Includer&)'
rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp:(.text+0x5d6): undefined reference to `glslang::TProgram::link(EShMessages)'
rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp:(.text+0x5f1): undefined reference to `glslang::GlslangToSpv(glslang::TIntermediate const&, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >&, glslang::SpvOptions*)'
rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp:(.text+0x5ff): undefined reference to `glslang::TShader::getInfoLog()'
rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp:(.text+0x61a): undefined reference to `glslang::TShader::getInfoDebugLog()'
rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp:(.text+0x630): undefined reference to `glslang::TShader::~TShader()'
rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp:(.text+0x63c): undefined reference to `glslang::TProgram::~TProgram()'
rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp:(.text+0x6d2): undefined reference to `glslang::TShader::~TShader()'
rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp:(.text+0x6de): undefined reference to `glslang::TProgram::~TProgram()'
rpcs3/CMakeFiles/rpcs3.dir/Emu/RSX/VK/VKCommonDecompiler.cpp.o: In function `vk::initialize_compiler_context()':
rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp:(.text+0x6f5): undefined reference to `glslang::InitializeProcess()'
rpcs3/CMakeFiles/rpcs3.dir/Emu/RSX/VK/VKCommonDecompiler.cpp.o: In function `vk::finalize_compiler_context()':
rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp:(.text+0x856): undefined reference to `glslang::FinalizeProcess()'

* build/msvc: add missing glslang include directory after 6bb3f1b4d7

"c:\projects\rpcs3\rpcs3\VKGSRender.vcxproj" (default target) (15) ->
(ClCompile target) ->
  Emu\RSX\VK\VKCommonDecompiler.cpp(4): fatal error C1083: Cannot open include file: 'SPIRV/GlslangToSpv.h': No such file or directory [c:\projects\rpcs3\rpcs3\VKGSRender.vcxproj]
2017-11-21 01:56:25 +04:00
scribam
223f17ac7e Bump CMake requirement 2017-11-16 01:41:51 +04:00
scribam
db5c2500c2 Update PPA urls to the latest version of Qt 2017-10-31 09:29:12 +00:00
kd-11
a11d66f52d update vulkan submodules (#3600) 2017-10-15 14:37:52 +03:00
Henrique Jung
76b7103fed [CMake] Build LLVM from the submodule if there's no suitable version
When RPCS3 is compiled with LLVM (default option), CMake only tries to
find LLVM on the default system installation. So the OS must have a
sytstem-wide installation of LLVM of at least version 4.0, which is not
available on many GNU/Linux distributions (e.g. Ubuntu 16.04, Debian
Stretch). If CMake can not find a suitable version, it silently falls
back to compile RPCS3 without LLVM.

This patch makes CMake defaults to compile the LLVM submodule if and
only if a suitable LLVM version is not found installed on the system.
Due to a build time check on LLVM, in-tree builds will not work when
building the submodule (LLVM does not allow in-source builds). For this
reason, the instruction for building on CMake were updated.
2017-10-14 14:54:10 +03:00
scribam
0129c54ab6 Move optional.hpp as a submodule 2017-10-12 18:00:24 +03:00
Zion Nimchuk
6d6b281270 Fix gentoo LLVM linking 2017-10-09 22:46:36 +01:00
Zion Nimchuk
a3c49bea2c Revert "Add option to build using llvm shared libs and document other cmake options"
This reverts commit 6f33953861.
2017-10-09 22:46:36 +01:00
scribam
425ddd13e5 [Qt] Fix repository urls to install Qt 2017-10-03 00:41:56 +03:00
Henrique Jung
daa7520d1d Deploy QT DLLs using windeployqt tool (#3432)
* Deploy QT DLLs using windeployqt tool

Replace the old mechanism that manually copy the DLLs using either CMake
or VS built-in functions. The new approach uses the windeployqt tool
provided by the QT project that automatically detect the needed DLLs and
perform the necessary copying.

This approach should be more robust if there's an upstream change on QT
project regarding DLLs usage.

* QT DLLs: do not ship RPCS3 with ANGLE and software-OpenGL

According to https://doc.qt.io/qt-5/windows-requirements.html ANGLE is
useful for applications that use OpenGL ES by removing the need to
install OpenGL drivers, redirecting OpenGL calls to DirectX instead.
RPCS does not uses OpenGL ES so it's better to just remove it from the
binary distribution.

opengl32sw.dll is a fallback mechanism when ANGLE libraries are not
available that uses a software backend for OpenGL. It's unlikely that
RPCS3 will work using software-OpenGL, so there's little point into
shipping them.

* QT DLLs: do not ship with SVG and translation files

Like the other removed QT libraries: they are not needed right now. We
can deploy them if they become useful someday.
2017-09-21 16:53:20 +03:00
myfreeweb
07af701afe Vulkan: use pkg-config instead of checking for Linux (#3440)
Makes Vulkan optional on Linux / makes it possible on FreeBSD.
2017-09-14 21:02:09 +03:00
Henrique Jung
4b9fa8ec6d CMake build: copy QT DLLs files to bin directory
AppVeyor build relies on CMake to build the VS project files, which then
is used to build RPCS3, so we must tell CMake to copy Qt DLLs files the
same way VS build does.
2017-09-10 19:25:54 +03:00