Commit Graph

9180 Commits

Author SHA1 Message Date
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
bunnei
e3804a4c06 Merge pull request #5786 from vitor-k/macos-perms
Request Camera Permission on MacOS
2022-02-05 02:58:38 -07:00
zhaobot
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
Johel Ernesto Guerrero Peña
e04d904b2b fix(net): prevent gibberish padding on linux client (#5941) 2022-02-05 11:23:48 +05:30
liushuyu
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
SachinVin
2fc7def6f6 Merge pull request #5395 from lioncash/gsp
gsp_gpu: Resolve sign conversion warnings
2022-01-30 21:55:24 +05:30
SachinVin
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
SachinVin
d35a7a8e23 Merge pull request #5804 from weihuoya/minorfx
Minor fx
2022-01-30 21:51:11 +05:30
SachinVin
4e15823db2 gl_format_reinterpreter.cpp: fallback to PBO path on obsolete intel drivers (#5928) 2022-01-24 14:14:28 +05:30
zhang wei
afa7f4996f fx bgr write back on gles (#5924) 2022-01-24 14:14:12 +05:30
weihuoya
7fa64af3d6 externals: update enet 2022-01-14 10:36:49 +08:00
liushuyu
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
BreadFish64
45a4a56264 Merge pull request #5917 from jbeich/cryptopp-i386
cryptopp: unbreak build on 32-bit x86
2022-01-11 23:30:14 -06:00
Vitor Kiguchi
8b0a6b9d5e macos permission: address review comments 2022-01-10 15:30:41 +01:00
Vitor Kiguchi
7bbc94d428 macos: request permission for microphone usage 2022-01-10 14:38:49 +01:00
Vitor Kiguchi
d5a4988f9e clang format: add objective c++ formatting 2022-01-10 13:52:39 +01:00
Vitor Kiguchi
80fdc3e7c8 clang format 2022-01-08 12:43:46 +01:00
bunnei
95383a3d14 Update src/citra_qt/configuration/configure_input.cpp
Co-authored-by: Pengfei Zhu <zhupf321@gmail.com>
2022-01-08 02:02:03 -08:00
bunnei
67f1e4111d Merge pull request #5792 from vitor-k/username
service/frd: return cfg username on GetMyScreenName
2022-01-08 02:01:31 -08:00
bunnei
c01dca4920 Merge pull request #5901 from vitor-k/subregion
cfg: use a default subregion based on the country
2022-01-08 02:00:15 -08:00
trimental
2670b951e1 Fix software renderer for empty texture addresses (#5893) 2022-01-07 11:36:01 -06:00
Jan Beich
4b04175c5d cryptopp: enable SIMD flags on i386
externals/cryptopp/cryptopp/rijndael_simd.cpp:460:20: error: always_inline function '_mm_loadu_si128' requires target feature 'sse2', but would be inlined into function 'Rijndael_UncheckedSetKey_SSE4_AESNI' that is compiled without support for 'sse2'
    __m128i temp = _mm_loadu_si128(M128_CAST(userKey+keyLen-16));
                   ^
externals/cryptopp/cryptopp/rijndael_simd.cpp:469:50: error: '__builtin_ia32_aeskeygenassist128' needs target feature aes
        rk[keyLen/4] = rk[0] ^ _mm_extract_epi32(_mm_aeskeygenassist_si128(temp, 0), 3) ^ *(rc++);
                                                 ^
externals/cryptopp/cryptopp/rijndael_simd.cpp:481:20: error: '__builtin_ia32_vec_set_v4si' needs target feature sse4.1
            temp = _mm_insert_epi32(temp, rk[11], 3);
                   ^
[...]
2022-01-06 23:57:05 +00:00
Vitor K
60d1def6f8 Update cryptopp to 8.5.0 (#5669)
* Update cryptopp to 8.3.0

Modified the CMakeLists.txt based on the noloader/cryptopp-cmake
8.3.0 CMakeLists.txt.

* Update cryptopp to version 8.5.0
2022-01-05 20:05:07 +05:30
bunnei
d6356f5e9f Merge pull request #5913 from liushuyu/master
CI: do canary merge and nightly publishing on GitHub Actions
2022-01-04 18:59:10 -08:00