aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Vulkan/PipelineFull.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2024-07-10 17:52:45 -0300
committerGitHub <noreply@github.com>2024-07-10 17:52:45 -0300
commit07435ad844bb615348fa980bb048a89298b6a652 (patch)
treec86d098dc5085be206da764f0494b56131002c5e /src/Ryujinx.Graphics.Vulkan/PipelineFull.cs
parent1668ba913fb6019587098ada7431db32d8089951 (diff)
Use draw clear on Adreno, instead of vkCmdClearAttachments (#7013)1.1.1345
* Use draw clear on Adreno, instead of vkCmdClearAttachments * Fix GTX TITAN detection
Diffstat (limited to 'src/Ryujinx.Graphics.Vulkan/PipelineFull.cs')
-rw-r--r--src/Ryujinx.Graphics.Vulkan/PipelineFull.cs6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineFull.cs b/src/Ryujinx.Graphics.Vulkan/PipelineFull.cs
index 357d517e..5808406d 100644
--- a/src/Ryujinx.Graphics.Vulkan/PipelineFull.cs
+++ b/src/Ryujinx.Graphics.Vulkan/PipelineFull.cs
@@ -47,10 +47,11 @@ namespace Ryujinx.Graphics.Vulkan
return;
}
- if (componentMask != 0xf)
+ if (componentMask != 0xf || Gd.IsQualcommProprietary)
{
// We can't use CmdClearAttachments if not writing all components,
// because on Vulkan, the pipeline state does not affect clears.
+ // On proprietary Adreno drivers, CmdClearAttachments appears to execute out of order, so it's better to not use it at all.
var dstTexture = FramebufferParams.GetColorView(index);
if (dstTexture == null)
{
@@ -87,10 +88,11 @@ namespace Ryujinx.Graphics.Vulkan
return;
}
- if (stencilMask != 0 && stencilMask != 0xff)
+ if ((stencilMask != 0 && stencilMask != 0xff) || Gd.IsQualcommProprietary)
{
// We can't use CmdClearAttachments if not clearing all (mask is all ones, 0xFF) or none (mask is 0) of the stencil bits,
// because on Vulkan, the pipeline state does not affect clears.
+ // On proprietary Adreno drivers, CmdClearAttachments appears to execute out of order, so it's better to not use it at all.
var dstTexture = FramebufferParams.GetDepthStencilView();
if (dstTexture == null)
{