From c52778a2d9cc3ed7292fdbe8e36d7b98d7f1c52c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Miko=C5=82ajczyk?= Date: Tue, 27 May 2025 23:49:37 +0100 Subject: [PATCH] Fixes --- src/video_core/amdgpu/liverpool.cpp | 5 +++++ src/video_core/amdgpu/pm4_cmds.h | 6 +++--- src/video_core/renderer_vulkan/vk_instance.cpp | 2 +- src/video_core/renderer_vulkan/vk_rasterizer.cpp | 5 ++++- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/video_core/amdgpu/liverpool.cpp b/src/video_core/amdgpu/liverpool.cpp index c99dbb9a9..3358af2b7 100644 --- a/src/video_core/amdgpu/liverpool.cpp +++ b/src/video_core/amdgpu/liverpool.cpp @@ -239,6 +239,11 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span dcb, std::spantype3.NumWords(); const PM4ItOpcode opcode = header->type3.opcode; + const auto predicate = header->type3.predicate; + if (predicate == PM4Predicate::PredEnable) { + LOG_DEBUG(Render_Vulkan, "PM4 command {} is predicated", + magic_enum::enum_name(opcode)); + } switch (opcode) { case PM4ItOpcode::Nop: { const auto* nop = reinterpret_cast(header); diff --git a/src/video_core/amdgpu/pm4_cmds.h b/src/video_core/amdgpu/pm4_cmds.h index 898d8cb69..d4ce9a03a 100644 --- a/src/video_core/amdgpu/pm4_cmds.h +++ b/src/video_core/amdgpu/pm4_cmds.h @@ -420,7 +420,7 @@ struct PM4CmdEventWrite { T Address() const { ASSERT(event_index.Value() >= EventIndex::ZpassDone && event_index.Value() <= EventIndex::SampleStreamoutStatSx); - return reinterpret_cast((u64(address[1]) << 32u) | u64(address[0])); + return std::bit_cast((u64(address[1]) << 32u) | u64(address[0])); } }; @@ -1145,8 +1145,8 @@ struct PM4CmdSetPredication { template T Address() const { - return reinterpret_cast(u64(start_address_lo.Value()) << 4 | - u64(start_address_hi.Value()) << 32); + return std::bit_cast(u64(start_address_lo.Value()) << 4 | u64(start_address_hi.Value()) + << 32); } }; diff --git a/src/video_core/renderer_vulkan/vk_instance.cpp b/src/video_core/renderer_vulkan/vk_instance.cpp index f9e9606ca..654f611f6 100644 --- a/src/video_core/renderer_vulkan/vk_instance.cpp +++ b/src/video_core/renderer_vulkan/vk_instance.cpp @@ -424,7 +424,7 @@ bool Instance::CreateDevice() { }, vk::PhysicalDeviceConditionalRenderingFeaturesEXT{ .conditionalRendering = true, - } + }, #ifdef __APPLE__ portability_features, #endif diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 63cbbb2b5..02539d4a2 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -1290,7 +1290,10 @@ void Rasterizer::StartPredication(VAddr addr, bool draw_if_visible, bool wait_fo ASSERT(occlusion_index_mapping.contains(addr)); auto index = occlusion_index_mapping[addr]; - LOG_DEBUG(Render_Vulkan, "addr = {:#x}, index = {}", addr, index); + LOG_DEBUG(Render_Vulkan, + "addr = {:#x}, index = {}, draw_if_visible = {} " + "wait_for_result = {}", + addr, index, draw_if_visible, wait_for_result); scheduler.EndRendering(); const auto cmdbuf = scheduler.CommandBuffer();