mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-04-15 05:41:59 +00:00
[vulkan] Add a function to explicitly wait on a packet
It's not currently used, but it was very handy for finding where the cause of the 5s hang was ***not***.
This commit is contained in:
parent
bf0d1b4f6e
commit
4a99ef5723
2 changed files with 26 additions and 0 deletions
|
@ -40,6 +40,7 @@ void QFV_FlushStagingBuffer (qfv_stagebuf_t *stage, size_t offset, size_t size);
|
|||
qfv_packet_t *QFV_PacketAcquire (qfv_stagebuf_t *stage);
|
||||
void *QFV_PacketExtend (qfv_packet_t *packet, size_t size);
|
||||
void QFV_PacketSubmit (qfv_packet_t *packet);
|
||||
VkResult QFV_PacketWait (qfv_packet_t *packet);
|
||||
struct qfv_bufferbarrier_s;
|
||||
void QFV_PacketCopyBuffer (qfv_packet_t *packet,
|
||||
VkBuffer dstBuffer, VkDeviceSize offset,
|
||||
|
|
|
@ -105,6 +105,17 @@ QFV_DestroyStagingBuffer (qfv_stagebuf_t *stage)
|
|||
for (int i = 0; i < count; i++) {
|
||||
fences->a[i] = stage->packets.buffer[i].fence;
|
||||
cmdBuf->a[i] = stage->packets.buffer[i].cmd;
|
||||
#if 0
|
||||
auto stat = dfunc->vkGetFenceStatus (device->dev, fences->a[i]);
|
||||
if (stat != VK_SUCCESS) {
|
||||
dstring_t *str = dstring_newstr ();
|
||||
auto packet = &stage->packets.buffer[i];
|
||||
BT_pcInfo (str, (intptr_t) packet->owner);
|
||||
Sys_Printf ("QFV_DestroyStagingBuffer: %d live packet in %p:%s\n",
|
||||
stat, stage, str->str);
|
||||
dstring_delete (str);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
dfunc->vkWaitForFences (device->dev, fences->size, fences->a, VK_TRUE,
|
||||
5000000000ull);
|
||||
|
@ -306,6 +317,20 @@ QFV_PacketSubmit (qfv_packet_t *packet)
|
|||
dfunc->vkQueueSubmit (device->queue.queue, 1, &submitInfo, packet->fence);
|
||||
}
|
||||
|
||||
VkResult
|
||||
QFV_PacketWait (qfv_packet_t *packet)
|
||||
{
|
||||
auto stage = packet->stage;
|
||||
auto device = stage->device;
|
||||
auto dfunc = device->funcs;
|
||||
VkResult res = dfunc->vkWaitForFences (device->dev, 1, &packet->fence,
|
||||
VK_TRUE, ~0ull);
|
||||
if (res != VK_SUCCESS) {
|
||||
printf ("QFV_PacketWait: %d\n", res);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
void
|
||||
QFV_PacketCopyBuffer (qfv_packet_t *packet,
|
||||
VkBuffer dstBuffer, VkDeviceSize offset,
|
||||
|
|
Loading…
Reference in a new issue