From 1f49a7d9fc0eda5dfba03b0e3faca93e57b39132 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Fri, 31 Jul 2015 09:11:47 -0700 Subject: [PATCH] vk/batch_chain: Decrement num_relocs instead of incrementing it --- src/vulkan/anv_batch_chain.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/vulkan/anv_batch_chain.c b/src/vulkan/anv_batch_chain.c index 04528bb06b6..c34f58b2534 100644 --- a/src/vulkan/anv_batch_chain.c +++ b/src/vulkan/anv_batch_chain.c @@ -720,7 +720,15 @@ anv_cmd_buffer_add_secondary(struct anv_cmd_buffer *primary, .AddressSpaceIndicator = ASI_PPGTT, .BatchBufferStartAddress = { &this_bbo->bo, offset }, }; - last_bbo->relocs.num_relocs++; + /* The pack function below is going to insert a relocation. In order + * to allow us to splice this secondary into a primary multiple + * times, we can't have relocations from previous splices in this + * splice. In order to deal with this, we simply decrement the + * relocation count prior to inserting the next one. In order to + * handle the base case, num_relocs was artificially incremented in + * end_batch_buffer(). + */ + last_bbo->relocs.num_relocs--; GEN8_MI_BATCH_BUFFER_START_pack(&secondary->batch, last_bbo->bo.map + last_bbo->length, &ret); -- 2.30.2