GPU/HW: Split transparent draws if dual-source blend unsupported

The ordering is not correct otherwise. Ape Escape has a bunch of
overlapping sprites that have a mix of opaque and transparent texels,
and the transparent texels are repeated multiple times when the
opaque texels should cancel them out.

Only affects old Mali drivers.
pull/3364/head
Stenzek 3 weeks ago
parent 2663ac9666
commit 06b02183cb
No known key found for this signature in database

@ -3695,9 +3695,8 @@ void GPU_HW::PrepareDraw(const GPUBackendDrawCommand* cmd)
if (!IsFlushed())
{
if (texture_mode != m_batch.texture_mode || transparency_mode != m_batch.transparency_mode ||
(transparency_mode == GPUTransparencyMode::BackgroundMinusForeground && !m_allow_shader_blend) ||
dithering_enable != m_batch.dithering || m_texture_window_bits != cmd->window ||
m_batch.check_mask_before_draw != cmd->check_mask_before_draw ||
(!m_allow_shader_blend && NeedsTwoPassRendering()) || dithering_enable != m_batch.dithering ||
m_texture_window_bits != cmd->window || m_batch.check_mask_before_draw != cmd->check_mask_before_draw ||
m_batch.set_mask_while_drawing != cmd->set_mask_while_drawing ||
(texture_mode == BatchTextureMode::PageTexture && m_texture_cache_key != texture_cache_key))
{

Loading…
Cancel
Save