* 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
* 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.
* 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.
* 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.
* 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.
* 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.
* 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
* 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.