[Vulkan] Implement tiled_shared_memory for resolution scaling

Adds support for >3x resolution scaling to vulkan by implementing
sparse scaled resolve similar to the d3d12 implementation.
This commit is contained in:
Herman S.
2025-12-22 11:58:13 +09:00
parent a092551735
commit 5897de3eaf
10 changed files with 508 additions and 77 deletions

View File

@@ -69,6 +69,14 @@ class TextureCache {
// Returns whether the actual scale is not smaller than the requested one.
static bool GetConfigDrawResolutionScale(uint32_t& x_out, uint32_t& y_out);
// Clamps the resolution scale based on device capabilities.
// sparse_bind_supported: whether the device supports sparse/tiled resources
// virtual_address_bits: max bits for virtual address per resource (0 = no
// limit) Returns true if scale was not clamped.
static bool ClampDrawResolutionScaleToMaxSupported(
uint32_t& scale_x, uint32_t& scale_y, bool sparse_bind_supported,
uint32_t virtual_address_bits_per_resource = 0);
uint32_t draw_resolution_scale_x() const { return draw_resolution_scale_x_; }
uint32_t draw_resolution_scale_y() const { return draw_resolution_scale_y_; }