Commit Graph

9249 Commits

Author SHA1 Message Date
2d27a19a45 renderer_vulkan: Apply dynamic state 2022-08-14 09:37:09 +03:00
be90677180 renderer_vulkan: Fix culling related issues
Seems the Vulkan winding order is opposite to that of OpenGL
2022-08-14 01:55:54 +03:00
6089988914 renderer_vulkan: Improve synchronization 2022-08-14 01:31:44 +03:00
91ea6931dd rasterizer: Use separate buffers for vs/fs uniforms
Vulkan validation layers complain about WaR hazards since the VS range overlaps with the FS range when the buffer is invalidated. To solve this, split them into separate buffers
2022-08-14 00:26:28 +03:00
74de70bf21 cmake: Use vcpkg configuration from master
Much better than the current setup
2022-08-13 13:17:41 +03:00
1880a4bdf4 video_core: Minor fixes 2022-08-13 08:51:53 +03:00
371beafc10 renderer_vulkan: Transition swapchain manually 2022-08-12 17:53:50 +03:00
734077642e video_core: Fix destruction sequence
Rejoice! Vulkan no longer leaks memory
2022-08-12 15:36:09 +03:00
a2ca75bff4 video_core: Fix remaining validation errors. Introduce PoolManager 2022-08-12 13:38:36 +03:00
09997b31af video_core: It compiles and kinda works 2022-08-11 20:17:38 +03:00
9200731b56 video_core: Even more fixes, close to building now 2022-08-10 19:47:40 +03:00
dade6e6797 video_core: Cleanups and fixes 2022-08-10 17:38:56 +03:00
c5f08a1408 video_core: Make renderer common
* Also rename to DisplayRenderer
2022-08-10 15:36:21 +03:00
67c20e04b4 shader_disk_cache: Remove precompiled cache
* Serves little purpose at this point and complicates things. Maybe readd later?
2022-08-10 00:04:03 +03:00
609e32e317 rasterizer: Use std::ranges::transform everywhere 2022-08-09 20:34:47 +03:00
2397c82b85 video_core: Commonise rasterizer class
* Also added some comments providing some details about attribute loaders
2022-08-09 18:56:14 +03:00
1ded25f68b video_core: Initial port of shader cache
* Need to add backend specific loading
2022-08-09 01:31:35 +03:00
39ca721cac rasterizer_cache: Return a framebuffer handle from GetFramebufferSurfaces 2022-08-08 14:48:55 +03:00
2d4f762db1 video_core: Commonise rasterizer cache 2022-08-08 14:24:47 +03:00
810df95b81 video_core: Rewrite to backend system
* Still doesn't build this is just a massive code dump from all the recent progress
2022-08-08 00:00:52 +03:00
ff9b0dfe2f global: Fix some warnings 2022-07-21 10:17:34 +03:00
d51c720392 arm_exclusive_monitor: Properly qualify friend class
* Otherwise we get compile errors on compilers that are not MSVC
2022-07-21 00:20:36 +03:00
2d8aded953 CMakeLists: Make SDL2 compilation conditional
* vcpkg fails to compile SDL2 on MinGW, so better fetch the package from the environment first
2022-07-20 23:58:45 +03:00
8feafd2ac5 common: Include algorithm in log.h
* Good job MSVC for giving the worst and most cryptic error message
2022-07-20 21:22:57 +03:00
94696de2b2 vcpkg: Bootstrap before installing packages 2022-07-19 16:23:18 +03:00
371387b44f externals: Remove unused submodules 2022-07-17 11:59:00 +03:00
d8d14491dd cmake: Bump minimum required CMake version 2022-07-17 10:03:42 +03:00
6b890987c4 vcpkg: Rework dependency installation
* Manifest mode is very convient but doesn't provide the flexibility we
  need. The main issue is that there is no way to conditionally install
  libraries. To bypass this we can invoke vcpkg directly using a helper
  function vcpkg_add_package that installs the library when invoked.
2022-07-17 09:41:41 +03:00
5338e2e3a3 vcpkg: Force static linkage on windows 2022-07-16 19:52:40 +03:00
6b8931c899 cmake: Bump Qt to 5.12.12 LTS 2022-07-16 18:59:46 +03:00
5cad914b73 vcpkg: Fine tune required ffmpeg dependecies 2022-07-16 16:35:46 +03:00
d865780291 vcpkg: Dont't build Qt from source
* Currently vcpkg has no mechanism of consistently handling prebuilt
  libraries. This means that large libraries like Qt need special
  treatment
2022-07-16 16:32:51 +03:00
60f0269569 core: Replace boost::optional with std::optional 2022-07-16 15:10:22 +03:00
ceadee0358 renderer_vulkan: Fix swapchain creation on Win32 2022-07-15 21:34:36 +03:00
a9b96789d7 Core: Port Exclusive memory impl from yuzu 2022-07-15 20:14:15 +03:00
79379f21a4 Common: Add CPU feature detection for ARM64 2022-07-15 20:13:27 +03:00
0e98fb3780 dynarmic: Update dynarmic to upstream
* Citra's fork of dynarmic is getting old quite fast and accumulating
  technical debt which gets harder and harder to account for as time
  goes on. So to have the access to the latest and greatest features we
  need to use the upstream version which yuzu also uses. This requires
  some extra patches which are contained in the following commits.
2022-07-15 20:06:51 +03:00
d373d74804 vk_shader_gen: Switch shader compiler to glslang
* shaderc is notoriously hard to link to and often causes link errors.
  glslang seems to work better and is a smaller library overall so
  that's a win for the backend.
2022-07-15 19:02:41 +03:00
a9436e01ca tests: Update test suite for Catch2 3.0.1 2022-07-15 17:17:18 +03:00
e7a6af73c1 renderer_vulkan: Fix type in Win32 surface creation 2022-07-15 16:43:54 +03:00
9850c23a03 cmake: Adjust link libraries to vcpkg produced targets 2022-07-15 16:43:51 +03:00
55e5c4edc9 logging: adapt to changes in fmt 8.1 2022-07-15 16:10:12 +03:00
f990a842da vcpkg: Enable all glad extensions 2022-07-15 08:48:30 +03:00
b5e4ec35e3 Introduce vcpkg for dependency management
* Manually including libraries into the project while a perfectly acceptable solution
  leads to slow updates and large maintainance costs. To address this
  shortcoming we are introducing a package manager namely vcpkg into the
  codebase to handle the download and build of most external dependencies. Conan
  was also considered but vcpkg was chosen due to the centralized nature
  of the project. To achieve the integration the CMake configuration has
  been altered but not by much:

  1. Packages handled by vcpkg have been moved from
     externals/CMakeLists.txt to the root one to make them available to
     all subdirectories.

  2. In addition now find_package is used in accordance to the vcpkg
     recommendations.

  3. All libraries built by vcpkg have been updated to their latest
     available version, except for Qt because our codebase isn't
     compatible with Qt 6.0 yet.

  Currently there are build issues caused by the fmtlib upgrade.
  Another question is how to handle large libraries like Qt, Boost and
  SDL2 which will be addressed in a later commit.
2022-07-14 18:42:33 +03:00
b1b61683f2 renderer_vulkan: Fix surface creation 2022-07-04 11:54:01 +03:00
bbb4f1b040 renderer_vulkan: Fix broken synchronization
* The GPU was always 1 tick ahead, making all wait operations nops.
2022-07-03 23:51:19 +03:00
5f942fb4c9 renderer_vulkan: Drop dependency on Vulkan-SDK
* Dynamically fetch vulkan function pointers and checkout Vulkan-Headers.
This way we are not tied by the installed SDK version
2022-07-03 20:38:46 +03:00
7c72060662 renderer_vulkan: Drop VK prefix
* All the classes are in the Vulkan namespace, thus making it superfluous
2022-07-03 16:47:59 +03:00
5b918cb535 renderer_vulkan: Cleanup unused functions in renderer 2022-07-03 16:44:23 +03:00
61932f9a6c renderer_vulkan: Include Vulkan memory allocator 2022-07-03 16:39:23 +03:00