Commit Graph

9203 Commits

Author SHA1 Message Date
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
GPUCode
f6988d4a8e vulkan: Add Vulkan memory allocator 2022-05-05 14:56:34 +03:00
GPUCode
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
GPUCode
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
GPUCode
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
GPUCode
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
GPUCode
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
GPUCode
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
GPUCode
98332af610 renderer_vulkan: Improve texture interface and add framebuffer support 2022-04-28 19:37:55 +03:00
GPUCode
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
GPUCode
c89434627a CMake: Bump source to C++ 20
* We can use shiny new std::span, wow
2022-04-26 21:25:39 +03:00
GPUCode
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
PabloMK7
593b0b2d8f Add svcGetSystemInfo 0x20000 to get citra information (#5955) 2022-04-14 19:58:44 +05:30
tcoyvwac
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
SachinVin
3df43f9505 Merge pull request #5983 from SachinVin/msvc
Fix building on MSVC 2022
2022-04-03 11:31:03 +05:30
SachinVin
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
zhaobot
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
SachinVin
d65f50e512 Bump libressl to latest commit 2022-03-26 10:00:34 +05:30
SachinVin
ff857f0585 CMakeLists.txt: Bump MSVC_VERSION for bundled deps 2022-03-25 23:52:03 +05:30
SachinVin
ac98458e0b audio_core\lle\lle.cpp: Add 16 bit and 32 bit read/write callbacks (#5968) 2022-03-05 12:38:46 +05:30
benstephens56
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
Trung Lê
25ad002e6e Update teakra (#5961)
Co-authored-by: Trung Le <trung.le@ruby-joural.com>
2022-02-24 21:02:40 +05:30
SachinVin
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
liushuyu
c7869ff332 audio_core/hle/ffmpeg_decoder: make avcodec const 2022-02-21 00:51:17 -07:00
liushuyu
04f201ab34 dumping/ffmpeg_backend: add support for ffmpeg 5.0 2022-02-20 04:07:10 -07:00
Mai M
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
bunnei
62753e882e Merge pull request #5448 from zhaowenlan1779/rerecording
Implement basic rerecording features
2022-02-18 20:29:36 -07:00
pkubaj
cdbd72e79c Fix build on powerpc64le (#5947)
After cryptopp update, build again fails.
2022-02-08 22:07:21 +05:30
bunnei
bae1c31406 Merge pull request #5718 from liushuyu/httpc
externals: update httplib and libressl
2022-02-05 02:59:18 -07:00