summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #2302 from ReinUsesLisp/vk-swapchainbunnei2019-04-032-0/+302
|\ | | | | vk_swapchain: Implement a swapchain manager
| * vk_swapchain: Implement a swapchain managerReinUsesLisp2019-03-292-0/+302
| |
* | Merge pull request #2297 from lioncash/reorderbunnei2019-03-311-2/+2
|\ \ | |/ |/| video_core: Amend constructor initializer list order where applicable
| * video_core: Amend constructor initializer list order where applicableLioncash2019-03-271-2/+2
| | | | | | | | | | | | | | Specifies the members in the same order that initialization would take place in. This also silences -Wreorder warnings.
* | video_core: Add missing override specifiersLioncash2019-03-272-2/+2
|/ | | | | | Ensures that the signatures will always match with the base class. Also silences a few compilation warnings.
* gpu: Move GPUVAddr definition to common_types.bunnei2019-03-212-4/+2
|
* gpu: Use host address for caching instead of guest address.bunnei2019-03-152-17/+41
|
* vk_sampler_cache: Use operator== instead of memcmpMat M2019-03-131-1/+1
| | | Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc>
* vk_sampler_cache: Implement a sampler cacheReinUsesLisp2019-03-132-0/+137
|
* Merge pull request #2191 from ReinUsesLisp/maxwell-to-vkbunnei2019-03-083-3/+551
|\ | | | | maxwell_to_vk: Initial implementation
| * maxwell_to_vk: Initial implementationReinUsesLisp2019-03-043-3/+551
| |
* | video_core/engines: Remove unnecessary includesLioncash2019-03-061-1/+1
|/ | | | | | | | | Removes a few unnecessary dependencies on core-related machinery, such as the core.h and memory.h, which reduces the amount of rebuilding necessary if those files change. This also uncovered some indirect dependencies within other source files. This also fixes those.
* vk_buffer_cache: Fix clang-formatReinUsesLisp2019-03-021-3/+3
|
* vk_buffer_cache: Implement a buffer cacheReinUsesLisp2019-03-012-0/+203
| | | | | This buffer cache is just like OpenGL's buffer cache with some minor style changes. It uses VKStreamBuffer.
* Merge pull request #2152 from ReinUsesLisp/vk-stream-bufferbunnei2019-02-284-7/+169
|\ | | | | vk_stream_buffer: Implement a stream buffer
| * vk_stream_buffer: Remove copy code pathReinUsesLisp2019-02-262-53/+18
| |
| * vk_stream_buffer: Implement a stream bufferReinUsesLisp2019-02-242-0/+197
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This manages two kinds of streaming buffers: one for unified memory models and one for dedicated GPUs. The first one skips the copy from the staging buffer to the real buffer, since it creates an unified buffer. This implementation waits for all fences to finish their operation before "invalidating". This is suboptimal since it should allocate another buffer or start searching from the beginning. There is room for improvement here. This could also handle AMD's "pinned" memory (a heap with 256 MiB) that seems to be designed for buffer streaming.
| * vk_resource_manager: Minor VKFenceWatch changesReinUsesLisp2019-02-242-7/+7
| |
* | vk_memory_manager: Reorder constructor initializer list in terms of member declaration orderLioncash2019-02-271-1/+1
|/ | | | | Reorders members in the order that they would actually be initialized in. Silences a -Wreorder warning.
* Merge pull request #2146 from ReinUsesLisp/vulkan-schedulerbunnei2019-02-242-0/+129
|\ | | | | vk_scheduler: Implement a scheduler
| * vk_scheduler: Implement a schedulerReinUsesLisp2019-02-222-0/+129
| | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | vk_memory_manager: Fixup commit interval allocationReinUsesLisp2019-02-241-2/+1
|/ | | | | VKMemoryCommitImpl was using as the end of its interval "begin + end". That ended up wasting memory.
* vk_memory_manager: Implement memory managerReinUsesLisp2019-02-192-0/+340
| | | | | A memory manager object handles the memory allocations for a device. It allocates chunks of Vulkan memory objects and then suballocates.
* vk_resource_manager: Implement a command buffer pool with VKFencedPoolReinUsesLisp2019-02-142-1/+59
|
* vk_resource_manager: Add VKFencedPool interfaceReinUsesLisp2019-02-142-0/+83
| | | | | | | Handles a pool of resources protected by fences. Manages resource overflow allocating more resources. This class is intended to be used through inheritance.
* vk_resource_manager: Implement VKResourceManager and fence allocatorReinUsesLisp2019-02-142-0/+85
| | | | | CommitFence iterates a pool of fences until one is found. If all fences are being used at the same time, allocate more.
* vk_resource_manager: Implement VKFenceWatchReinUsesLisp2019-02-142-0/+68
| | | | | | 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.
* vk_resource_manager: Implement VKFenceReinUsesLisp2019-02-142-0/+131
| | | | | | | | | | 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.
* vk_resource_manager: Add VKResource interfaceReinUsesLisp2019-02-142-0/+40
| | | | | VKResource is an interface that gets signaled by a fence when it is free to be reused.
* vk_device: Abstract device handling into a classReinUsesLisp2019-02-132-0/+347
| | | | | | | 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).
* renderer_vulkan: Add declarations fileReinUsesLisp2019-02-121-0/+45
This file is intended to be included instead of vulkan/vulkan.hpp. It includes declarations of unique handlers using a dynamic dispatcher instead of a static one (which would require linking to a Vulkan library).