early-access version 2059
This commit is contained in:
parent
5ca776d3aa
commit
ea20a8f784
@ -1,7 +1,7 @@
|
|||||||
yuzu emulator early access
|
yuzu emulator early access
|
||||||
=============
|
=============
|
||||||
|
|
||||||
This is the source code for early-access 2056.
|
This is the source code for early-access 2059.
|
||||||
|
|
||||||
## Legal Notice
|
## Legal Notice
|
||||||
|
|
||||||
|
@ -61,6 +61,14 @@ __declspec(dllimport) void __stdcall DebugBreak(void);
|
|||||||
using T = std::underlying_type_t<type>; \
|
using T = std::underlying_type_t<type>; \
|
||||||
return static_cast<type>(static_cast<T>(a) ^ static_cast<T>(b)); \
|
return static_cast<type>(static_cast<T>(a) ^ static_cast<T>(b)); \
|
||||||
} \
|
} \
|
||||||
|
[[nodiscard]] constexpr type operator<<(type a, type b) noexcept { \
|
||||||
|
using T = std::underlying_type_t<type>; \
|
||||||
|
return static_cast<type>(static_cast<T>(a) << static_cast<T>(b)); \
|
||||||
|
} \
|
||||||
|
[[nodiscard]] constexpr type operator>>(type a, type b) noexcept { \
|
||||||
|
using T = std::underlying_type_t<type>; \
|
||||||
|
return static_cast<type>(static_cast<T>(a) >> static_cast<T>(b)); \
|
||||||
|
} \
|
||||||
constexpr type& operator|=(type& a, type b) noexcept { \
|
constexpr type& operator|=(type& a, type b) noexcept { \
|
||||||
a = a | b; \
|
a = a | b; \
|
||||||
return a; \
|
return a; \
|
||||||
@ -73,6 +81,14 @@ __declspec(dllimport) void __stdcall DebugBreak(void);
|
|||||||
a = a ^ b; \
|
a = a ^ b; \
|
||||||
return a; \
|
return a; \
|
||||||
} \
|
} \
|
||||||
|
constexpr type& operator<<=(type& a, type b) noexcept { \
|
||||||
|
a = a << b; \
|
||||||
|
return a; \
|
||||||
|
} \
|
||||||
|
constexpr type& operator>>=(type& a, type b) noexcept { \
|
||||||
|
a = a >> b; \
|
||||||
|
return a; \
|
||||||
|
} \
|
||||||
[[nodiscard]] constexpr type operator~(type key) noexcept { \
|
[[nodiscard]] constexpr type operator~(type key) noexcept { \
|
||||||
using T = std::underlying_type_t<type>; \
|
using T = std::underlying_type_t<type>; \
|
||||||
return static_cast<type>(~static_cast<T>(key)); \
|
return static_cast<type>(~static_cast<T>(key)); \
|
||||||
|
@ -19,7 +19,6 @@ namespace Vulkan {
|
|||||||
// Prefer small grow rates to avoid saturating the descriptor pool with barely used pipelines
|
// Prefer small grow rates to avoid saturating the descriptor pool with barely used pipelines
|
||||||
constexpr size_t SETS_GROW_RATE = 16;
|
constexpr size_t SETS_GROW_RATE = 16;
|
||||||
constexpr s32 SCORE_THRESHOLD = 3;
|
constexpr s32 SCORE_THRESHOLD = 3;
|
||||||
constexpr u32 SETS_PER_POOL = 64;
|
|
||||||
|
|
||||||
struct DescriptorBank {
|
struct DescriptorBank {
|
||||||
DescriptorBankInfo info;
|
DescriptorBankInfo info;
|
||||||
|
@ -243,7 +243,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
|||||||
SetupFamilies(surface);
|
SetupFamilies(surface);
|
||||||
SetupFeatures();
|
SetupFeatures();
|
||||||
SetupProperties();
|
SetupProperties();
|
||||||
CollectTelemetryParameters();
|
|
||||||
|
|
||||||
const auto queue_cis = GetDeviceQueueCreateInfos();
|
const auto queue_cis = GetDeviceQueueCreateInfos();
|
||||||
const std::vector extensions = LoadExtensions(surface != nullptr);
|
const std::vector extensions = LoadExtensions(surface != nullptr);
|
||||||
@ -369,15 +368,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
|||||||
};
|
};
|
||||||
SetNext(next, demote);
|
SetNext(next, demote);
|
||||||
|
|
||||||
if (driver_id == VK_DRIVER_ID_AMD_PROPRIETARY || driver_id == VK_DRIVER_ID_AMD_OPEN_SOURCE) {
|
|
||||||
const u32 version = (properties.driverVersion << 3) >> 3;
|
|
||||||
// Broken in this driver
|
|
||||||
if (version >= 0x008000c6) {
|
|
||||||
is_int8_supported = false;
|
|
||||||
is_float16_supported = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_int8_supported || is_float16_supported) {
|
if (is_int8_supported || is_float16_supported) {
|
||||||
VkPhysicalDeviceFloat16Int8FeaturesKHR float16_int8{
|
VkPhysicalDeviceFloat16Int8FeaturesKHR float16_int8{
|
||||||
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR,
|
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR,
|
||||||
@ -570,6 +560,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
|||||||
logical = vk::Device::Create(physical, queue_cis, extensions, first_next, dld);
|
logical = vk::Device::Create(physical, queue_cis, extensions, first_next, dld);
|
||||||
|
|
||||||
CollectPhysicalMemoryInfo();
|
CollectPhysicalMemoryInfo();
|
||||||
|
CollectTelemetryParameters();
|
||||||
CollectToolingInfo();
|
CollectToolingInfo();
|
||||||
|
|
||||||
if (driver_id == VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR) {
|
if (driver_id == VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR) {
|
||||||
@ -596,13 +587,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
|||||||
ext_extended_dynamic_state = false;
|
ext_extended_dynamic_state = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ext_sampler_filter_minmax) {
|
|
||||||
if (driver_id == VK_DRIVER_ID_AMD_PROPRIETARY ||
|
|
||||||
driver_id == VK_DRIVER_ID_AMD_OPEN_SOURCE || driver_id == VK_DRIVER_ID_MESA_RADV) {
|
|
||||||
// Disable ext_sampler_filter_minmax in GCN as it is broken.
|
|
||||||
ext_sampler_filter_minmax = is_float16_supported;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (ext_vertex_input_dynamic_state && driver_id == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS) {
|
if (ext_vertex_input_dynamic_state && driver_id == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS) {
|
||||||
LOG_WARNING(Render_Vulkan, "Blacklisting Intel for VK_EXT_vertex_input_dynamic_state");
|
LOG_WARNING(Render_Vulkan, "Blacklisting Intel for VK_EXT_vertex_input_dynamic_state");
|
||||||
ext_vertex_input_dynamic_state = false;
|
ext_vertex_input_dynamic_state = false;
|
||||||
@ -618,6 +602,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
|||||||
|
|
||||||
sets_per_pool = 64;
|
sets_per_pool = 64;
|
||||||
if (driver_id == VK_DRIVER_ID_AMD_PROPRIETARY || driver_id == VK_DRIVER_ID_AMD_OPEN_SOURCE) {
|
if (driver_id == VK_DRIVER_ID_AMD_PROPRIETARY || driver_id == VK_DRIVER_ID_AMD_OPEN_SOURCE) {
|
||||||
|
// AMD drivers need a higher amount of Sets per Pool in certain circunstances like in XC2.
|
||||||
sets_per_pool = 96;
|
sets_per_pool = 96;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user