Parcourir la source

vulkan: Fix issues with cb# overflow

rdb il y a 4 jours
Parent
commit
e371c1fbd5

+ 9 - 3
panda/src/vulkandisplay/vulkanGraphicsStateGuardian.cxx

@@ -3405,9 +3405,14 @@ finish_frame(FrameData &frame_data) {
 
 #ifndef NDEBUG
   if (vulkandisplay_cat.is_spam()) {
-    vulkandisplay_cat.spam()
-      << "GPU finished CB #" << frame_data._watermark - 1
-      << ", cleaning up frame data\n";
+    if (frame_data._watermark > 0) {
+      vulkandisplay_cat.spam()
+        << "GPU finished CB #" << frame_data._watermark - 1
+        << ", cleaning up frame data\n";
+    } else {
+      vulkandisplay_cat.spam()
+        << "Cleaning up frame data\n";
+    }
   }
 #endif
 
@@ -3586,6 +3591,7 @@ finish_frame(FrameData &frame_data) {
 
   frame_data._finish_time = 0.0;
   frame_data._wait_for_finish = false;
+  frame_data._watermark = 0;
 
   if (_last_frame_data == &frame_data) {
     _last_frame_data = nullptr;

+ 2 - 2
panda/src/vulkandisplay/vulkanGraphicsStateGuardian.h

@@ -337,8 +337,8 @@ private:
   pvector<VkCommandBuffer> _pending_command_buffers; // ready to submit
   pvector<VkBufferMemoryBarrier2> _pending_buffer_barriers;
   pvector<VkImageMemoryBarrier2> _pending_image_barriers;
-  uint32_t _first_pending_command_buffer_seq = 0;
-  uint32_t _last_pending_command_buffer_seq = 0;
+  uint64_t _first_pending_command_buffer_seq = 0;
+  uint64_t _last_pending_command_buffer_seq = 0;
   struct PendingSubmission {
     VkSemaphore _wait_semaphore;
     VkSemaphore _signal_semaphore;