summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/acc/acc.cpp8
-rw-r--r--src/video_core/renderer_vulkan/vk_device.cpp24
2 files changed, 31 insertions, 1 deletions
diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp
index 6b1613510..2850dd805 100644
--- a/src/core/hle/service/acc/acc.cpp
+++ b/src/core/hle/service/acc/acc.cpp
@@ -496,7 +496,7 @@ public:
496 {3, nullptr, "LoadIdTokenCache"}, 496 {3, nullptr, "LoadIdTokenCache"},
497 {130, nullptr, "GetNintendoAccountUserResourceCacheForApplication"}, 497 {130, nullptr, "GetNintendoAccountUserResourceCacheForApplication"},
498 {150, nullptr, "CreateAuthorizationRequest"}, 498 {150, nullptr, "CreateAuthorizationRequest"},
499 {160, nullptr, "StoreOpenContext"}, 499 {160, &IManagerForApplication::StoreOpenContext, "StoreOpenContext"},
500 {170, nullptr, "LoadNetworkServiceLicenseKindAsync"}, 500 {170, nullptr, "LoadNetworkServiceLicenseKindAsync"},
501 }; 501 };
502 // clang-format on 502 // clang-format on
@@ -520,6 +520,12 @@ private:
520 rb.PushRaw<u64>(user_id.GetNintendoID()); 520 rb.PushRaw<u64>(user_id.GetNintendoID());
521 } 521 }
522 522
523 void StoreOpenContext(Kernel::HLERequestContext& ctx) {
524 LOG_WARNING(Service_ACC, "(STUBBED) called");
525 IPC::ResponseBuilder rb{ctx, 2};
526 rb.Push(RESULT_SUCCESS);
527 }
528
523 Common::UUID user_id; 529 Common::UUID user_id;
524}; 530};
525 531
diff --git a/src/video_core/renderer_vulkan/vk_device.cpp b/src/video_core/renderer_vulkan/vk_device.cpp
index 3d8d3213d..1f057b43b 100644
--- a/src/video_core/renderer_vulkan/vk_device.cpp
+++ b/src/video_core/renderer_vulkan/vk_device.cpp
@@ -79,6 +79,21 @@ VkFormatFeatureFlags GetFormatFeatures(VkFormatProperties properties, FormatType
79 } 79 }
80} 80}
81 81
82[[nodiscard]] bool IsRDNA(std::string_view device_name, VkDriverIdKHR driver_id) {
83 static constexpr std::array RDNA_DEVICES{
84 "5700",
85 "5600",
86 "5500",
87 "5300",
88 };
89 if (driver_id != VK_DRIVER_ID_AMD_PROPRIETARY_KHR) {
90 return false;
91 }
92 return std::any_of(RDNA_DEVICES.begin(), RDNA_DEVICES.end(), [device_name](const char* name) {
93 return device_name.find(name) != std::string_view::npos;
94 });
95}
96
82std::unordered_map<VkFormat, VkFormatProperties> GetFormatProperties( 97std::unordered_map<VkFormat, VkFormatProperties> GetFormatProperties(
83 vk::PhysicalDevice physical, const vk::InstanceDispatch& dld) { 98 vk::PhysicalDevice physical, const vk::InstanceDispatch& dld) {
84 static constexpr std::array formats{ 99 static constexpr std::array formats{
@@ -388,6 +403,15 @@ bool VKDevice::Create() {
388 403
389 CollectTelemetryParameters(); 404 CollectTelemetryParameters();
390 405
406 if (ext_extended_dynamic_state && IsRDNA(properties.deviceName, driver_id)) {
407 // AMD's proprietary driver supports VK_EXT_extended_dynamic_state but on RDNA devices it
408 // seems to cause stability issues
409 LOG_WARNING(
410 Render_Vulkan,
411 "Blacklisting AMD proprietary on RDNA devices from VK_EXT_extended_dynamic_state");
412 ext_extended_dynamic_state = false;
413 }
414
391 graphics_queue = logical.GetQueue(graphics_family); 415 graphics_queue = logical.GetQueue(graphics_family);
392 present_queue = logical.GetQueue(present_family); 416 present_queue = logical.GetQueue(present_family);
393 417