summaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan
diff options
context:
space:
mode:
authorGravatar Fernando Sahmkow2023-01-03 10:01:25 -0500
committerGravatar Fernando Sahmkow2023-01-04 14:39:42 -0500
commita0c697124ced080f58866825e2e323e8682bbd7f (patch)
tree73830fc46134be10d7feffc3da11aa9f0ea58ffb /src/video_core/renderer_vulkan
parentTexture Cache: Implement async texture downloads. (diff)
downloadyuzu-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.cpp27
-rw-r--r--src/video_core/renderer_vulkan/vk_state_tracker.cpp2
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
447bool RasterizerVulkan::MustFlushRegion(VAddr addr, u64 size, VideoCommon::CacheType which) { 447bool 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
1161void RasterizerVulkan::UpdateLogicOp(Tegra::Engines::Maxwell3D::Regs& regs) { 1161void 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() {
251StateTracker::StateTracker() 251StateTracker::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