Commit Graph

9192 Commits

Author SHA1 Message Date
ed9000d0ec renderer_vulkan: Fix many validation errors 2022-06-14 14:29:52 +03:00
a657ef33e6 More fixes 2022-06-13 16:34:19 +03:00
87db7a6888 Successful build 2022-06-12 18:06:00 +03:00
ba6795b6cc Refactor Vulkan state and pipeline builders 2022-06-08 00:41:19 +03:00
a6fc19d7d9 renderer_vulkan: Initial rasterizer cache vulkan port 2022-05-30 08:03:49 +03:00
06cecba63f renderer_vulkan: Include pipeline builder class and finish VulanState 2022-05-20 11:02:25 +03:00
0d0712f7d7 renderer_vulkan: Add very basic pipeline and shader cache 2022-05-14 18:31:03 +03:00
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
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
5858bd3116 renderer_vulkan: Drop vk_pipeline.h/cpp 2022-05-05 17:00:50 +03:00
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
f6988d4a8e vulkan: Add Vulkan memory allocator 2022-05-05 14:56:34 +03:00
bc440ce6a3 renderer_vulkan: Rewrite and rename command buffer manager class
* The old manager class had unnecessary complexity and Dolphin specific stuff
that we didn't need. So this commit completely rewrites the class to make the
implementation simpler and more robust. It does three things:

1. Make use of Vulkan timeline semaphores
2. Remove submission thread
3. Rename VKCommandManager to VKTaskScheduler

* In addition remove Unique handles from textures and buffers and give the
responsibility of their deletion to the scheduler.
2022-05-02 20:27:22 +03:00
b6099d5504 common: Implement Common::Event with Common::Flag
* Ports the following commit from dolphin: dolphin-emu/dolphin@48bd9040
2022-04-30 22:32:47 +03:00
6b3767f1b7 renderer_vulkan: Port Vulkan command buffer manager from Dolphin
* In addition to the new command buffer manager this commit
also ports changes to the synchronization objects.
2022-04-30 22:28:37 +03:00
4151fad10b vk_texture: Implement non-owning texture
* Swapchain images must not be destroyed since their cleanup is handled automatically.
2022-04-30 18:58:16 +03:00
2ec7f37d69 renderer_vulkan: Add vulkan swapchain class
* This commit implements the Vulkan swapchain required for presenting
images to the screen. Currently it's not complete as the API will
be finalized in the next subsequent commits.
2022-04-30 15:50:38 +03:00
47e48617d5 renderer_vulkan: Implement vulkan instance creation and state manager
* This commits continues to improve the backend code and starts work
on replacing the old OpenGLState class with a better one suited for
Vulkan. Instance creation is also finally done. The only thing left
before working with the rasterizer is the command buffer manager.
2022-04-30 13:36:30 +03:00
98332af610 renderer_vulkan: Improve texture interface and add framebuffer support 2022-04-28 19:37:55 +03:00
84f97fc77e renderer_vulkan: Implement basic utility classes
*  These first few commits are mostly code dumps until the renderer interface
is finalized. This commits adds some basic Vulkan objects like textures, buffers,
sampler and translates some simpler OpenGL stuff to Vulkan.

* In addition a simple resource cache is implemented that handles recycling
of samplers, renderpasses and also stores the constant descriptor layout infos.
I've added all the resources I could deduce being used in shaders though
I might be missing something. I'm still divided though on whether the resource
cache should also handle pipelines.
2022-04-28 18:14:13 +03:00
c89434627a CMake: Bump source to C++ 20
* We can use shiny new std::span, wow
2022-04-26 21:25:39 +03:00
32bab7d1ba video_core: Initial Vulkan renderer dump
* This is the basic skeleton of the new Citra Vulkan renderer. It's based on
vulkan-hpp and my own wrapper library which I wrote for my some of my projects.
Currently it doesn't even compile and the code is less than adequate.
2022-04-26 21:20:31 +03:00
593b0b2d8f Add svcGetSystemInfo 0x20000 to get citra information (#5955) 2022-04-14 19:58:44 +05:30
ac7285c904 citra_qt: prefer standard algorithms (#5995)
qt_multimedia_camera.cpp:
Prefer std::generate over ranged-for loop.
2022-04-14 19:58:25 +05:30
3df43f9505 Merge pull request #5983 from SachinVin/msvc
Fix building on MSVC 2022
2022-04-03 11:31:03 +05:30
b5ac9e4946 Backport non-seperable disk shader from android (#5976)
* VideoCore: Backport Shader cache for non separable shaders

android: disk_shader_cache: remove redundant lookup

* disk_shader_cache: dont compile dumped shaders

* cleanup Seperable shader loading

* gl_shader_disk_cache.cpp: remove redundant checks

* Skip compiling non seperable raws

* gl_shader_manager.cpp: Skip `GLAD_GL_ARB_get_program_binary` check on GLES
2022-04-02 11:57:14 +05:30
e31f5727f7 Update translations (2022-04-01) (#5990)
Co-authored-by: The Citra Community <noreply-fake@community.citra-emu.org>
2022-04-02 11:56:42 +05:30
d65f50e512 Bump libressl to latest commit 2022-03-26 10:00:34 +05:30
ff857f0585 CMakeLists.txt: Bump MSVC_VERSION for bundled deps 2022-03-25 23:52:03 +05:30
ac98458e0b audio_core\lle\lle.cpp: Add 16 bit and 32 bit read/write callbacks (#5968) 2022-03-05 12:38:46 +05:30
c8a7185444 Convert Input Count to Frame Count (#5954)
* Convert Input Count to Frame Count

While recording or playing a movie file, the left side of the status bar currently displays an input counter which shows how many times the emulator has polled for button inputs during the movie. This information is far less easily understandable and less useful for TASing compared to a frame count. The frame count has a linear relationship with input count that can be expressed with Frame Count = 0.255689103308912 * Input Count. Simply put, instead of having a counter that goes up by 3 or 4 every frame, this makes it a counter that goes up by exactly 1 every frame.

* Update movie.cpp

* Update movie.cpp

* Fixing clang-format errors

* Update movie.cpp

Did not realize that the frame rate was defined as a constant somewhere in the source code. This makes this conversion far less sketchy.

* Update movie.cpp
2022-03-05 12:38:35 +05:30
25ad002e6e Update teakra (#5961)
Co-authored-by: Trung Le <trung.le@ruby-joural.com>
2022-02-24 21:02:40 +05:30
db5edf549e Merge pull request #5956 from liushuyu/master
dumping/ffmpeg_backend: add support for ffmpeg 5.0
2022-02-21 20:37:11 +05:30
c7869ff332 audio_core/hle/ffmpeg_decoder: make avcodec const 2022-02-21 00:51:17 -07:00
04f201ab34 dumping/ffmpeg_backend: add support for ffmpeg 5.0 2022-02-20 04:07:10 -07:00
54a36bc54f fs_user: Resolve sign conversion warning in GetPriority() (#5396)
Prevents a -Wsign-compare warning from occurring.
2022-02-19 09:49:16 +05:30
62753e882e Merge pull request #5448 from zhaowenlan1779/rerecording
Implement basic rerecording features
2022-02-18 20:29:36 -07:00
cdbd72e79c Fix build on powerpc64le (#5947)
After cryptopp update, build again fails.
2022-02-08 22:07:21 +05:30
bae1c31406 Merge pull request #5718 from liushuyu/httpc
externals: update httplib and libressl
2022-02-05 02:59:18 -07:00
e3804a4c06 Merge pull request #5786 from vitor-k/macos-perms
Request Camera Permission on MacOS
2022-02-05 02:58:38 -07:00
e9c6730866 Update translations (2022-02-01) (#5939)
Co-authored-by: The Citra Community <noreply-fake@community.citra-emu.org>
2022-02-05 11:24:02 +05:30
e04d904b2b fix(net): prevent gibberish padding on linux client (#5941) 2022-02-05 11:23:48 +05:30
327d07d66f CI: revise change detection logic ... (#5943)
... now determines whether the last commit was push during the 24 hour
time-frame
2022-02-05 11:23:33 +05:30
2fc7def6f6 Merge pull request #5395 from lioncash/gsp
gsp_gpu: Resolve sign conversion warnings
2022-01-30 21:55:24 +05:30
f66ba43e0c Merge pull request #5755 from vitor-k/mod_used
citra_qt/configure_input: Account for analog buttons when checking for used buttons
2022-01-30 21:52:40 +05:30
d35a7a8e23 Merge pull request #5804 from weihuoya/minorfx
Minor fx
2022-01-30 21:51:11 +05:30
4e15823db2 gl_format_reinterpreter.cpp: fallback to PBO path on obsolete intel drivers (#5928) 2022-01-24 14:14:28 +05:30
afa7f4996f fx bgr write back on gles (#5924) 2022-01-24 14:14:12 +05:30
7fa64af3d6 externals: update enet 2022-01-14 10:36:49 +08:00
af24f75c18 externals: update httplib and libressl ...
* In older `httplib`, SSL connections were not handled correctly and
  will have issues with proxy servers. Also, keep alive directives were
  not available back then, which is probably necessary to implement
  HTTP_C service correctly.
* Another reason being `httplib` now requires OpenSSL 1.1+ API while
  LibreSSL 2.x provided OpenSSL 1.0 compatible API.
* The bundled LibreSSL has been updated to 3.2.2 so it now provides
  OpenSSL 1.1 compatible API now.
* Also the path hint has been added so that it will find the correct
  path to the CA certs on *nix systems.
* An option is provided so that *nix system distributions/providers can
  use their own SSL implementations when compiling Yuzu/Citra to
  (hopefully) complies with their maintenance guidelines.
* LURLParse is also removed since `httplib` can handle
  `scheme:host:port` string itself now.
2022-01-13 19:32:50 -07:00