|
|
|
@ -2498,10 +2498,29 @@ void GPU_HW::DispatchRenderCommand()
|
|
|
|
|
if (m_draw_mode.IsTexturePageChanged())
|
|
|
|
|
{
|
|
|
|
|
m_draw_mode.ClearTexturePageChangedFlag();
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
if (m_vram_dirty_rect.Valid())
|
|
|
|
|
{
|
|
|
|
|
GL_INS_FMT("VRAM DIRTY: {},{} => {},{}", m_vram_dirty_rect.left, m_vram_dirty_rect.top, m_vram_dirty_rect.right,
|
|
|
|
|
m_vram_dirty_rect.bottom);
|
|
|
|
|
|
|
|
|
|
auto tpr = m_draw_mode.mode_reg.GetTexturePageRectangle();
|
|
|
|
|
GL_INS_FMT("PAGE RECT: {},{} => {},{}", tpr.left, tpr.top, tpr.right, tpr.bottom);
|
|
|
|
|
if (m_draw_mode.mode_reg.IsUsingPalette())
|
|
|
|
|
{
|
|
|
|
|
tpr = m_draw_mode.GetTexturePaletteRectangle();
|
|
|
|
|
GL_INS_FMT("PALETTE RECT: {},{} => {},{}", tpr.left, tpr.top, tpr.right, tpr.bottom);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
if (m_vram_dirty_rect.Valid() && (m_draw_mode.mode_reg.GetTexturePageRectangle().Intersects(m_vram_dirty_rect) ||
|
|
|
|
|
(m_draw_mode.mode_reg.IsUsingPalette() &&
|
|
|
|
|
m_draw_mode.GetTexturePaletteRectangle().Intersects(m_vram_dirty_rect))))
|
|
|
|
|
{
|
|
|
|
|
GL_INS("Invalidating VRAM read cache due to drawing area overlap");
|
|
|
|
|
|
|
|
|
|
// Log_DevPrint("Invalidating VRAM read cache due to drawing area overlap");
|
|
|
|
|
if (!IsFlushed())
|
|
|
|
|
FlushRender();
|
|
|
|
@ -2534,6 +2553,8 @@ void GPU_HW::DispatchRenderCommand()
|
|
|
|
|
|
|
|
|
|
EnsureVertexBufferSpaceForCurrentCommand();
|
|
|
|
|
|
|
|
|
|
if (GetBatchVertexCount() == 0)
|
|
|
|
|
{
|
|
|
|
|
// transparency mode change
|
|
|
|
|
if (transparency_mode != GPUTransparencyMode::Disabled &&
|
|
|
|
|
(texture_mode == GPUTextureMode::Disabled || !NeedsShaderBlending(transparency_mode)))
|
|
|
|
@ -2598,6 +2619,7 @@ void GPU_HW::DispatchRenderCommand()
|
|
|
|
|
m_sw_renderer->PushCommand(cmd);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LoadVertices();
|
|
|
|
|
}
|
|
|
|
|