Vulkan: Ensure fast path is used for non-RGBA formats when clearing
This commit is contained in:
parent
f4944f006d
commit
c290398320
|
@ -337,8 +337,18 @@ void Renderer::ClearScreen(const EFBRectangle& rc, bool color_enable, bool alpha
|
||||||
// Native -> EFB coordinates
|
// Native -> EFB coordinates
|
||||||
TargetRectangle target_rc = Renderer::ConvertEFBRectangle(rc);
|
TargetRectangle target_rc = Renderer::ConvertEFBRectangle(rc);
|
||||||
|
|
||||||
|
// Determine whether the EFB has an alpha channel. If it doesn't, we can clear the alpha
|
||||||
|
// channel to 0xFF. This hopefully allows us to use the fast path in most cases.
|
||||||
|
if (bpmem.zcontrol.pixel_format == PEControl::RGB565_Z16 ||
|
||||||
|
bpmem.zcontrol.pixel_format == PEControl::RGB8_Z24 ||
|
||||||
|
bpmem.zcontrol.pixel_format == PEControl::Z24)
|
||||||
|
{
|
||||||
|
// Force alpha writes, and set the color to 0xFF.
|
||||||
|
alpha_enable = true;
|
||||||
|
color |= 0xFF000000;
|
||||||
|
}
|
||||||
|
|
||||||
// Fast path: when both color and alpha are enabled, we can blow away the entire buffer
|
// Fast path: when both color and alpha are enabled, we can blow away the entire buffer
|
||||||
// TODO: Can we also do it when the buffer is not an RGBA format?
|
|
||||||
VkClearAttachment clear_attachments[2];
|
VkClearAttachment clear_attachments[2];
|
||||||
uint32_t num_clear_attachments = 0;
|
uint32_t num_clear_attachments = 0;
|
||||||
if (color_enable && alpha_enable)
|
if (color_enable && alpha_enable)
|
||||||
|
|
Loading…
Reference in New Issue