aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan
AgeCommit message (Collapse)Author
2019-04-17Merge pull request #2318 from ReinUsesLisp/sampler-cachebunnei
gl_sampler_cache: Port sampler cache to OpenGL
2019-04-15vk_shader_decompiler: Add missing operationsReinUsesLisp
2019-04-15shader_ir/decode: Fix half float pre-operations and remove MetaHalfArithmeticReinUsesLisp
Operations done before the main half float operation (like HAdd) were managing a packed value instead of the unpacked one. Adding an unpacked operation allows us to drop the per-operand MetaHalfArithmetic entry, simplifying the code overall.
2019-04-15shader_ir/decode: Implement half float saturationReinUsesLisp
2019-04-14shader_ir: Implement STG, keep track of global memory usage and flushReinUsesLisp
2019-04-10vk_shader_decompiler: Implement flow primitivesReinUsesLisp
2019-04-10vk_shader_decompiler: Implement most common texture primitivesReinUsesLisp
2019-04-10vk_shader_decompiler: Implement texture decompilation helper functionsReinUsesLisp
2019-04-10vk_shader_decompiler: Implement Assign and LogicalAssignReinUsesLisp
2019-04-10vk_shader_decompiler: Implement non-OperationCode visitsReinUsesLisp
2019-04-10vk_shader_decompiler: Implement OperationCode decompilation interfaceReinUsesLisp
2019-04-10vk_shader_decompiler: Implement VisitReinUsesLisp
2019-04-10vk_shader_decompiler: Implement labels tree and flowReinUsesLisp
2019-04-10vk_shader_decompiler: Implement declarationsReinUsesLisp
2019-04-10vk_shader_decompiler: Declare and stub interface for a SPIR-V decompilerReinUsesLisp
2019-04-05video_core/engines: Remove unnecessary inclusions where applicableLioncash
Replaces header inclusions with forward declarations where applicable and also removes unused headers within the cpp file. This reduces a few more dependencies on core/memory.h
2019-04-03Merge pull request #2302 from ReinUsesLisp/vk-swapchainbunnei
vk_swapchain: Implement a swapchain manager
2019-04-02video_core: Abstract vk_sampler_cache into a templated classReinUsesLisp
2019-03-30Merge pull request #2297 from lioncash/reorderbunnei
video_core: Amend constructor initializer list order where applicable
2019-03-29vk_swapchain: Implement a swapchain managerReinUsesLisp
2019-03-27video_core: Amend constructor initializer list order where applicableLioncash
Specifies the members in the same order that initialization would take place in. This also silences -Wreorder warnings.
2019-03-27video_core: Add missing override specifiersLioncash
Ensures that the signatures will always match with the base class. Also silences a few compilation warnings.
2019-03-20gpu: Move GPUVAddr definition to common_types.bunnei
2019-03-14gpu: Use host address for caching instead of guest address.bunnei
2019-03-12vk_sampler_cache: Use operator== instead of memcmpMat M
Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc>
2019-03-12vk_sampler_cache: Implement a sampler cacheReinUsesLisp
2019-03-08Merge pull request #2191 from ReinUsesLisp/maxwell-to-vkbunnei
maxwell_to_vk: Initial implementation
2019-03-05video_core/engines: Remove unnecessary includesLioncash
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.
2019-03-04maxwell_to_vk: Initial implementationReinUsesLisp
2019-03-02vk_buffer_cache: Fix clang-formatReinUsesLisp
2019-03-01vk_buffer_cache: Implement a buffer cacheReinUsesLisp
This buffer cache is just like OpenGL's buffer cache with some minor style changes. It uses VKStreamBuffer.
2019-02-27Merge pull request #2152 from ReinUsesLisp/vk-stream-bufferbunnei
vk_stream_buffer: Implement a stream buffer
2019-02-27vk_memory_manager: Reorder constructor initializer list in terms of member ↵Lioncash
declaration order Reorders members in the order that they would actually be initialized in. Silences a -Wreorder warning.
2019-02-26vk_stream_buffer: Remove copy code pathReinUsesLisp
2019-02-24vk_stream_buffer: Implement a stream bufferReinUsesLisp
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.
2019-02-24vk_resource_manager: Minor VKFenceWatch changesReinUsesLisp
2019-02-23Merge pull request #2146 from ReinUsesLisp/vulkan-schedulerbunnei
vk_scheduler: Implement a scheduler
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-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-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-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-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).
2019-02-12renderer_vulkan: Add declarations fileReinUsesLisp
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).