From f28f9ca32c5239a96cfb3565f0788d94ecb74e1b Mon Sep 17 00:00:00 2001 From: Dan Field Date: Thu, 20 Jul 2023 11:29:56 -0700 Subject: [PATCH] More validation logs for CommandEncoderVK submission (flutter/engine#43859) Helps while investigating https://github.com/flutter/flutter/issues/131001 --- .../renderer/backend/vulkan/command_encoder_vk.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/engine/src/flutter/impeller/renderer/backend/vulkan/command_encoder_vk.cc b/engine/src/flutter/impeller/renderer/backend/vulkan/command_encoder_vk.cc index 35ceab00d9..9bc2637745 100644 --- a/engine/src/flutter/impeller/renderer/backend/vulkan/command_encoder_vk.cc +++ b/engine/src/flutter/impeller/renderer/backend/vulkan/command_encoder_vk.cc @@ -161,6 +161,7 @@ bool CommandEncoderVK::Submit(SubmitCallback callback) { // Make sure to call callback with `false` if anything returns early. bool fail_callback = !!callback; if (!IsValid()) { + VALIDATION_LOG << "Cannot submit invalid CommandEncoderVK."; if (fail_callback) { callback(false); } @@ -179,22 +180,28 @@ bool CommandEncoderVK::Submit(SubmitCallback callback) { auto command_buffer = GetCommandBuffer(); - if (command_buffer.end() != vk::Result::eSuccess) { + auto status = command_buffer.end(); + if (status != vk::Result::eSuccess) { + VALIDATION_LOG << "Failed to end command buffer: " << vk::to_string(status); return false; } std::shared_ptr strong_device = device_holder_.lock(); if (!strong_device) { + VALIDATION_LOG << "Device lost."; return false; } auto [fence_result, fence] = strong_device->GetDevice().createFenceUnique({}); if (fence_result != vk::Result::eSuccess) { + VALIDATION_LOG << "Failed to create fence: " << vk::to_string(fence_result); return false; } vk::SubmitInfo submit_info; std::vector buffers = {command_buffer}; submit_info.setCommandBuffers(buffers); - if (queue_->Submit(submit_info, *fence) != vk::Result::eSuccess) { + status = queue_->Submit(submit_info, *fence); + if (status != vk::Result::eSuccess) { + VALIDATION_LOG << "Failed to submit queue: " << vk::to_string(status); return false; }