Commit Graph

50 Commits (92bcf64fe81b7e5a3ef23c9bdad60013cd0225d6)

Author SHA1 Message Date
Stenzek 92bcf64fe8
VulkanDevice: Refactor present failure handling
Shouldn't deadlock anymore...
1 year ago
Stenzek 0234137be4
VulkanDevice: Use VK_EXT_surface_maintenance1
NVIDIA drivers return a minImageCount of 3 with the base surface query
capability, but require 4 images for XWayland in immediate present mode.
1 year ago
Stenzek eb46142ee7
GPUDevice: Extract swap chain to separate class 1 year ago
Stenzek d981dc7471
MetalDevice: Implement pipeline cache 1 year ago
Stenzek 6f31e562a0
MetalDevice: Implement timed present 1 year ago
Stenzek 4c31218d2b
GPUDevice: Add API version field
Also tie shader caches to API version and device LUID. That way we don't
have tons of cache files, and they're regenerated if the GPU/driver
changes.
1 year ago
Stenzek ac5a2a153a
GPUDevice: Remove BeginPresent() skip parameter
It wasn't used - System does its own present skipping.
1 year ago
Stenzek 4b0c1fdbf2
GPUDevice: Add recovery from lost device 1 year ago
Stenzek 1c1b82ed66
GPUDevice: Purge threaded presentation
Worse frame pacing, and GPU thread (when I finish it) will give
significantly faster performance on mobile anyway.
1 year ago
Stenzek 7f4e5d55db
Misc: Update copyright headers 1 year ago
Stenzek 667d1bf7c8
GPUDevice: Use CompressHelpers
And compress the pipeline cache. Saves a fair bit of disk space.
1 year ago
Stenzek 34df233a95
VulkanDevice: Enable VK_KHR_maintenance4 and 5 1 year ago
Stenzek 4f16cb61b4
GPUDevice: Expose swap chain clear colour 1 year ago
Stenzek 1006fa00da
GPUDevice: Add support for Raster Ordered Views 1 year ago
Stenzek ba6b65401d
GPUDevice: Improve pipeline error reporting 1 year ago
Stenzek 00ccea84b8
GPUDevice: Replace remaining StdStringFromFromFormat() with fmt 1 year ago
Stenzek 3749b812a3
GPUDevice: Add ExecuteAndWaitForGPUIdle() 1 year ago
Stenzek 4b61a3cbf3
Qt: Unrestrict resolution scale up to device limits 1 year ago
Stenzek 9ef7e8c5d0
GPU/HW: Use GSVector instead of Rectangle 1 year ago
Stenzek 1797050f97
VulkanDevice: Release swap chain images on resize 1 year ago
Stenzek ef69c31e9f
GPUDevice: Support transpiling shaders at compile time
And use it for GLSL postprocessing shaders.
1 year ago
Stenzek f41c238c53
VulkanDevice: Disable VK_KHR_dynamic_rendering_local_read on AMD
Like everything else on RDNA3, it appears to be broken and causes GPU
hangs/resets.
1 year ago
Stenzek 0f9a255093
System: Fallback to FIFO on AMD (no mailbox support) 1 year ago
Stenzek 42a5fe0a6e
GPU: Further improve vsync handling 1 year ago
Stenzek 6cad97b404
GPUDevice: Make vsync actually tear-free
Apparently users prefer stutter over tearing...
1 year ago
Stenzek ca3cfbaa99
Misc: Pass string_view by value 2 years ago
Stenzek cbe95b281a
VulkanDevice: Backport buggy NVIDIA driver workarounds from PCSX2 2 years ago
Stenzek e646096180
VulkanDevice: Fix validation errors 2 years ago
Stenzek 7344661801
GPUDevice: Split submission and presentation 2 years ago
Stenzek 88270771da
System: Combine VRR and Optimal Frame Pacing
GSync/FreeSync display users should:
 - DISABLE VSync.
 - ENABLE Optimal Frame Pacing.
2 years ago
Stenzek 41cc60e87e
VulkanDevice: Use vkCmdClearAttachments() to avoid render pass restart 2 years ago
Stenzek 72ab669e70
GPUDevice: Add support for feedback loops 2 years ago
Stenzek de1338cbbc
VulkanDevice: Add additional semaphore on swap chain
We don't actually need +1 semaphores, or, more than one really.
But, the validation layer gets cranky if we don't fence wait before the next image acquire.
So, add an additional semaphore to ensure that we're never acquiring before fence waiting.
2 years ago
Stenzek a1d7d214cf
GPUDevice: Add support for VRR and relaxed vsync 2 years ago
Stenzek b060edc61b
VulkanDevice: Actually use all the swap chain semaphores 2 years ago
Stenzek f936a36c85
GPUDevice: Add GPUDownloadTexture
Which can also be based in host/client memory.
Use it for screenshots and VRAM downloads.
2 years ago
Wunkolo 4309d8ebf3
VulkanDevice: Add `TryImportHostMemory`
Utilizing `VK_EXT_external_memory_host`, attempt to import the host-pointer into a `VkBuffer`, `VkDeviceMemory`, and an offset to the start of the data. When the page size matches the import alignment, then it is possible to import an entire range of memory from the host directly into a vulkan-side buffer to read and write into.
2 years ago
Wunkolo 0ce1149e41
VulkanDevice: Optional `VK_EXT_external_memory_host` enablement
Allows usage of this extension only when the import-pointer-alignment
matches that of the hosts' page size.
2 years ago
Stenzek bcf7f55b93
VulkanDevice: Fix potential race between submit and main thread 2 years ago
Stenzek f66866ed73
GPUDevice: Use Error class for initialization errors 2 years ago
Stenzek 62d2f12236
Settings: Expose exclusive fullscreen control 2 years ago
Stenzek 46e0afd2d4
VulkanDevice: Actually allow enumeration of 1.0 device 2 years ago
Stenzek c233eb53ab
VulkanDevice: Potentially re-enable Vulkan 1.0 support 2 years ago
Stenzek c20805f2be
VulkanDevice: Work around some mobile driver issues 2 years ago
Stenzek a907e1f550
GPUDevice: Pool textures 2 years ago
Stenzek 3b2c70cda5
GPUDevice: Get rid of framebuffer abstraction 2 years ago
Stenzek e382f2b64a
Settings: Add option to disable DSB/fbfetch 2 years ago
Stenzek b678fcd874 GPUDevice: Move debug messages over to fmt 2 years ago
Stenzek 605aa3c53a Misc: Swap gsl::span for std::span 2 years ago
Stenzek e3d9ba4c99 Rewrite host GPU abstraction
- Don't have to repeat the same thing for 4 renderers.
 - Add native Metal renderer.
2 years ago