Commit Graph

43 Commits (c104e9c6983a7465f95f5ae486935ec1459fe8f3)

Author SHA1 Message Date
lat9nq 52cc25ccbf cmake: Download Qt binaries on Linux if needed
If the local version of Qt is older than the minimum version required by
yuzu, download a pre-built binary package from yuzu-emu/ext-linux-bin
and build yuzu with it, instead.

This also requires linking yuzu to the correct libraries after building
it, and copying over the required binaries when building yuzu.

This sets the Qt requirement to 5.12, which is intentionally behind the
versions used by our toolchains since they are not all updated yet to
5.15.
4 years ago
lat9nq ad55faaa35 cmake: Download Boost if inadequate local version
Building SDL2 from externals is incompatible with Conan's version of
libiconv, a requirement of Conan's Boost package. Solution is to use the
same Boost package in use by the linux-fresh container. This tells CMake
to download boost_1_75_0.tar.xz from yuzu-emu/ext-linux-bin at CMake's
configuration step, much the same way Qt and FFmpeg are downloaded for
Windows.

Also makes DownloadExternals.cmake cross-platform. Although the CMake
code is not entirely specific to Linux, only Linux has Boost libraries
available at ext-linux-bin, whereas there is no equivalent Boost package
for Windows at ext-windows-bin. caveat emptor
4 years ago
lat9nq c44ab0f8f6 cmake: Update FFmpeg to 4.3.1
Download FFmpeg package version 4.3.1. Uses a file defined within the
package to determine with DLLs to copy.

Also corrects a submodule name.
4 years ago
ameerj d6ebb5c171 cmake: Revert FFmpeg 4.3.1 update for Windows builds
The new 4.3.1 externals build seems to not be compatible with yuzu. This also fixes an oversight when renaming CMake variables.
4 years ago
Lioncash fc6db97a09 core: Remove usage of unicorn
Unicorn long-since lost most of its use, due to dynarmic gaining support
for handling most instructions. At this point any further issues
encountered should be used to make dynarmic better.

This also allows us to remove our dependency on Python.
4 years ago
ameerj eb67a45ca8 video_core: NVDEC Implementation
This commit aims to implement the NVDEC (Nvidia Decoder) functionality, with video frame decoding being handled by the FFmpeg library.

The process begins with Ioctl commands being sent to the NVDEC and VIC (Video Image Composer) emulated devices. These allocate the necessary GPU buffers for the frame data, along with providing information on the incoming video data. A Submit command then signals the GPU to process and decode the frame data.

To decode the frame, the respective codec's header must be manually composed from the information provided by NVDEC, then sent with the raw frame data to the ffmpeg library.

Currently, H264 and VP9 are supported, with VP9 having some minor artifacting issues related mainly to the reference frame composition in its uncompressed header.

Async GPU is not properly implemented at the moment.

Co-Authored-By: David <25727384+ogniK5377@users.noreply.github.com>
4 years ago
Jan Beich b1b1ed7597 cmake: stop linking against QGL after c6a0ab9792 5 years ago
ReinUsesLisp a63a0daa5e gl_arb_decompiler: Implement an assembly shader decompiler
Emit code compatible with NV_gpu_program5.
This should emit code compatible with Fermi, but it wasn't tested on
that architecture. Pascal has some issues not present on Turing GPUs.
5 years ago
lat9nq a290aac5b3 Make compatible with the current MinGW cross-compiler
The Docker image was just updated to use Arch Linux instead of Ubuntu. This PR
sets the compiler names to reflect how they are installed on the Arch Linux
Docker image. Fixes "x86_64-w64-mingw32-g++-posix is not a full path and was not found in the PATH." errors in CMake.
5 years ago
James Rowe 6ca8637d4c Use the correct directory for Qt Plugins 5 years ago
ReinUsesLisp 3dcaa84ba4 shader/transform_feedback: Add host API friendly TFB builder 5 years ago
ReinUsesLisp e8efd5a901 video_core: Rename "const buffer locker" to "registry" 5 years ago
ReinUsesLisp bd8b9bbcee gl_shader_cache: Rework shader cache and remove post-specializations
Instead of pre-specializing shaders and then post-specializing them,
drop the later and only "specialize" the shader while decoding it.
5 years ago
James Rowe b429095b61 Fix git version in scm_rev.cpp 5 years ago
Fernando Sahmkow 1a58f45d76 VideoCore: Unify const buffer accessing along engines and provide ConstBufferLocker class to shaders. 5 years ago
Fernando Sahmkow 47e4f6a52c Shader_Ir: Refactor Decompilation process and allow multiple decompilation modes. 5 years ago
Fernando Sahmkow 8be6e1c522 shader_ir: Corrections to outward movements and misc stuffs 5 years ago
ReinUsesLisp 4e35177e23 shader_ir: Implement VOTE
Implement VOTE using Nvidia's intrinsics. Documentation about these can
be found here
https://developer.nvidia.com/reading-between-threads-shader-intrinsics

Instead of using portable ARB instructions I opted to use Nvidia
intrinsics because these are the closest we have to how Tegra X1
hardware renders.

To stub VOTE on non-Nvidia drivers (including nouveau) this commit
simulates a GPU with a warp size of one, returning what is meaningful
for the instruction being emulated:

* anyThreadNV(value) -> value
* allThreadsNV(value) -> value
* allThreadsEqualNV(value) -> true

ballotARB, also known as "uint64_t(activeThreadsNV())", emits

VOTE.ANY Rd, PT, PT;

on nouveau's compiler. This doesn't match exactly to Nvidia's code

VOTE.ALL Rd, PT, PT;

Which is emulated with activeThreadsNV() by this commit. In theory this
shouldn't really matter since .ANY, .ALL and .EQ affect the predicates
(set to PT on those cases) and not the registers.
5 years ago
Fernando Sahmkow 8af6e6a052 shader_ir: Implement a new shader scanner 6 years ago
ReinUsesLisp 06c4ce8645 shader: Decode SUST and implement backing image functionality 6 years ago
ReinUsesLisp dec1cbaf7f cmake: Add missing shader hash file entries 6 years ago
fearlessTobi b67be7154d GenerateSCMRev: fix Travis compilation on repo forks 6 years ago
ReinUsesLisp 48e6f77c03 shader/decode: Split memory and texture instructions decoding 6 years ago
ReinUsesLisp dfd14618f7 cmake: Fix title bar issue 6 years ago
Michael 4ffb487251 cmake: Fixup application string
Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc>
6 years ago
ReinUsesLisp be4641c43f gl_shader_disk_cache: Invalidate shader cache changes with CMake hash 6 years ago
James Rowe 08fcf41b0a QT Frontend: Add a Loading screen with progressbar
With shader caches on the horizon, one requirement is to provide visible
feedback for the progress. The shader cache reportedly takes several
minutes to load for large caches that were invalidated, and as such we
should provide a loading screen with progress.

Adds a loading screen widget that will be shown until the first frame of
the game is swapped. This was chosen in case shader caches are not being
used, several games still take more than a few seconds to launch and
could benefit from a loading screen.
6 years ago
Zach Hilman 2378ecd0e8 build: Copy web engine resources to correct location 6 years ago
Zach Hilman 15501477e7 Update Qt MSVC external to 5.12.0 6 years ago
Zach Hilman ef4c4e239d cmake: Add USE_QT_WEB_ENGINE flag and update build system 6 years ago
tech4me 189cf0da7b Update MinGWCross.cmake to lowercase 6 years ago
tech4me a8f54f96fc travis: running mingw build on travis ci
This commit also fixed a broken cmake dependency with unicorn
6 years ago
Zach Hilman e4422b09b6 Fix missing qjpeg DLL 6 years ago
James Rowe 6ff20dc6a7 Add qt windowsvistastyle dll to the build 7 years ago
bunnei 0b831dd2ba
Revert "Use Ninja for MSVC AppVeyor builds" (#584) 7 years ago
Michał Janiszewski 5c3d5d0849 Use Ninja for MSVC AppVeyor builds 7 years ago
MerryMage e86bdb1601 Fix build on macOS and linux 7 years ago
James Rowe ebf9a784a9 Massive removal of unused modules 7 years ago
bunnei 45bdc53b8f cmake: Add CopyYuzuUnicornDeps script. 7 years ago
bunnei 095f320581 DownloadExternals: Use yuzu repo. 7 years ago
James Rowe 9e847b7549 Build: Enable SSL in mingw by linking against WinSSL
The mingw builds aren't submitting telemetry because the curl library
they are linked against is configured to use openSSL and openSSL looks
for the certificates in the users home folder. This keeps it from
contacting web services because it can't communicate over SSL.

This commit adds a download in mingw builds that will download a
precompiled curl for mingw linked against winssl and sspi.
7 years ago
freiro b7b2627b37 Modularized Qt and SDL file copying
Now cmake relies on two submodules to copy the libraries in the proper folders
8 years ago
freiro 031fc3a460 Modularization of copy_msvc_libraries cmake funct
Created a new folder in Citra's root called CMakeModules that should
contain cmake functions used by the various CMakeLists.txt.
8 years ago