Skip to content

Commit

Permalink
GS/HW: Limit GetValidSize height and width.
Browse files Browse the repository at this point in the history
Max texture size limit is 2048.
This should never happen but if it does clamp it
  • Loading branch information
lightningterror committed Jan 20, 2025
1 parent 23fd57f commit b74d056
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion pcsx2/GS/Renderers/HW/GSRendererHW.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -949,6 +949,17 @@ GSVector2i GSRendererHW::GetValidSize(const GSTextureCache::Source* tex)
}
}

// Make sure sizes are within max limit of 2048,
// this shouldn't happen but if it does it needs to be addressed,
// clamp the size so at least it doesn't cause a crash.
constexpr int valid_max_size = 2048;
if ((width > valid_max_size) || (height > valid_max_size))
{
Console.Warning("Warning: GetValidSize out of bounds, X:%d Y:%d", width, height);
width = std::min(width, valid_max_size);
height = std::min(height, valid_max_size);
}

return GSVector2i(width, height);
}

Expand Down Expand Up @@ -2728,7 +2739,7 @@ void GSRendererHW::Draw()
}

rt = g_texture_cache->CreateTarget(FRAME_TEX0, t_size, GetValidSize(src), (scale_draw < 0 && is_possible_mem_clear != ClearType::NormalClear) ? src->m_from_target->GetScale() : target_scale, GSTextureCache::RenderTarget, true,
fm, false, force_preload, preserve_rt_color | possible_shuffle, m_r, src);
fm, false, force_preload, preserve_rt_color || possible_shuffle, m_r, src);
if (!rt) [[unlikely]]
{
GL_INS("ERROR: Failed to create FRAME target, skipping.");
Expand Down

0 comments on commit b74d056

Please sign in to comment.