diff options
| author | 2023-01-03 10:01:25 -0500 | |
|---|---|---|
| committer | 2023-01-04 14:39:42 -0500 | |
| commit | a0c697124ced080f58866825e2e323e8682bbd7f (patch) | |
| tree | 73830fc46134be10d7feffc3da11aa9f0ea58ffb /src/video_core/renderer_vulkan | |
| parent | Texture Cache: Implement async texture downloads. (diff) | |
| download | yuzu-a0c697124ced080f58866825e2e323e8682bbd7f.tar.gz yuzu-a0c697124ced080f58866825e2e323e8682bbd7f.tar.xz yuzu-a0c697124ced080f58866825e2e323e8682bbd7f.zip | |
Video_core: Address feedback
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.cpp | 27 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_state_tracker.cpp | 2 |
2 files changed, 14 insertions, 15 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index fc746fe2c..242bf9602 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp | |||
| @@ -431,21 +431,21 @@ void RasterizerVulkan::FlushRegion(VAddr addr, u64 size, VideoCommon::CacheType | |||
| 431 | if (addr == 0 || size == 0) { | 431 | if (addr == 0 || size == 0) { |
| 432 | return; | 432 | return; |
| 433 | } | 433 | } |
| 434 | if (bool(which & VideoCommon::CacheType::TextureCache)) { | 434 | if (True(which & VideoCommon::CacheType::TextureCache)) { |
| 435 | std::scoped_lock lock{texture_cache.mutex}; | 435 | std::scoped_lock lock{texture_cache.mutex}; |
| 436 | texture_cache.DownloadMemory(addr, size); | 436 | texture_cache.DownloadMemory(addr, size); |
| 437 | } | 437 | } |
| 438 | if ((bool(which & VideoCommon::CacheType::BufferCache))) { | 438 | if ((True(which & VideoCommon::CacheType::BufferCache))) { |
| 439 | std::scoped_lock lock{buffer_cache.mutex}; | 439 | std::scoped_lock lock{buffer_cache.mutex}; |
| 440 | buffer_cache.DownloadMemory(addr, size); | 440 | buffer_cache.DownloadMemory(addr, size); |
| 441 | } | 441 | } |
| 442 | if ((bool(which & VideoCommon::CacheType::QueryCache))) { | 442 | if ((True(which & VideoCommon::CacheType::QueryCache))) { |
| 443 | query_cache.FlushRegion(addr, size); | 443 | query_cache.FlushRegion(addr, size); |
| 444 | } | 444 | } |
| 445 | } | 445 | } |
| 446 | 446 | ||
| 447 | bool RasterizerVulkan::MustFlushRegion(VAddr addr, u64 size, VideoCommon::CacheType which) { | 447 | bool RasterizerVulkan::MustFlushRegion(VAddr addr, u64 size, VideoCommon::CacheType which) { |
| 448 | if ((bool(which & VideoCommon::CacheType::BufferCache))) { | 448 | if ((True(which & VideoCommon::CacheType::BufferCache))) { |
| 449 | std::scoped_lock lock{buffer_cache.mutex}; | 449 | std::scoped_lock lock{buffer_cache.mutex}; |
| 450 | if (buffer_cache.IsRegionGpuModified(addr, size)) { | 450 | if (buffer_cache.IsRegionGpuModified(addr, size)) { |
| 451 | return true; | 451 | return true; |
| @@ -454,7 +454,7 @@ bool RasterizerVulkan::MustFlushRegion(VAddr addr, u64 size, VideoCommon::CacheT | |||
| 454 | if (!Settings::IsGPULevelHigh()) { | 454 | if (!Settings::IsGPULevelHigh()) { |
| 455 | return false; | 455 | return false; |
| 456 | } | 456 | } |
| 457 | if (bool(which & VideoCommon::CacheType::TextureCache)) { | 457 | if (True(which & VideoCommon::CacheType::TextureCache)) { |
| 458 | std::scoped_lock lock{texture_cache.mutex}; | 458 | std::scoped_lock lock{texture_cache.mutex}; |
| 459 | return texture_cache.IsRegionGpuModified(addr, size); | 459 | return texture_cache.IsRegionGpuModified(addr, size); |
| 460 | } | 460 | } |
| @@ -465,18 +465,18 @@ void RasterizerVulkan::InvalidateRegion(VAddr addr, u64 size, VideoCommon::Cache | |||
| 465 | if (addr == 0 || size == 0) { | 465 | if (addr == 0 || size == 0) { |
| 466 | return; | 466 | return; |
| 467 | } | 467 | } |
| 468 | if (bool(which & VideoCommon::CacheType::TextureCache)) { | 468 | if (True(which & VideoCommon::CacheType::TextureCache)) { |
| 469 | std::scoped_lock lock{texture_cache.mutex}; | 469 | std::scoped_lock lock{texture_cache.mutex}; |
| 470 | texture_cache.WriteMemory(addr, size); | 470 | texture_cache.WriteMemory(addr, size); |
| 471 | } | 471 | } |
| 472 | if ((bool(which & VideoCommon::CacheType::BufferCache))) { | 472 | if ((True(which & VideoCommon::CacheType::BufferCache))) { |
| 473 | std::scoped_lock lock{buffer_cache.mutex}; | 473 | std::scoped_lock lock{buffer_cache.mutex}; |
| 474 | buffer_cache.WriteMemory(addr, size); | 474 | buffer_cache.WriteMemory(addr, size); |
| 475 | } | 475 | } |
| 476 | if ((bool(which & VideoCommon::CacheType::QueryCache))) { | 476 | if ((True(which & VideoCommon::CacheType::QueryCache))) { |
| 477 | query_cache.InvalidateRegion(addr, size); | 477 | query_cache.InvalidateRegion(addr, size); |
| 478 | } | 478 | } |
| 479 | if ((bool(which & VideoCommon::CacheType::ShaderCache))) { | 479 | if ((True(which & VideoCommon::CacheType::ShaderCache))) { |
| 480 | pipeline_cache.InvalidateRegion(addr, size); | 480 | pipeline_cache.InvalidateRegion(addr, size); |
| 481 | } | 481 | } |
| 482 | } | 482 | } |
| @@ -1050,7 +1050,7 @@ void RasterizerVulkan::UpdateDepthBiasEnable(Tegra::Engines::Maxwell3D::Regs& re | |||
| 1050 | constexpr size_t POINT = 0; | 1050 | constexpr size_t POINT = 0; |
| 1051 | constexpr size_t LINE = 1; | 1051 | constexpr size_t LINE = 1; |
| 1052 | constexpr size_t POLYGON = 2; | 1052 | constexpr size_t POLYGON = 2; |
| 1053 | constexpr std::array POLYGON_OFFSET_ENABLE_LUT = { | 1053 | static constexpr std::array POLYGON_OFFSET_ENABLE_LUT = { |
| 1054 | POINT, // Points | 1054 | POINT, // Points |
| 1055 | LINE, // Lines | 1055 | LINE, // Lines |
| 1056 | LINE, // LineLoop | 1056 | LINE, // LineLoop |
| @@ -1159,13 +1159,12 @@ void RasterizerVulkan::UpdateStencilOp(Tegra::Engines::Maxwell3D::Regs& regs) { | |||
| 1159 | } | 1159 | } |
| 1160 | 1160 | ||
| 1161 | void RasterizerVulkan::UpdateLogicOp(Tegra::Engines::Maxwell3D::Regs& regs) { | 1161 | void RasterizerVulkan::UpdateLogicOp(Tegra::Engines::Maxwell3D::Regs& regs) { |
| 1162 | if (!regs.logic_op.enable) { | ||
| 1163 | return; | ||
| 1164 | } | ||
| 1165 | if (!state_tracker.TouchLogicOp()) { | 1162 | if (!state_tracker.TouchLogicOp()) { |
| 1166 | return; | 1163 | return; |
| 1167 | } | 1164 | } |
| 1168 | auto op = static_cast<VkLogicOp>(static_cast<u32>(regs.logic_op.op) - 0x1500); | 1165 | const auto op_value = static_cast<u32>(regs.logic_op.op); |
| 1166 | auto op = op_value >= 0x1500 && op_value < 0x1510 ? static_cast<VkLogicOp>(op_value - 0x1500) | ||
| 1167 | : VK_LOGIC_OP_NO_OP; | ||
| 1169 | scheduler.Record([op](vk::CommandBuffer cmdbuf) { cmdbuf.SetLogicOpEXT(op); }); | 1168 | scheduler.Record([op](vk::CommandBuffer cmdbuf) { cmdbuf.SetLogicOpEXT(op); }); |
| 1170 | } | 1169 | } |
| 1171 | 1170 | ||
diff --git a/src/video_core/renderer_vulkan/vk_state_tracker.cpp b/src/video_core/renderer_vulkan/vk_state_tracker.cpp index e5cf97472..d56558a83 100644 --- a/src/video_core/renderer_vulkan/vk_state_tracker.cpp +++ b/src/video_core/renderer_vulkan/vk_state_tracker.cpp | |||
| @@ -251,4 +251,4 @@ void StateTracker::InvalidateState() { | |||
| 251 | StateTracker::StateTracker() | 251 | StateTracker::StateTracker() |
| 252 | : flags{&default_flags}, default_flags{}, invalidation_flags{MakeInvalidationFlags()} {} | 252 | : flags{&default_flags}, default_flags{}, invalidation_flags{MakeInvalidationFlags()} {} |
| 253 | 253 | ||
| 254 | } // namespace Vulkan \ No newline at end of file | 254 | } // namespace Vulkan |