This commit is contained in:
Marcin Mikołajczyk 2025-05-27 23:49:37 +01:00
parent 4a49e2bb31
commit c52778a2d9
4 changed files with 13 additions and 5 deletions

View File

@ -239,6 +239,11 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span<const u32> dcb, std::span<c
case 3:
const u32 count = header->type3.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<const PM4CmdNop*>(header);

View File

@ -420,7 +420,7 @@ struct PM4CmdEventWrite {
T Address() const {
ASSERT(event_index.Value() >= EventIndex::ZpassDone &&
event_index.Value() <= EventIndex::SampleStreamoutStatSx);
return reinterpret_cast<T>((u64(address[1]) << 32u) | u64(address[0]));
return std::bit_cast<T>((u64(address[1]) << 32u) | u64(address[0]));
}
};
@ -1145,8 +1145,8 @@ struct PM4CmdSetPredication {
template <typename T = u64>
T Address() const {
return reinterpret_cast<T>(u64(start_address_lo.Value()) << 4 |
u64(start_address_hi.Value()) << 32);
return std::bit_cast<T>(u64(start_address_lo.Value()) << 4 | u64(start_address_hi.Value())
<< 32);
}
};

View File

@ -424,7 +424,7 @@ bool Instance::CreateDevice() {
},
vk::PhysicalDeviceConditionalRenderingFeaturesEXT{
.conditionalRendering = true,
}
},
#ifdef __APPLE__
portability_features,
#endif

View File

@ -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();