mirror of
https://github.com/stenzek/duckstation.git
synced 2025-06-07 03:55:33 +00:00
GPU/HW: Treat fill-like sprites as fills if TC is enabled
Umihara Kawase Shun clears the framebuffer with a single large sprite, which causes the texture cache to think the pages have been drawn.
This commit is contained in:
parent
d7c78eedce
commit
7188ab863a
@ -2663,6 +2663,13 @@ void GPU_HW::DrawLine(const GSVector4 bounds, u32 col0, u32 col1, float depth)
|
|||||||
|
|
||||||
void GPU_HW::DrawSprite(const GPUBackendDrawRectangleCommand* cmd)
|
void GPU_HW::DrawSprite(const GPUBackendDrawRectangleCommand* cmd)
|
||||||
{
|
{
|
||||||
|
// Treat non-textured sprite draws as fills, so we don't break the TC on framebuffer clears.
|
||||||
|
if (m_use_texture_cache && !cmd->transparency_enable && !cmd->shading_enable && !cmd->texture_enable)
|
||||||
|
{
|
||||||
|
FillVRAM(cmd->x, cmd->y, cmd->width, cmd->height, cmd->color, cmd->interlaced_rendering, cmd->active_line_lsb);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const GSVector2i pos = GSVector2i::load<true>(&cmd->x);
|
const GSVector2i pos = GSVector2i::load<true>(&cmd->x);
|
||||||
const GSVector2i size = GSVector2i::load<true>(&cmd->width).u16to32();
|
const GSVector2i size = GSVector2i::load<true>(&cmd->width).u16to32();
|
||||||
const GSVector4i rect = GSVector4i::xyxy(pos, pos.add32(size));
|
const GSVector4i rect = GSVector4i::xyxy(pos, pos.add32(size));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user