From c2bc2ccd23cfabc2a6d8ac0295fef7b669206e28 Mon Sep 17 00:00:00 2001 From: iwubcode Date: Sat, 1 Jun 2024 23:21:04 -0500 Subject: VideoCommon: pull texture sampler out of texture cache so that it can be used in other places in the future --- Source/Core/VideoCommon/VertexManagerBase.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'Source/Core/VideoCommon/VertexManagerBase.cpp') diff --git a/Source/Core/VideoCommon/VertexManagerBase.cpp b/Source/Core/VideoCommon/VertexManagerBase.cpp index b51cfa19e0..02edb56d35 100644 --- a/Source/Core/VideoCommon/VertexManagerBase.cpp +++ b/Source/Core/VideoCommon/VertexManagerBase.cpp @@ -563,13 +563,19 @@ void VertexManagerBase::Flush() const auto used_textures = UsedTextures(); std::vector texture_names; Common::SmallVector texture_units; + std::array samplers; if (!m_cull_all) { if (!g_ActiveConfig.bGraphicMods) { for (const u32 i : used_textures) { - g_texture_cache->Load(TextureInfo::FromStage(i)); + const auto cache_entry = g_texture_cache->Load(TextureInfo::FromStage(i)); + if (!cache_entry) + continue; + const float custom_tex_scale = cache_entry->GetWidth() / float(cache_entry->native_width); + samplers[i] = TextureCacheBase::GetSamplerState( + i, custom_tex_scale, cache_entry->is_custom_tex, cache_entry->has_arbitrary_mips); } } else @@ -585,6 +591,10 @@ void VertexManagerBase::Flush() texture_names.push_back(cache_entry->texture_info_name); texture_units.push_back(i); } + + const float custom_tex_scale = cache_entry->GetWidth() / float(cache_entry->native_width); + samplers[i] = TextureCacheBase::GetSamplerState( + i, custom_tex_scale, cache_entry->is_custom_tex, cache_entry->has_arbitrary_mips); } } } @@ -633,7 +643,7 @@ void VertexManagerBase::Flush() // Texture loading can cause palettes to be applied (-> uniforms -> draws). // Palette application does not use vertices, only a full-screen quad, so this is okay. // Same with GPU texture decoding, which uses compute shaders. - g_texture_cache->BindTextures(used_textures); + g_texture_cache->BindTextures(used_textures, samplers); if (PerfQueryBase::ShouldEmulate()) g_perf_query->EnableQuery(bpmem.zcontrol.early_ztest ? PQG_ZCOMP_ZCOMPLOC : PQG_ZCOMP); -- cgit v1.2.3