From 577b5ef2bd71e9e9110ec8a55745124bb294b1e6 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Sat, 10 Dec 2022 19:30:47 +0300 Subject: [PATCH] Support compiling with older SDK headers --- rpcs3/Emu/RSX/Program/GLSLCommon.cpp | 1 - rpcs3/Emu/RSX/VK/VulkanAPI.h | 23 ++++++++++++++++++++++- rpcs3/Emu/RSX/VK/vkutils/device.cpp | 5 +++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/RSX/Program/GLSLCommon.cpp b/rpcs3/Emu/RSX/Program/GLSLCommon.cpp index b6e6ccced1..8ada18a165 100644 --- a/rpcs3/Emu/RSX/Program/GLSLCommon.cpp +++ b/rpcs3/Emu/RSX/Program/GLSLCommon.cpp @@ -1,6 +1,5 @@ #include "stdafx.h" #include "Utilities/StrFmt.h" -#include "../Common/simple_array.hpp" #include "GLSLCommon.h" #include "RSXFragmentProgram.h" diff --git a/rpcs3/Emu/RSX/VK/VulkanAPI.h b/rpcs3/Emu/RSX/VK/VulkanAPI.h index 70f8f267b6..b126e4b730 100644 --- a/rpcs3/Emu/RSX/VK/VulkanAPI.h +++ b/rpcs3/Emu/RSX/VK/VulkanAPI.h @@ -22,7 +22,7 @@ #include -#if VK_HEADER_VERSION < 224 +#ifndef VK_EXT_attachment_feedback_loop_layout #define VK_EXT_attachment_feedback_loop_layout 1 #define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME "VK_EXT_attachment_feedback_loop_layout" @@ -37,3 +37,24 @@ typedef struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT { } VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT; #endif + +#ifndef VK_KHR_fragment_shader_barycentric + +#define VK_KHR_fragment_shader_barycentric 1 +#define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1 +#define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_KHR_fragment_shader_barycentric" +#define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR static_cast(1000203000) + +typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 fragmentShaderBarycentric; +} VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR; + +typedef struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR { + VkStructureType sType; + void* pNext; + VkBool32 triStripVertexOrderIndependentOfProvokingVertex; +} VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR; + +#endif diff --git a/rpcs3/Emu/RSX/VK/vkutils/device.cpp b/rpcs3/Emu/RSX/VK/vkutils/device.cpp index 3446dfbd85..a7ce8c9bb5 100644 --- a/rpcs3/Emu/RSX/VK/vkutils/device.cpp +++ b/rpcs3/Emu/RSX/VK/vkutils/device.cpp @@ -464,6 +464,11 @@ namespace vk requested_extensions.push_back(VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME); } + if (pgpu->barycoords_support) + { + requested_extensions.push_back(VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME); + } + enabled_features.robustBufferAccess = VK_TRUE; enabled_features.fullDrawIndexUint32 = VK_TRUE; enabled_features.independentBlend = VK_TRUE;