summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2019-02-24Merge pull request #2155 from FearlessTobi/port-4655bunnei
Port citra-emu/citra#4655: "Remove GCC version checks"
2019-02-24Merge pull request #2144 from lioncash/factorbunnei
service/vi: Convert Display and Layer structs into classes
2019-02-24Remove GCC version checkstgsm
Citra can't be compiled using GCC <7 because of required C++17 support, so these version checks don't need to exist anymore.
2019-02-24Merge pull request #2139 from degasus/dma_pusherbunnei
video_core/dma_pusher: The full list of headers at once.
2019-02-23Merge pull request #2146 from ReinUsesLisp/vulkan-schedulerbunnei
vk_scheduler: Implement a scheduler
2019-02-23Merge pull request #2150 from ReinUsesLisp/fixup-layer-swizzlebunnei
gl_rasterizer_cache: Fixup parameter order in layered swizzle
2019-02-24vk_memory_manager: Fixup commit interval allocationReinUsesLisp
VKMemoryCommitImpl was using as the end of its interval "begin + end". That ended up wasting memory.
2019-02-23gl_rasterizer_cache: Fixup parameter order in layered swizzleReinUsesLisp
2019-02-22vk_scheduler: Implement a schedulerReinUsesLisp
The scheduler abstracts command buffer and fence management with an interface that's able to do OpenGL-like operations on Vulkan command buffers. It returns by value a command buffer and fence that have to be used for subsequent operations until Flush or Finish is executed, after that the current execution context (the pair of command buffers and fences) gets invalidated a new one must be fetched. Thankfully validation layers will quickly detect if this is skipped throwing an error due to modifications to a sent command buffer.
2019-02-21Merge pull request #2138 from ReinUsesLisp/vulkan-memory-managerbunnei
vk_memory_manager: Implement memory manager
2019-02-21service/nvflinger: Store BufferQueue instances as regular data membersLioncash
The NVFlinger service is already passed into services that need to guarantee its lifetime, so the BufferQueue instances will already live as long as they're needed. Making them std::shared_ptr instances in this case is unnecessary.
2019-02-21service/vi/vi_layer: Convert Layer struct into a classLioncash
Like the previous changes made to the Display struct, this prepares the Layer struct for changes to its interface. Given Layer will be given more invariants in the future, we convert it into a class to better signify that.
2019-02-21service/nvflinger: Move display specifics over to vi_displayLioncash
With the display and layer structures relocated to the vi service, we can begin giving these a proper interface before beginning to properly support the display types. This converts the display struct into a class and provides it with the necessary functions to preserve behavior within the NVFlinger class.
2019-02-20Merge pull request #2125 from ReinUsesLisp/fixup-glstatebunnei
gl_state: Synchronize gl_state even when state is disabled
2019-02-20Merge pull request #2130 from lioncash/system_enginebunnei
video_core: Remove usages of System::GetInstance() within the engines
2019-02-20Fixes Unicode Key File Directories (#2120)Jungy
* Fixes Unicode Key File Directories Adds code so that when loading a file it converts to UTF16 first, to ensure the files can be opened. Code borrowed from FileUtil::Exists. * Update src/core/crypto/key_manager.cpp Co-Authored-By: Jungorend <Jungorend@users.noreply.github.com> * Update src/core/crypto/key_manager.cpp Co-Authored-By: Jungorend <Jungorend@users.noreply.github.com> * Using FileUtil instead to be cleaner. * Update src/core/crypto/key_manager.cpp Co-Authored-By: Jungorend <Jungorend@users.noreply.github.com>
2019-02-19service/nvflinger: Relocate definitions of Layer and Display to the vi serviceLioncash
These are more closely related to the vi service as opposed to the intermediary nvflinger. This also places them in their relevant subfolder, as future changes to these will likely result in subclassing to represent various displays and services, as they're done within the service itself on hardware. The reasoning for prefixing the display and layer source files is to avoid potential clashing if two files with the same name are compiled (e.g. if 'display.cpp/.h' or 'layer.cpp/.h' is added to another service at any point), which MSVC will actually warn against. This prevents that case from occurring. This also presently coverts the std::array introduced within f45c25aabacc70861723a7ca1096a677bd987487 back to a std::vector to allow the forward declaration of the Display type. Forward declaring a type within a std::vector is allowed since the introduction of N4510 (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4510.html) by Zhihao Yuan.
2019-02-19video_core/dma_pusher: Simplyfy Step() logic.Markus Wick
As fetching command list headers and and the list of command headers is a fixed 1:1 relation now, they can be implemented within a single call. This cleans up the Step() logic quite a bit.
2019-02-19video_core/dma_pusher: The full list of headers at once.Markus Wick
Fetching every u32 from memory leads to a big overhead. So let's fetch all of them as a block if possible. This reduces the Memory::* calls by the dma_pusher by a factor of 10.
2019-02-19vk_memory_manager: Implement memory managerReinUsesLisp
A memory manager object handles the memory allocations for a device. It allocates chunks of Vulkan memory objects and then suballocates.
2019-02-18Merge pull request #2122 from ReinUsesLisp/vulkan-resource-managerbunnei
vk_resource_manager: Implement fence and command buffer allocator
2019-02-17Merge pull request #2134 from lioncash/namingbunnei
audio_core/buffer: Make const and non-const getter for samples consistent
2019-02-16Merge pull request #2133 from lioncash/arbiterbunnei
address_arbiter: Use nested namespaces where applicable
2019-02-16Merge pull request #2127 from FearlessTobi/fix-screenshot-srgbbunnei
renderer_opengl: respect the sRGB colorspace for the screenshot feature
2019-02-16Merge pull request #2128 from FearlessTobi/port-4197bunnei
Port citra-emu/citra#4197: "threadsafe_queue: Add PopWait and use it where possible "
2019-02-16audio_core/buffer: Make const and non-const getter for samples consistentLioncash
This way proper const/non-const selection can occur.
2019-02-16address_arbiter: Use nested namespaces where applicableLioncash
A fairly trivial change. Other sections of the codebase use nested namespaces instead of separate namespaces here. This one must have just been overlooked.
2019-02-15video_core: Remove usages of System::GetInstance() within the enginesLioncash
Avoids the use of the global accessor in favor of explicitly making the system a dependency within the interface.
2019-02-15Merge pull request #2123 from lioncash/coretiming-globalJames Rowe
core_timing: De-globalize core_timing facilities
2019-02-15core_timing: Convert core timing into a classLioncash
Gets rid of the largest set of mutable global state within the core. This also paves a way for eliminating usages of GetInstance() on the System class as a follow-up. Note that no behavioral changes have been made, and this simply extracts the functionality into a class. This also has the benefit of making dependencies on the core timing functionality explicit within the relevant interfaces.
2019-02-15Adressed review commentsB3n30
2019-02-15threadsafe_queue: Add WaitIfEmpty and use it in loggingB3n30
2019-02-15renderer_opengl: respect the sRGB colorspace for the screenshot featurefearlessTobi
Previously, we were completely ignoring for screenshots whether the game uses RGB or sRGB. This resulted in screenshot colors that looked off for some titles.
2019-02-15gl_state: Synchronize gl_state even when state is disabledReinUsesLisp
There are some potential edge cases where gl_state may fail to track the state if a related state changes while the toggle is disabled or it didn't change. This addresses that.
2019-02-14Merge pull request #2112 from lioncash/shadowingbunnei
gl_rasterizer_cache: Get rid of variable shadowing
2019-02-14Merge pull request #2111 from ReinUsesLisp/fetch-fixbunnei
gl_shader_decompiler: Re-implement TLDS lod
2019-02-14vk_resource_manager: Implement a command buffer pool with VKFencedPoolReinUsesLisp
2019-02-14vk_resource_manager: Add VKFencedPool interfaceReinUsesLisp
Handles a pool of resources protected by fences. Manages resource overflow allocating more resources. This class is intended to be used through inheritance.
2019-02-14vk_resource_manager: Implement VKResourceManager and fence allocatorReinUsesLisp
CommitFence iterates a pool of fences until one is found. If all fences are being used at the same time, allocate more.
2019-02-14vk_resource_manager: Implement VKFenceWatchReinUsesLisp
A fence watch is used to keep track of the usage of a fence and protect a resource or set of resources without having to inherit from their handlers.
2019-02-14vk_resource_manager: Implement VKFenceReinUsesLisp
Fences take ownership of objects, protecting them from GPU-side or driver-side concurrent access. They must be commited from the resource manager. Their usage flow is: commit the fence from the resource manager, protect resources with it and use them, send the fence to an execution queue and Wait for it if needed and then call Release. Used resources will automatically be signaled when they are free to be reused.
2019-02-14vk_resource_manager: Add VKResource interfaceReinUsesLisp
VKResource is an interface that gets signaled by a fence when it is free to be reused.
2019-02-14Merge pull request #2113 from ReinUsesLisp/vulkan-basebunnei
vulkan: Add dependencies and device abstraction
2019-02-13Merge pull request #2115 from lioncash/localbunnei
core_timing: Make EmptyTimedCallback a local variable
2019-02-13Merge pull request #2116 from lioncash/sizebunnei
threadsafe_queue: Remove NeedSize template parameter
2019-02-12threadsafe_queue: Use std::size_t for representing sizeLioncash
Makes it consistent with the regular standard containers in terms of size representation. This also gets rid of dependence on our own type aliases, removing the need for an include.
2019-02-12threadsafe_queue: Remove NeedSize template parameterLioncash
The necessity of this parameter is dubious at best, and in 2019 probably offers completely negligible savings as opposed to just leaving this enabled. This removes it and simplifies the overall interface.
2019-02-12core_timing: Make EmptyTimedCallback a local variableLioncash
Given this is only used in one place, it can be moved closest to its usage site.
2019-02-12Merge pull request #2099 from greggameplayer/BGRA8-Framebuffer-Realbunnei
Implement BGRA8 framebuffer format
2019-02-12vk_device: Abstract device handling into a classReinUsesLisp
VKDevice contains all the data required to manage and initialize a physical device. Its intention is to be passed across Vulkan objects to query device-specific data (for example the logical device and the dispatch loader).