diff --git a/src/video_core/texture_cache/texture_cache.cpp b/src/video_core/texture_cache/texture_cache.cpp index 93791d46..786f9cf5 100644 --- a/src/video_core/texture_cache/texture_cache.cpp +++ b/src/video_core/texture_cache/texture_cache.cpp @@ -64,10 +64,9 @@ static constexpr u64 PageShift = 12; TextureCache::TextureCache(const Vulkan::Instance& instance_, Vulkan::Scheduler& scheduler_) : instance{instance_}, scheduler{scheduler_}, - staging{instance, scheduler, - vk::BufferUsageFlagBits::eTransferSrc | vk::BufferUsageFlagBits::eStorageBuffer, - StreamBufferSize, Vulkan::BufferType::Upload}, - tile_manager{instance, scheduler, *this, staging} { + staging{instance, scheduler, vk::BufferUsageFlagBits::eTransferSrc, StreamBufferSize, + Vulkan::BufferType::Upload}, + tile_manager{instance, scheduler, *this} { #ifndef _WIN64 sigset_t signal_mask; diff --git a/src/video_core/texture_cache/tile_manager.cpp b/src/video_core/texture_cache/tile_manager.cpp index 48880226..decae2d1 100644 --- a/src/video_core/texture_cache/tile_manager.cpp +++ b/src/video_core/texture_cache/tile_manager.cpp @@ -202,9 +202,14 @@ const DetilerContext* TileManager::GetDetiler(const Image& image) const { return nullptr; } +static constexpr vk::BufferUsageFlags StagingFlags = vk::BufferUsageFlagBits::eTransferDst | + vk::BufferUsageFlagBits::eUniformBuffer | + vk::BufferUsageFlagBits::eStorageBuffer; + TileManager::TileManager(const Vulkan::Instance& instance, Vulkan::Scheduler& scheduler, - TextureCache& texture_cache, Vulkan::StreamBuffer& staging) - : instance{instance}, scheduler{scheduler}, texture_cache{texture_cache}, staging{staging} { + TextureCache& texture_cache) + : instance{instance}, scheduler{scheduler}, texture_cache{texture_cache}, + staging{instance, scheduler, StagingFlags, 64_MB} { static const std::array detiler_shaders{ HostShaders::DETILE_M8X1_COMP, diff --git a/src/video_core/texture_cache/tile_manager.h b/src/video_core/texture_cache/tile_manager.h index b8c10a5c..d8c3cfaf 100644 --- a/src/video_core/texture_cache/tile_manager.h +++ b/src/video_core/texture_cache/tile_manager.h @@ -32,7 +32,7 @@ struct DetilerContext { class TileManager { public: TileManager(const Vulkan::Instance& instance, Vulkan::Scheduler& scheduler, - TextureCache& texture_cache, Vulkan::StreamBuffer& staging); + TextureCache& texture_cache); ~TileManager(); bool TryDetile(Image& image); @@ -44,7 +44,7 @@ private: const Vulkan::Instance& instance; Vulkan::Scheduler& scheduler; TextureCache& texture_cache; - Vulkan::StreamBuffer& staging; + Vulkan::StreamBuffer staging; std::array detilers; };