* Enable the SecondScreenPresentation class
* Update everything to enable second screen on android under GL and Vulkan. Still some issues!
* Some attempts to enable surface changes
* OpenGL is working on surface change, vulkan still no
* release surfaces (also fixed vulkan?)
* added and enabled layout setting
* resolve merge conflict
* rearrange switch cases to satisfy linux compiler
* openGL is working!
* several vk changes to try to fix crashes
* maybe vulkan is working?
* removing unnecessary code attempts
* Simplified secondscreen for better performance
* vk_platform.cpp: Fixed build failure caused by bad rebase
* vk_present_window.h: Removed stray newline
* Applied clang-format
* bug fix for odin 2
* Applied clang-format
* Updated license headers
* Moved SecondScreen class to org.citra.citra_emu.display
* Various formatting and readability improvements
* Added brackets where previously absent for readability
* Additional readability improvement
* RendererVulkan::NotifySurfaceChanged: Simplified condition checking
* change all references to "secondary screen" to "secondary display" to limit confusion with top screen / bottom screen
* rename main_window to main_present_window and second_window to secondary_present_window
* Reverted accidentally downgraded compatibility list submodule
* Removed unnecessary log message
* Applied clang-format
* Added a description to the Secondary Display Screen Layout setting
* Added `_ptr` suffix to `secondary_present_window`
This distinguishes it as a pointer, as `main_present_window` isn't a pointer, so there could be confusion on whether to use `.` or `->`
---------
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
* renderer_vulkan: remove out of context SDL_Quit call (fixes#1220)
SDL_Quit must not be called unless the application must exit or SDL is no longer needed
* comment: simplify, forgot init had ref-count
* renderer_vulkan: Disable FIFO when refresh rate is lower than ~60hz
Also disables FIFO when Apple low power mode is enabled, as it can limit the application framerate to 30fps
* renderer_vulkan.cpp: Put `IsLowRefreshRate` into anon namespace + make static
When the frame limit was set to 0 (unthrottled), the Vulkan present mode would be unintentionally set to FIFO, which caps out at the monitor's refresh rate
* Stereoscopic 3D Enhancements
- Increase maximum 3D depth to 255%
- Fix touch screen to only render 2D when separate window layout is used
- Cleanup some 3D option localizations
* qt: Added warning label below depth slider for values over 100%
* Fixed broken rendering for Interlaced, Reverse Interlaced and Anaglyph options when using 3D with seperate windows
* android: Added warning label below depth slider for values over 100%
* Fixed a bracket and break statement being incorrectly positioned
---------
Co-authored-by: oneup03 <oneup03@gmail.com>
* Refactor Vulkan stream buffer memory type selection
This is a fix for GPUs with Vulkan V1.1 and V1.2
* add requested refactoring
* clang format
* fix typo
* Soc and artic_bass: gcc 13+ compatibility fix.
* externals/fmt: update to HEAD fcd3e1e19.
It will fix error.
integer_sequence<bool, (Is == Is)...> [-Werror=tautological-compare]
The updating is helpful and needed.
Fmt has gone through two public versions since its last update
and has fixed many bugs, including new compiler optimizations.
But neither of these two public versions can fix the errors encountered above.
We need to switch to a working version.
It can be fixed after fmt/8e62172.There are still many optimizations,
Such as this one:
Std. h c++23 build fix (# 3856)
And these:
C++23 compatibility: basicstring_view cannot be constructed from nullptr (# 3846)
Fix warning C4702 emitted from format.h (MSVC) (#3866)
Of course, there are other functional improvements as well.
Very helpful.
The selected version is the one that has been checked and works well.
And synchronously updating local code.
* citra_qt/ui: clean up duplicate naming warnings.
* renderer_vulkan: Remove vulkan prefix in SetObjectName
* renderer_vulkan: Rename renderpass cache to render manager
* It is no longer just a cache
* renderer_vulkan: Rewrite descriptor management
* Switch to batched vkUpdateDescriptorSets from cached descriptor sets with templates
* vk_master_semaphore: Remove waitable atomic
* These are buggy on some platforms and regular condition_variables are faster most of the time
* vk_texture_runtime.cpp: remove outdated references
* vk_render_manager: Minor cleanups and rename to RenderManager
* It is no longer just a renderpass cache
* Revert variable name change from render_manager back to renderpass_cache
---------
Co-authored-by: GPUCode <geoster3d@gmail.com>
* vk_texture_runtime: Use boost-`static_vector` for image init-barriers
Uses `static_vector` rather than `std::array`+`u32` when passing input
parameters into the initialization barriers.
* vk_texture_runtime: Use boost-`static_vector` for framebuffer attachments
* vk_texture_runtime: Use boost-`static_vector` for surface uploads
* do not move constant variables
* applet_manager: avoid possible use after move
* use constant references where pointed out by msvc
* extra_hid: initialize response
* ValidateSaveState: passing slot separately is not necessary
* common: mark HashCombine as nodiscard
* cityhash: remove use of using namespace std
* Prefix all size_t with std::
done automatically by executing regex replace `([^:0-9a-zA-Z_])size_t([^0-9a-zA-Z_])` -> `$1std::size_t$2`
based on 7d8f115
* shared_memory.cpp: fix log error format
* fix compiling with pch off
* vk_platform: Add `SetObjectName`
Creates a name-info struct and automatically deduces the object handle type using vulkan-hpp's handle trait data.
Supports `string_view` and `fmt` arguments.
* vk_texture_runtime: Use `SetObjectName` for surface handles
Names both the image handle and the image-view.
* vk_stream_buffer: Add debug object names
Names the buffer and its device memory based on its size and type.
* vk_swapchain: Set swapchain handle debug names
Identifies the swapchain images themselves as well as the semaphores
* vk_present_window: Set handle debug names
* vk_resource_pool: Set debug handle names
* vk_blit_helper: Set debug handle names
* vk_platform: Use `VulkanHandleType` concept
Use a new `concept`-type rather than `enable_if`-patterns to restrict
this function to Vulkan handle-types only.