Commit Graph

9231 Commits

Author SHA1 Message Date
emufan4568
2d4f762db1 video_core: Commonise rasterizer cache 2022-08-08 14:24:47 +03:00
emufan4568
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
emufan4568
ff9b0dfe2f global: Fix some warnings 2022-07-21 10:17:34 +03:00
GPUCode
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
GPUCode
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
GPUCode
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
emufan4568
94696de2b2 vcpkg: Bootstrap before installing packages 2022-07-19 16:23:18 +03:00
emufan4568
371387b44f externals: Remove unused submodules 2022-07-17 11:59:00 +03:00
emufan4568
d8d14491dd cmake: Bump minimum required CMake version 2022-07-17 10:03:42 +03:00
emufan4568
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
emufan4568
5338e2e3a3 vcpkg: Force static linkage on windows 2022-07-16 19:52:40 +03:00
emufan4568
6b8931c899 cmake: Bump Qt to 5.12.12 LTS 2022-07-16 18:59:46 +03:00
emufan4568
5cad914b73 vcpkg: Fine tune required ffmpeg dependecies 2022-07-16 16:35:46 +03:00
emufan4568
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
emufan4568
60f0269569 core: Replace boost::optional with std::optional 2022-07-16 15:10:22 +03:00
emufan4568
ceadee0358 renderer_vulkan: Fix swapchain creation on Win32 2022-07-15 21:34:36 +03:00
SachinVin
a9b96789d7 Core: Port Exclusive memory impl from yuzu 2022-07-15 20:14:15 +03:00
SachinVin
79379f21a4 Common: Add CPU feature detection for ARM64 2022-07-15 20:13:27 +03:00
emufan4568
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
emufan4568
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
emufan4568
a9436e01ca tests: Update test suite for Catch2 3.0.1 2022-07-15 17:17:18 +03:00
emufan4568
e7a6af73c1 renderer_vulkan: Fix type in Win32 surface creation 2022-07-15 16:43:54 +03:00
emufan4568
9850c23a03 cmake: Adjust link libraries to vcpkg produced targets 2022-07-15 16:43:51 +03:00
liushuyu
55e5c4edc9 logging: adapt to changes in fmt 8.1 2022-07-15 16:10:12 +03:00
emufan4568
f990a842da vcpkg: Enable all glad extensions 2022-07-15 08:48:30 +03:00
emufan4568
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
emufan
b1b61683f2 renderer_vulkan: Fix surface creation 2022-07-04 11:54:01 +03:00
emufan
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
emufan
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
emufan
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
emufan
5b918cb535 renderer_vulkan: Cleanup unused functions in renderer 2022-07-03 16:44:23 +03:00
emufan
61932f9a6c renderer_vulkan: Include Vulkan memory allocator 2022-07-03 16:39:23 +03:00
emufan
8a2cc15cd1 Fix some C++ 20 warnings 2022-06-24 10:37:22 +03:00
emufan
18cc68c687 renderer_vulkan: Fix mipmap generation 2022-06-19 12:44:44 +03:00
emufan
69bde2b13b renderer_vulkan: Fix culling related issues 2022-06-19 00:09:02 +03:00
emufan
816a846cfb renderer_vulkan: Fix texture allocation and destruction logic 2022-06-18 15:04:15 +03:00
emufan
4dd4f2170d renderer_vulkan: 2D shapes demo fully functional now 2022-06-16 17:48:03 +03:00
emufan
0eff9ad215 renderer_vulkan: Surface fills and dual screen rendering working 2022-06-16 11:51:23 +03:00
emufan
d4b88ac158 renderer_vulkan: Texture management fixes 2022-06-15 22:34:02 +03:00
emufan
ed9000d0ec renderer_vulkan: Fix many validation errors 2022-06-14 14:29:52 +03:00
emufan4568
a657ef33e6 More fixes 2022-06-13 16:34:19 +03:00
emufan4568
87db7a6888 Successful build 2022-06-12 18:06:00 +03:00
emufan4568
ba6795b6cc Refactor Vulkan state and pipeline builders 2022-06-08 00:41:19 +03:00
GPUCode
a6fc19d7d9 renderer_vulkan: Initial rasterizer cache vulkan port 2022-05-30 08:03:49 +03:00
GPUCode
06cecba63f renderer_vulkan: Include pipeline builder class and finish VulanState 2022-05-20 11:02:25 +03:00
GPUCode
0d0712f7d7 renderer_vulkan: Add very basic pipeline and shader cache 2022-05-14 18:31:03 +03:00
GPUCode
72340c5685 renderer_vulkan: Port rasterizer to Vulkan
* This is a massive code dump so I'm not going to even attempt to explain what changed
2022-05-13 19:16:53 +03:00
GPUCode
1f967b4770 renderer_vulkan: Refactor VulkanState class and switch to dynamic rendering
* Dynamic rendering gives us no performance loss on desktop while removing the need
to cache and manager many renderpass and framebuffer objects
2022-05-06 22:26:57 +03:00
GPUCode
5858bd3116 renderer_vulkan: Drop vk_pipeline.h/cpp 2022-05-05 17:00:50 +03:00
GPUCode
ab9b84f721 renderer_vulkan: General cleanups
* Add a staging buffer to each texture. This is suboptimal since it
causes many small allocations, will only be here until I implement
a global staging buffer with memory tracking

* Make the task scheduler accept generic functions which allows for more
powerful resource control
2022-05-05 16:55:33 +03:00