diff options
| author | 2023-11-04 21:28:16 -0300 | |
|---|---|---|
| committer | 2023-11-04 21:28:16 -0300 | |
| commit | 728aca770317b3f86961c8669ba9ae5c68570d3f (patch) | |
| tree | 29adffcb1d264cc16cacb478a8f6645ef6259b3b /src/video_core | |
| parent | We dont need that (diff) | |
| parent | Merge pull request #11952 from liamwhite/opus_stereo_count (diff) | |
| download | yuzu-728aca770317b3f86961c8669ba9ae5c68570d3f.tar.gz yuzu-728aca770317b3f86961c8669ba9ae5c68570d3f.tar.xz yuzu-728aca770317b3f86961c8669ba9ae5c68570d3f.zip | |
Merge branch 'master' into new-shortcut
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/buffer_cache/buffer_cache.h | 13 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.cpp | 8 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_state_tracker.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_swapchain.cpp | 6 |
5 files changed, 22 insertions, 9 deletions
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index 9b2698fad..081a574e8 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h | |||
| @@ -1067,8 +1067,7 @@ void BufferCache<P>::BindHostComputeTextureBuffers() { | |||
| 1067 | 1067 | ||
| 1068 | template <class P> | 1068 | template <class P> |
| 1069 | void BufferCache<P>::DoUpdateGraphicsBuffers(bool is_indexed) { | 1069 | void BufferCache<P>::DoUpdateGraphicsBuffers(bool is_indexed) { |
| 1070 | do { | 1070 | BufferOperations([&]() { |
| 1071 | channel_state->has_deleted_buffers = false; | ||
| 1072 | if (is_indexed) { | 1071 | if (is_indexed) { |
| 1073 | UpdateIndexBuffer(); | 1072 | UpdateIndexBuffer(); |
| 1074 | } | 1073 | } |
| @@ -1082,14 +1081,16 @@ void BufferCache<P>::DoUpdateGraphicsBuffers(bool is_indexed) { | |||
| 1082 | if (current_draw_indirect) { | 1081 | if (current_draw_indirect) { |
| 1083 | UpdateDrawIndirect(); | 1082 | UpdateDrawIndirect(); |
| 1084 | } | 1083 | } |
| 1085 | } while (channel_state->has_deleted_buffers); | 1084 | }); |
| 1086 | } | 1085 | } |
| 1087 | 1086 | ||
| 1088 | template <class P> | 1087 | template <class P> |
| 1089 | void BufferCache<P>::DoUpdateComputeBuffers() { | 1088 | void BufferCache<P>::DoUpdateComputeBuffers() { |
| 1090 | UpdateComputeUniformBuffers(); | 1089 | BufferOperations([&]() { |
| 1091 | UpdateComputeStorageBuffers(); | 1090 | UpdateComputeUniformBuffers(); |
| 1092 | UpdateComputeTextureBuffers(); | 1091 | UpdateComputeStorageBuffers(); |
| 1092 | UpdateComputeTextureBuffers(); | ||
| 1093 | }); | ||
| 1093 | } | 1094 | } |
| 1094 | 1095 | ||
| 1095 | template <class P> | 1096 | template <class P> |
diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index 804b95989..22bf8cc77 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | |||
| @@ -358,7 +358,7 @@ PipelineCache::PipelineCache(RasterizerVulkan& rasterizer_, const Device& device | |||
| 358 | .has_broken_spirv_subgroup_mask_vector_extract_dynamic = | 358 | .has_broken_spirv_subgroup_mask_vector_extract_dynamic = |
| 359 | driver_id == VK_DRIVER_ID_QUALCOMM_PROPRIETARY, | 359 | driver_id == VK_DRIVER_ID_QUALCOMM_PROPRIETARY, |
| 360 | .has_broken_robust = | 360 | .has_broken_robust = |
| 361 | device.IsNvidia() && device.GetNvidiaArch() <= NvidiaArchitecture::Arch_Maxwell, | 361 | device.IsNvidia() && device.GetNvidiaArch() <= NvidiaArchitecture::Arch_Pascal, |
| 362 | }; | 362 | }; |
| 363 | 363 | ||
| 364 | host_info = Shader::HostTranslateInfo{ | 364 | host_info = Shader::HostTranslateInfo{ |
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 465eac37e..3983b2eb7 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp | |||
| @@ -13,6 +13,7 @@ | |||
| 13 | #include "common/microprofile.h" | 13 | #include "common/microprofile.h" |
| 14 | #include "common/scope_exit.h" | 14 | #include "common/scope_exit.h" |
| 15 | #include "common/settings.h" | 15 | #include "common/settings.h" |
| 16 | #include "video_core/buffer_cache/buffer_cache.h" | ||
| 16 | #include "video_core/control/channel_state.h" | 17 | #include "video_core/control/channel_state.h" |
| 17 | #include "video_core/engines/draw_manager.h" | 18 | #include "video_core/engines/draw_manager.h" |
| 18 | #include "video_core/engines/kepler_compute.h" | 19 | #include "video_core/engines/kepler_compute.h" |
| @@ -285,6 +286,7 @@ void RasterizerVulkan::DrawTexture() { | |||
| 285 | 286 | ||
| 286 | query_cache.NotifySegment(true); | 287 | query_cache.NotifySegment(true); |
| 287 | 288 | ||
| 289 | std::scoped_lock l{texture_cache.mutex}; | ||
| 288 | texture_cache.SynchronizeGraphicsDescriptors(); | 290 | texture_cache.SynchronizeGraphicsDescriptors(); |
| 289 | texture_cache.UpdateRenderTargets(false); | 291 | texture_cache.UpdateRenderTargets(false); |
| 290 | 292 | ||
| @@ -921,9 +923,13 @@ void RasterizerVulkan::UpdateDynamicStates() { | |||
| 921 | } | 923 | } |
| 922 | 924 | ||
| 923 | void RasterizerVulkan::HandleTransformFeedback() { | 925 | void RasterizerVulkan::HandleTransformFeedback() { |
| 926 | static std::once_flag warn_unsupported; | ||
| 927 | |||
| 924 | const auto& regs = maxwell3d->regs; | 928 | const auto& regs = maxwell3d->regs; |
| 925 | if (!device.IsExtTransformFeedbackSupported()) { | 929 | if (!device.IsExtTransformFeedbackSupported()) { |
| 926 | LOG_ERROR(Render_Vulkan, "Transform feedbacks used but not supported"); | 930 | std::call_once(warn_unsupported, [&] { |
| 931 | LOG_ERROR(Render_Vulkan, "Transform feedbacks used but not supported"); | ||
| 932 | }); | ||
| 927 | return; | 933 | return; |
| 928 | } | 934 | } |
| 929 | query_cache.CounterEnable(VideoCommon::QueryType::StreamingByteCount, | 935 | query_cache.CounterEnable(VideoCommon::QueryType::StreamingByteCount, |
diff --git a/src/video_core/renderer_vulkan/vk_state_tracker.cpp b/src/video_core/renderer_vulkan/vk_state_tracker.cpp index d56558a83..daaea2979 100644 --- a/src/video_core/renderer_vulkan/vk_state_tracker.cpp +++ b/src/video_core/renderer_vulkan/vk_state_tracker.cpp | |||
| @@ -190,7 +190,7 @@ void SetupDirtySpecialOps(Tables& tables) { | |||
| 190 | void SetupDirtyViewportSwizzles(Tables& tables) { | 190 | void SetupDirtyViewportSwizzles(Tables& tables) { |
| 191 | static constexpr size_t swizzle_offset = 6; | 191 | static constexpr size_t swizzle_offset = 6; |
| 192 | for (size_t index = 0; index < Regs::NumViewports; ++index) { | 192 | for (size_t index = 0; index < Regs::NumViewports; ++index) { |
| 193 | tables[0][OFF(viewport_transform) + index * NUM(viewport_transform[0]) + swizzle_offset] = | 193 | tables[1][OFF(viewport_transform) + index * NUM(viewport_transform[0]) + swizzle_offset] = |
| 194 | ViewportSwizzles; | 194 | ViewportSwizzles; |
| 195 | } | 195 | } |
| 196 | } | 196 | } |
diff --git a/src/video_core/renderer_vulkan/vk_swapchain.cpp b/src/video_core/renderer_vulkan/vk_swapchain.cpp index 81ef98f61..821f44f1a 100644 --- a/src/video_core/renderer_vulkan/vk_swapchain.cpp +++ b/src/video_core/renderer_vulkan/vk_swapchain.cpp | |||
| @@ -147,6 +147,9 @@ bool Swapchain::AcquireNextImage() { | |||
| 147 | case VK_ERROR_OUT_OF_DATE_KHR: | 147 | case VK_ERROR_OUT_OF_DATE_KHR: |
| 148 | is_outdated = true; | 148 | is_outdated = true; |
| 149 | break; | 149 | break; |
| 150 | case VK_ERROR_SURFACE_LOST_KHR: | ||
| 151 | vk::Check(result); | ||
| 152 | break; | ||
| 150 | default: | 153 | default: |
| 151 | LOG_ERROR(Render_Vulkan, "vkAcquireNextImageKHR returned {}", vk::ToString(result)); | 154 | LOG_ERROR(Render_Vulkan, "vkAcquireNextImageKHR returned {}", vk::ToString(result)); |
| 152 | break; | 155 | break; |
| @@ -180,6 +183,9 @@ void Swapchain::Present(VkSemaphore render_semaphore) { | |||
| 180 | case VK_ERROR_OUT_OF_DATE_KHR: | 183 | case VK_ERROR_OUT_OF_DATE_KHR: |
| 181 | is_outdated = true; | 184 | is_outdated = true; |
| 182 | break; | 185 | break; |
| 186 | case VK_ERROR_SURFACE_LOST_KHR: | ||
| 187 | vk::Check(result); | ||
| 188 | break; | ||
| 183 | default: | 189 | default: |
| 184 | LOG_CRITICAL(Render_Vulkan, "Failed to present with error {}", vk::ToString(result)); | 190 | LOG_CRITICAL(Render_Vulkan, "Failed to present with error {}", vk::ToString(result)); |
| 185 | break; | 191 | break; |