Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Merge pull request #3808 from ReinUsesLisp/wait-for-idle | bunnei | 2020-05-03 | 1 | -1/+21 |
|\ | | | | | {maxwell_3d,buffer_cache}: Implement memory barriers using 3D registers | ||||
| * | {maxwell_3d,buffer_cache}: Implement memory barriers using 3D registers | ReinUsesLisp | 2020-04-28 | 1 | -1/+21 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | Drop MemoryBarrier from the buffer cache and use Maxwell3D's register WaitForIdle. To implement this on OpenGL we just call glMemoryBarrier with the necessary bits. Vulkan lacks this synchronization primitive, so we set an event and immediately wait for it. This is not a pretty solution, but it's what Vulkan can do without submitting the current command buffer to the queue (which ends up being more expensive on the CPU). | ||||
* | | Merge pull request #3732 from lioncash/header | bunnei | 2020-05-02 | 1 | -2/+0 |
|\ \ | | | | | | | vulkan: Remove unnecessary includes | ||||
| * | | vulkan: Remove unnecessary includes | Lioncash | 2020-04-29 | 1 | -2/+0 |
| |/ | | | | | | | | | | | | | Reduces some header churn and reduces rebuilds when some header internals change. While we're at it we can also resolve a missing include in buffer_cache. | ||||
* | | Merge pull request #3809 from ReinUsesLisp/empty-index | bunnei | 2020-05-02 | 1 | -0/+3 |
|\ \ | | | | | | | vk_rasterizer: Skip index buffer setup when vertices are zero | ||||
| * | | vk_rasterizer: Skip index buffer setup when vertices are zero | ReinUsesLisp | 2020-04-28 | 1 | -0/+3 |
| |/ | | | | | | | | | | | | | | | | | Xenoblade 2 invokes a draw call with zero vertices. This is likely due to indirect drawing (glDrawArraysIndirect). This causes a crash in the staging buffer pool when trying to create a buffer with a size of zero. To workaround this, skip index buffer setup entirely when the number of indices is zero. | ||||
* | | Merge pull request #3693 from ReinUsesLisp/clean-samplers | bunnei | 2020-05-02 | 1 | -7/+6 |
|\ \ | | | | | | | shader/texture: Support multiple unknown sampler properties | ||||
| * | | shader_ir: Turn classes into data structures | ReinUsesLisp | 2020-04-23 | 1 | -7/+6 |
| | | | |||||
* | | | Merge pull request #3805 from ReinUsesLisp/preserve-contents | bunnei | 2020-04-30 | 1 | -2/+2 |
|\ \ \ | |_|/ |/| | | texture_cache: Reintroduce preserve_contents accurately | ||||
| * | | texture_cache: Reintroduce preserve_contents accurately | ReinUsesLisp | 2020-04-27 | 1 | -2/+2 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 94b0e2e5dae4e0bd0021ac2d8fe1ff904a93ee69. preserve_contents proved to be a meaningful optimization. This commit reintroduces it but properly implemented on OpenGL. We have to make sure the clear removes all the previous contents of the image. It's not currently implemented on Vulkan because we can do smart things there that's preferred to be introduced in a separate commit. | ||||
* | | | Merge pull request #3766 from ReinUsesLisp/renderpass-cache-key | Fernando Sahmkow | 2020-04-27 | 1 | -22/+29 |
|\ \ \ | |/ / |/| | | vk_renderpass_cache: Pack renderpass cache key and unify keys | ||||
| * | | vk_rasterizer: Pack texceptions and color formats on invalid formats | ReinUsesLisp | 2020-04-25 | 1 | -4/+18 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sometimes for unknown reasons NVN games can bind a render target format of 0. This may be a yuzu bug. With the commits before this the formats were specified without being "packed", assuming all formats and texceptions will be written like in the color_attachments vector. To address this issue, iterate all render targets and pack them as they are valid. This way they will match color_attachments. - Fixes validation errors and graphical issues on Breath of the Wild. | ||||
| * | | vk_rasterizer: Fix framebuffer creation validation errors | ReinUsesLisp | 2020-04-23 | 1 | -2/+4 |
| | | | | | | | | | | | | Framebuffer creation was ignoring the number of color attachments. | ||||
| * | | vk_pipeline_cache: Unify pipeline cache keys into a single operation | ReinUsesLisp | 2020-04-23 | 1 | -6/+10 |
| | | | | | | | | | | | | | | | This allows us to call Common::CityHash and std::memcmp only once for GraphicsPipelineCacheKey. While we are at it, do the same for compute. | ||||
| * | | vk_renderpass_cache: Pack renderpass cache key to 12 bytes | ReinUsesLisp | 2020-04-23 | 1 | -21/+8 |
| |/ | |||||
* | | Merge pull request #3753 from ReinUsesLisp/ac-vulkan | Rodrigo Locatti | 2020-04-26 | 1 | -6/+36 |
|\ \ | |/ |/| | {gl,vk}_rasterizer: Add lazy default buffer maker and use it for empty buffers | ||||
| * | vk_rasterizer: Add lazy default buffer maker and use it for empty buffers | ReinUsesLisp | 2020-04-22 | 1 | -3/+33 |
| | | | | | | | | | | | | | | | | | | | | Introduce a default buffer getter that lazily constructs an empty buffer. This is intended to match OpenGL's buffer 0. Use this for disabled vertex and uniform buffers. While we are at it, include vertex buffer usages for staging buffers to silence validation errors. | ||||
| * | gl_rasterizer: Fix buffers without size | ReinUsesLisp | 2020-04-22 | 1 | -3/+3 |
| | | | | | | | | | | | | | | | | | | | | | | On NVN buffers can be enabled but have no size. According to deko3d and the behavior we see in Animal Crossing: New Horizons these buffers get the special address of 0x1000 and limit themselves to 0xfff. Implement buffers without a size by binding a null buffer to OpenGL without a side. https://github.com/devkitPro/deko3d/blob/1d1930beea093b5a663419e93b0649719a3ca5da/source/maxwell/gpu_3d_vbo.cpp#L62-L63 | ||||
* | | Merge pull request #3677 from FernandoS27/better-sync | bunnei | 2020-04-23 | 1 | -1/+54 |
|\ \ | | | | | | | Introduce Predictive Flushing and Improve ASYNC GPU | ||||
| * | | Async GPU: Correct flushing behavior to be similar to old async GPU behavior. | Fernando Sahmkow | 2020-04-22 | 1 | -0/+4 |
| | | | |||||
| * | | Address Feedback. | Fernando Sahmkow | 2020-04-22 | 1 | -1/+1 |
| | | | |||||
| * | | vk_fence_manager: Initial implementation | ReinUsesLisp | 2020-04-22 | 1 | -12/+4 |
| | | | |||||
| * | | OpenGL: Guarantee writes to Buffers. | Fernando Sahmkow | 2020-04-22 | 1 | -2/+0 |
| | | | |||||
| * | | GPU: Implement Flush Requests for Async mode. | Fernando Sahmkow | 2020-04-22 | 1 | -0/+4 |
| | | | |||||
| * | | FenceManager: Manage syncpoints and rename fences to semaphores. | Fernando Sahmkow | 2020-04-22 | 1 | -2/+14 |
| | | | |||||
| * | | Rasterizer: Document SignalFence & ReleaseFences and setup skeletons on Vulkan. | Fernando Sahmkow | 2020-04-22 | 1 | -0/+25 |
| | | | |||||
| * | | ThreadManager: Sync async reads on accurate gpu. | Fernando Sahmkow | 2020-04-22 | 1 | -0/+4 |
| | | | |||||
| * | | BufferCache: Implement OnCPUWrite and SyncGuestHost | Fernando Sahmkow | 2020-04-22 | 1 | -2/+2 |
| | | | |||||
| * | | GPU: Refactor synchronization on Async GPU | Fernando Sahmkow | 2020-04-22 | 1 | -0/+14 |
| |/ | |||||
* | | Merge pull request #3653 from ReinUsesLisp/nsight-aftermath | Fernando Sahmkow | 2020-04-22 | 1 | -10/+0 |
|\ \ | |/ |/| | renderer_vulkan: Integrate Nvidia Nsight Aftermath on Windows | ||||
| * | renderer_vulkan: Remove Nvidia checkpoints | ReinUsesLisp | 2020-04-13 | 1 | -10/+0 |
| | | |||||
* | | Merge pull request #3718 from ReinUsesLisp/better-pipeline-state | Rodrigo Locatti | 2020-04-21 | 1 | -10/+10 |
|\ \ | | | | | | | fixed_pipeline_state: Pack structure, use memcmp and CityHash on it | ||||
| * | | fixed_pipeline_state: Pack attribute state | ReinUsesLisp | 2020-04-19 | 1 | -10/+10 |
| | | | | | | | | | | | | Reduce FixedPipelineState's size from 1384 to 664 bytes | ||||
* | | | Initialize quad_indexed_pass before uint8_pass | Amit Prakash Ambasta | 2020-04-20 | 1 | -1/+1 |
| | | | | | | | | | Fixes Werror=reorder in gcc | ||||
* | | | vk_compute_pass: Implement indexed quads | ReinUsesLisp | 2020-04-17 | 1 | -4/+13 |
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | Implement indexed quads (GL_QUADS used with glDrawElements*) with a compute pass conversion. The compute shader converts from uint8/uint16/uint32 indices to uint32. The format is passed through push constants to avoid having different variants of the same shader. - Used by Fast RMX - Used by Xenoblade Chronicles 2 (it still has graphical due to synchronization issues on Vulkan) | ||||
* | | Merge pull request #3600 from ReinUsesLisp/no-pointer-buf-cache | Fernando Sahmkow | 2020-04-17 | 1 | -17/+13 |
|\ \ | | | | | | | buffer_cache: Return handles instead of pointer to handles | ||||
| * | | buffer_cache: Return handles instead of pointer to handles | ReinUsesLisp | 2020-04-16 | 1 | -17/+13 |
| |/ | | | | | | | | | | | | | | | | | | | | | The original idea of returning pointers is that handles can be moved. The problem is that the implementation didn't take that in mind and made everything harder to work with. This commit drops pointer to handles and returns the handles themselves. While it is still true that handles can be invalidated, this way we get an old handle instead of a dangling pointer. This problem can be solved in the future with sparse buffers. | ||||
* / | vk_rasterizer: Default to 1 viewports with a size of 0 | ReinUsesLisp | 2020-04-14 | 1 | -3/+6 |
|/ | | | | Silence validation layer errors. | ||||
* | Merge pull request #3636 from ReinUsesLisp/drop-vk-hpp | Rodrigo Locatti | 2020-04-13 | 1 | -138/+147 |
|\ | | | | | renderer_vulkan: Drop Vulkan-Hpp | ||||
| * | renderer_vulkan: Drop Vulkan-Hpp | ReinUsesLisp | 2020-04-11 | 1 | -138/+147 |
| | | |||||
* | | texture_cache: Remove preserve_contents | ReinUsesLisp | 2020-04-11 | 1 | -2/+2 |
|/ | | | | | | | preserve_contents was always true. We can't assume we don't have to preserve clears because scissored and color masked clears exist. This removes preserve_contents and assumes it as true at all times. | ||||
* | VkRasterizer: Eliminate Legacy code. | Fernando Sahmkow | 2020-04-09 | 1 | -1/+0 |
| | |||||
* | Memory: Address Feedback. | Fernando Sahmkow | 2020-04-08 | 1 | -2/+2 |
| | |||||
* | Shader/Pipeline Cache: Use VAddr instead of physical memory for addressing. | Fernando Sahmkow | 2020-04-06 | 1 | -2/+1 |
| | |||||
* | Query Cache: Use VAddr instead of physical memory for adressing. | Fernando Sahmkow | 2020-04-06 | 1 | -2/+2 |
| | |||||
* | Buffer Cache: Use vAddr instead of physical memory. | Fernando Sahmkow | 2020-04-06 | 1 | -2/+2 |
| | |||||
* | Texture Cache: Use vAddr instead of physical memory for caching. | Fernando Sahmkow | 2020-04-06 | 1 | -4/+3 |
| | |||||
* | GPU: Setup Flush/Invalidate to use VAddr instead of CacheAddr | Fernando Sahmkow | 2020-04-06 | 1 | -10/+18 |
| | |||||
* | vk_rasterizer: Remove unused variable | ReinUsesLisp | 2020-03-19 | 1 | -2/+0 |
| | |||||
* | Merge pull request #3518 from ReinUsesLisp/scissor-clears | Mat M | 2020-03-17 | 1 | -40/+46 |
|\ | | | | | vk_rasterizer: Implement scissor clears and layered clears | ||||
| * | vk_rasterizer: Implement layered clears | ReinUsesLisp | 2020-03-15 | 1 | -2/+2 |
| | | |||||
| * | vk_rasterizer: Reimplement clears with vkCmdClearAttachments | ReinUsesLisp | 2020-03-15 | 1 | -40/+46 |
| | | |||||
* | | vk_rasterizer: Fix vertex range assert | ReinUsesLisp | 2020-03-15 | 1 | -1/+1 |
|/ | | | | | End can be equal to start in CalculateVertexArraysSize. This is quite common when the vertex size is zero. | ||||
* | vk_rasterizer: Implement transform feedback binding zero | ReinUsesLisp | 2020-03-13 | 1 | -0/+42 |
| | |||||
* | Merge pull request #3483 from namkazt/patch-1 | Fernando Sahmkow | 2020-03-13 | 1 | -1/+1 |
|\ | | | | | vk_rasterizer: fix mistype on SetupGraphicsImages | ||||
| * | vk_reasterizer: fix mistype on SetupGraphicsImages | Nguyen Dac Nam | 2020-03-08 | 1 | -1/+1 |
| | | | | | | This should use Maxwell3D engine. Fixed some GPU error on Kirby and maybe other games. | ||||
* | | Merge pull request #3480 from ReinUsesLisp/vk-disabled-ubo | Fernando Sahmkow | 2020-03-13 | 1 | -0/+7 |
|\ \ | | | | | | | vk_rasterizer: Support disabled uniform buffers | ||||
| * | | vk_rasterizer: Support disabled uniform buffers | ReinUsesLisp | 2020-03-06 | 1 | -0/+7 |
| |/ | |||||
* | | Merge pull request #3301 from ReinUsesLisp/state-tracker | Rodrigo Locatti | 2020-03-09 | 1 | -37/+32 |
|\ \ | |/ |/| | video_core: Remove gl_state and use a state tracker based on dirty flags | ||||
| * | vk_rasterizer: Pass Maxwell registers to dynamic updates | ReinUsesLisp | 2020-02-28 | 1 | -20/+15 |
| | | |||||
| * | vk_state_tracker: Implement dirty flags for stencil properties | ReinUsesLisp | 2020-02-28 | 1 | -0/+3 |
| | | |||||
| * | vk_state_tracker: Implement dirty flags for depth bounds | ReinUsesLisp | 2020-02-28 | 1 | -0/+3 |
| | | |||||
| * | vk_state_tracker: Implement dirty flags for blend constants | ReinUsesLisp | 2020-02-28 | 1 | -0/+3 |
| | | |||||
| * | vk_state_tracker: Implement dirty flags for depth bias | ReinUsesLisp | 2020-02-28 | 1 | -0/+3 |
| | | |||||
| * | vk_state_tracker: Implement dirty flags for scissors | ReinUsesLisp | 2020-02-28 | 1 | -0/+3 |
| | | |||||
| * | vk_state_tracker: Initial implementation | ReinUsesLisp | 2020-02-28 | 1 | -3/+14 |
| | | | | | | | | Add support for render targets and viewports. | ||||
| * | gl_rasterizer: Remove dirty flags | ReinUsesLisp | 2020-02-28 | 1 | -27/+1 |
| | | |||||
* | | Merge pull request #3451 from ReinUsesLisp/indexed-textures | bunnei | 2020-03-05 | 1 | -7/+14 |
|\ \ | |/ |/| | vk_shader_decompiler: Implement indexed textures | ||||
| * | vk_shader_decompiler: Implement indexed textures | ReinUsesLisp | 2020-02-24 | 1 | -7/+14 |
| | | | | | | | | | | | | | | Implement accessing textures through an index. It uses the same interface as OpenGL, the main difference is that Vulkan bindings are forced to be arrayed (the binding index doesn't change for stacked textures in SPIR-V). | ||||
* | | Merge pull request #3425 from ReinUsesLisp/layered-framebuffer | bunnei | 2020-02-24 | 1 | -8/+9 |
|\ \ | |/ |/| | texture_cache: Implement layered framebuffer attachments | ||||
| * | texture_cache: Implement layered framebuffer attachments | ReinUsesLisp | 2020-02-16 | 1 | -8/+9 |
| | | | | | | | | | | | | Layered framebuffer attachments is a feature that allows applications to write attach layered textures to a single attachment. What layer the fragments are written to is decided from the shader using gl_Layer. | ||||
* | | Merge pull request #3414 from ReinUsesLisp/maxwell-3d-draw | bunnei | 2020-02-19 | 1 | -10/+0 |
|\ \ | | | | | | | maxwell_3d: Unify draw methods | ||||
| * | | maxwell_3d: Unify draw methods | ReinUsesLisp | 2020-02-14 | 1 | -10/+0 |
| |/ | | | | | | | | | Pass instanced state of a draw invocation as an argument instead of having two separate virtual methods. | ||||
* / | vk_query_cache: Implement generic query cache on Vulkan | ReinUsesLisp | 2020-02-14 | 1 | -1/+20 |
|/ | |||||
* | vk_rasterizer: Use noexcept variants of std::bitset | ReinUsesLisp | 2020-02-04 | 1 | -4/+5 |
| | | | | Removes bounds checking from "texceptions" instances. | ||||
* | vk_rasterizer: Address feedback | ReinUsesLisp | 2020-01-18 | 1 | -22/+28 |
| | |||||
* | vk_rasterizer: Implement Vulkan's rasterizer | ReinUsesLisp | 2020-01-17 | 1 | -0/+1135 |
This abstraction is Vulkan's equivalent to OpenGL's rasterizer. It takes care of joining all parts of the backend and rendering accordingly on demand. |