summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2020-01-09shader_ir/memory: Implement u16 and u8 for STG and LDGReinUsesLisp
Using the same technique we used for u8 on LDG, implement u16. In the case of STG, load memory and insert the value we want to set into it with bitfieldInsert. Then set that value.
2020-01-08Merge pull request #3279 from ReinUsesLisp/vk-pipeline-cacheFernando Sahmkow
vk_pipeline_cache: Initial implementation
2020-01-07Merge pull request #3272 from bunnei/vi-close-layerbunnei
service: vi: Implement CloseLayer.
2020-01-06vk_pipeline_cache: Initial implementationReinUsesLisp
Given a pipeline key, this cache returns a pipeline abstraction (for graphics or compute).
2020-01-06vk_graphics_pipeline: Initial implementationReinUsesLisp
This abstractio represents the state of the 3D engine at a given draw. Instead of changing individual bits of the pipeline how it's done in APIs like D3D11, OpenGL and NVN; on Vulkan we are forced to put everything together into a single, immutable object. It takes advantage of the few dynamic states Vulkan offers.
2020-01-06vk_compute_pipeline: Initial implementationReinUsesLisp
This abstraction represents a Vulkan compute pipeline.
2020-01-06vk_pipeline_cache: Add file and define descriptor update template fillerReinUsesLisp
This function allows us to share code between compute and graphics pipelines compilation.
2020-01-06fixed_pipeline_state: Add depth clampReinUsesLisp
2020-01-06vk_rasterizer: Add placeholderReinUsesLisp
2020-01-06Merge pull request #3276 from ReinUsesLisp/pipeline-reqsbunnei
vk_update_descriptor/vk_renderpass_cache: Add pipeline cache dependencies
2020-01-06Merge pull request #3278 from ReinUsesLisp/vk-memory-managerbunnei
renderer_vulkan: Buffer cache, stream buffer and memory manager changes
2020-01-06vk_renderpass_cache: Initial implementationReinUsesLisp
The renderpass cache is used to avoid creating renderpasses on each draw. The hashed structure is not currently optimized.
2020-01-06vk_update_descriptor: Initial implementationReinUsesLisp
The update descriptor is used to store in flat memory a large chunk of staging data used to update descriptor sets through templates. It provides a push interface to easily insert descriptors following the current pipeline. The order used in the descriptor update template has to be implicitly followed. We can catch bugs here using validation layers.
2020-01-06vk_stream_buffer/vk_buffer_cache: Avoid halting and use generic cacheReinUsesLisp
The stream buffer before this commit once it was full (no more bytes to write before looping) waiting for all previous operations to finish. This was a temporary solution and had a noticeable performance penalty in performance (from what a profiler showed). To avoid this mark with fences usages of the stream buffer and once it loops wait for them to be signaled. On average this will never wait. Each fence knows where its usage finishes, resulting in a non-paged stream buffer. On the other side, the buffer cache is reimplemented using the generic buffer cache. It makes use of the staging buffer pool and the new stream buffer.
2020-01-06vk_memory_manager: Misc changesReinUsesLisp
* Allocate memory in discrete exponentially increasing chunks until the 128 MiB threshold. Allocations larger thant that increase linearly by 256 MiB (depending on the required size). This allows to use small allocations for small resources. * Move memory maps to a RAII abstraction. To optimize for debugging tools (like RenderDoc) users will map/unmap on usage. If this ever becomes a noticeable overhead (from my profiling it doesn't) we can transparently move to persistent memory maps without harming the API, getting optimal performance for both gameplay and debugging. * Improve messages on exceptional situations. * Fix typos "requeriments" -> "requirements". * Small style changes.
2020-01-06vk_buffer_cache: Temporarily remove buffer cacheReinUsesLisp
This is intended for a follow up commit to avoid circular dependencies.
2020-01-06Merge pull request #3277 from ReinUsesLisp/make-currentbunnei
yuzu/bootmanager: Remove {glx,wgl}MakeCurrent on SwapBuffers
2020-01-06yuzu/bootmanager: Remove {glx,wgl}MakeCurrent on SwapBuffersReinUsesLisp
MakeCurrent is a costly (according to Nsight's profiler it takes a tenth of a millisecond to complete), and we don't have a reason to call it because: - Qt no longer signals a warning if it's not called - yuzu no longer supports macOS
2020-01-06Merge pull request #3261 from degasus/page_tablebunnei
core/memory + arm/dynarmic: Use a global offset within our arm page table.
2020-01-06Merge pull request #3257 from degasus/no_busy_loopsbunnei
video_core: Block in WaitFence.
2020-01-05Merge pull request #3264 from ReinUsesLisp/vk-descriptor-poolFernando Sahmkow
vk_descriptor_pool: Initial implementation
2020-01-05Merge pull request #2945 from FernandoS27/fix-bcatbunnei
nifm: Only return that there's an internet connection when there's a BCATServer
2020-01-04Merge pull request #3258 from FernandoS27/shader-amendbunnei
Shader_IR: add the ability to amend code in the shader ir.
2020-01-04Shader_IR: Address FeedbackFernando Sahmkow
2020-01-04service: vi: Implement CloseLayer.bunnei
- Needed for Undertale.
2020-01-03Update src/video_core/renderer_vulkan/vk_descriptor_pool.cppRodrigo Locatti
Co-Authored-By: Mat M. <mathew1800@gmail.com>
2020-01-03Merge pull request #3247 from FernandoS27/remap-fixbunnei
NvServices: Correct Ioctl Remap.
2020-01-02yuzu: Remove Maxwell debuggerReinUsesLisp
This was carried from Citra and wasn't really used on yuzu. It also adds some runtime overhead. This commit removes it from yuzu's codebase.
2020-01-01Merge pull request #3243 from ReinUsesLisp/topologiesbunnei
maxwell_to_gl: Implement missing primitive topologies
2020-01-01vk_descriptor_pool: Initial implementationReinUsesLisp
Create a large descriptor pool where we allocate all our descriptors from. It has to be wide enough to support any pipeline, hence its large numbers. If the descritor pool is filled, we allocate more memory at that moment. This way we can take advantage of permissive drivers like Nvidia's that allocate more descriptors than what the spec requires.
2020-01-01core/memory + arm/dynarmic: Use a global offset within our arm page table.Markus Wick
This saves us two x64 instructions per load/store instruction. TODO: Clean up our memory code. We can use this optimization here as well.
2019-12-31Merge pull request #3239 from ReinUsesLisp/p2rbunnei
shader/p2r: Implement P2R Pr
2019-12-30Shader_IR: add the ability to amend code in the shader ir.Fernando Sahmkow
This commit introduces a mechanism by which shader IR code can be amended and extended. This useful for track algorithms where certain information can derived from before the track such as indexes to array samplers.
2019-12-30Merge pull request #3248 from ReinUsesLisp/vk-imageFernando Sahmkow
vk_image: Add an image object abstraction
2019-12-30vk_image: Avoid unnecesary equalsRodrigo Locatti
2019-12-30Merge pull request #3249 from ReinUsesLisp/vk-staging-buffer-poolFernando Sahmkow
vk_staging_buffer_pool: Add a staging pool for temporary operations
2019-12-30video_core: Block in WaitFence.Markus Wick
This function is called rarely and blocks quite often for a long time. So don't waste power and let the CPU sleep. This might also increase the performance as the other cores might be allowed to clock higher.
2019-12-29vk_staging_buffer_pool: Initialize last epoch to zeroRodrigo Locatti
2019-12-28Merge pull request #3250 from ReinUsesLisp/empty-fragmentFernando Sahmkow
gl_rasterizer: Allow rendering without fragment shader
2019-12-26Merge pull request #3228 from ReinUsesLisp/ptpbunnei
shader/texture: Implement AOFFI and PTP for TLD4 and TLD4S
2019-12-26gl_rasterizer: Allow rendering without fragment shaderReinUsesLisp
Rendering without a fragment shader is usually used in depth-only passes.
2019-12-25vk_staging_buffer_pool: Add a staging pool for temporary operationsReinUsesLisp
The job of this abstraction is to provide staging buffers for temporary operations. Think of image uploads or buffer uploads to device memory. It automatically deletes unused buffers.
2019-12-25vk_image: Add an image object abstractionReinUsesLisp
This object's job is to contain an image and manage its transitions. Since Nvidia hardware doesn't know what a transition is but Vulkan requires them anyway, we have to state track image subresources individually. To avoid the overhead of tracking each subresource in images with many subresources (think of cubemap arrays with several mipmaps), this commit tracks when subresources have diverged. As long as this doesn't happen we can check the state of the first subresource (that will be shared with all subresources) and update accordingly. Image transitions are deferred to the scheduler command buffer.
2019-12-25NvServices: Correct Ioctl Remap.Fernando Sahmkow
This commit corrects a padding value in Ioctl Remap that was actually an offset to the mapping address.
2019-12-25Merge pull request #3244 from ReinUsesLisp/vk-fpsFernando Sahmkow
fixed_pipeline_state: Define structure and loaders
2019-12-24Merge pull request #3236 from ReinUsesLisp/rasterize-enablebunnei
gl_rasterizer: Implement RASTERIZE_ENABLE
2019-12-24fixed_pipeline_state: Define symetric operator!= and mark as noexceptReinUsesLisp
Marks as noexcept Hash, operator== and operator!= for consistency.
2019-12-22fixed_pipeline_state: Define structure and loadersReinUsesLisp
The intention behind this hasheable structure is to describe the state of fixed function pipeline state that gets compiled to a single graphics pipeline state object. This is all dynamic state in OpenGL but Vulkan wants it in an immutable state, even if hardware can edit it freely. In this commit the structure is defined in an optimized state (it uses booleans, has paddings and many data entries that can be packed to single integers). This is intentional as an initial implementation that is easier to debug, implement and review. It will be optimized in later stages, or it might change if Vulkan gets more dynamic states.
2019-12-22maxwell_3d: Add depth bounds registersReinUsesLisp
2019-12-22maxwell_to_gl: Implement missing primitive topologiesReinUsesLisp
Many of these topologies are exclusively available in OpenGL.