diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/service/acc/acc.cpp | 8 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_device.cpp | 24 |
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 | |||
| 82 | std::unordered_map<VkFormat, VkFormatProperties> GetFormatProperties( | 97 | std::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 | ||