From 36b3ab0741b0c36e2de75d69ff654e7922dbd7aa Mon Sep 17 00:00:00 2001 From: gdk Date: Fri, 28 Jan 2022 18:43:28 -0300 Subject: [PATCH] Fix draw outside of render pass and missing capability --- Ryujinx.Graphics.Vulkan/PipelineBase.cs | 8 ++++---- Ryujinx.Graphics.Vulkan/VulkanInitialization.cs | 9 ++++++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Ryujinx.Graphics.Vulkan/PipelineBase.cs b/Ryujinx.Graphics.Vulkan/PipelineBase.cs index 379f47573..c64b58316 100644 --- a/Ryujinx.Graphics.Vulkan/PipelineBase.cs +++ b/Ryujinx.Graphics.Vulkan/PipelineBase.cs @@ -231,8 +231,8 @@ namespace Ryujinx.Graphics.Vulkan return; } - BeginRenderPass(); RecreatePipelineIfNeeded(PipelineBindPoint.Graphics); + BeginRenderPass(); ResumeTransformFeedbackInternal(); DrawCount++; @@ -260,8 +260,8 @@ namespace Ryujinx.Graphics.Vulkan return; } - BeginRenderPass(); RecreatePipelineIfNeeded(PipelineBindPoint.Graphics); + BeginRenderPass(); ResumeTransformFeedbackInternal(); DrawCount++; @@ -348,8 +348,8 @@ namespace Ryujinx.Graphics.Vulkan return; } - BeginRenderPass(); RecreatePipelineIfNeeded(PipelineBindPoint.Graphics); + BeginRenderPass(); ResumeTransformFeedbackInternal(); DrawCount++; @@ -378,8 +378,8 @@ namespace Ryujinx.Graphics.Vulkan return; } - BeginRenderPass(); RecreatePipelineIfNeeded(PipelineBindPoint.Graphics); + BeginRenderPass(); ResumeTransformFeedbackInternal(); DrawCount++; diff --git a/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs b/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs index 66f36855e..6554386c5 100644 --- a/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs +++ b/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs @@ -374,10 +374,17 @@ namespace Ryujinx.Graphics.Vulkan ExtendedDynamicState = supportedExtensions.Contains(ExtExtendedDynamicState.ExtensionName) }; + var featuresVk11 = new PhysicalDeviceVulkan11Features() + { + SType = StructureType.PhysicalDeviceVulkan11Features, + PNext = &featuresExtendedDynamicState, + ShaderDrawParameters = true + }; + var featuresVk12 = new PhysicalDeviceVulkan12Features() { SType = StructureType.PhysicalDeviceVulkan12Features, - PNext = &featuresExtendedDynamicState, + PNext = &featuresVk11, DrawIndirectCount = supportedExtensions.Contains(KhrDrawIndirectCount.ExtensionName) };