From 11c37de69568ad1de4b82aa130ea445b10f42695 Mon Sep 17 00:00:00 2001 From: iwubcode Date: Fri, 31 May 2024 23:19:51 -0500 Subject: [PATCH] VideoCommon: update custom pipeline to use a a texture's sampler if the texture is in use --- .../Runtime/CustomPipeline.cpp | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/CustomPipeline.cpp b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/CustomPipeline.cpp index 46ca20cc385c..473cc066906e 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/CustomPipeline.cpp +++ b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/CustomPipeline.cpp @@ -306,7 +306,7 @@ void CustomPipeline::UpdatePixelData( if (texture_asset->m_texture) { g_gfx->SetTexture(sampler_index, texture_asset->m_texture.get()); - g_gfx->SetSamplerState(sampler_index, RenderState::GetLinearSamplerState()); + g_gfx->SetSamplerState(sampler_index, texture_data->m_sampler); } else { @@ -336,17 +336,20 @@ void CustomPipeline::UpdatePixelData( first_slice.m_levels[0].format, 0, texture_type); texture_asset->m_texture = g_gfx->CreateTexture( texture_config, fmt::format("Custom shader texture '{}'", property.m_code_name)); - for (std::size_t slice_index = 0; slice_index < texture_data->m_texture.m_slices.size(); - slice_index++) + if (texture_asset->m_texture) { - auto& slice = texture_data->m_texture.m_slices[slice_index]; - for (u32 level_index = 0; level_index < static_cast(slice.m_levels.size()); - ++level_index) + for (std::size_t slice_index = 0; slice_index < texture_data->m_texture.m_slices.size(); + slice_index++) { - auto& level = slice.m_levels[level_index]; - texture_asset->m_texture->Load(level_index, level.width, level.height, - level.row_length, level.data.data(), level.data.size(), - static_cast(slice_index)); + auto& slice = texture_data->m_texture.m_slices[slice_index]; + for (u32 level_index = 0; level_index < static_cast(slice.m_levels.size()); + ++level_index) + { + auto& level = slice.m_levels[level_index]; + texture_asset->m_texture->Load(level_index, level.width, level.height, + level.row_length, level.data.data(), + level.data.size(), static_cast(slice_index)); + } } } }