mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-05 06:21:26 +12:00
rsx/blit-engine: Account for a rare corner case
- It is possible to have a RTV<->DSV transfer with compatible-sized formats. Mark the depth size as typeless in such a situation to avoid crossing the aspect barrier with the API.
This commit is contained in:
parent
f1f5c91386
commit
54775d91dc
1 changed files with 20 additions and 1 deletions
|
@ -2745,9 +2745,28 @@ namespace rsx
|
||||||
dst_subres.surface->transform_blit_coordinates(rsx::surface_access::transfer, dst_area);
|
dst_subres.surface->transform_blit_coordinates(rsx::surface_access::transfer, dst_area);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!use_null_region)
|
if (!use_null_region) [[likely]]
|
||||||
{
|
{
|
||||||
|
// Do preliminary analysis
|
||||||
typeless_info.analyse();
|
typeless_info.analyse();
|
||||||
|
|
||||||
|
if (dst_is_render_target && src_is_render_target &&
|
||||||
|
dst_subres.is_depth != src_subres.is_depth) [[unlikely]]
|
||||||
|
{
|
||||||
|
// Rare corner case. Typeless transfer from whatever channel is Z
|
||||||
|
if (!typeless_info.src_is_typeless && !typeless_info.dst_is_typeless)
|
||||||
|
{
|
||||||
|
if (dst_subres.is_depth)
|
||||||
|
{
|
||||||
|
typeless_info.dst_is_typeless = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
typeless_info.src_is_typeless = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
blitter.scale_image(cmd, vram_texture, dest_texture, src_area, dst_area, interpolate, typeless_info);
|
blitter.scale_image(cmd, vram_texture, dest_texture, src_area, dst_area, interpolate, typeless_info);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue