turnip: update cs->start in tu_cs_end
authorChia-I Wu <olvaffe@gmail.com>
Wed, 16 Jan 2019 22:05:55 +0000 (14:05 -0800)
committerChia-I Wu <olvaffe@gmail.com>
Mon, 11 Mar 2019 17:01:41 +0000 (10:01 -0700)
This allows us to assert that there is no dangling command in
tu_cs_begin, rather than discarding them silently.

src/freedreno/vulkan/tu_cs.c

index e85925f3a15738e25495d1b08b00f6d4fcff4557..cf21d5176c6d730cc5419f556bf12f73fc0627e4 100644 (file)
@@ -104,7 +104,8 @@ tu_cs_add_bo(struct tu_device *dev, struct tu_cs *cs, uint32_t byte_size)
 VkResult
 tu_cs_begin(struct tu_device *dev, struct tu_cs *cs, uint32_t reserve_size)
 {
-   assert(reserve_size);
+   /* no dangling command packet */
+   assert(cs->start == cs->cur);
 
    if (cs->end - cs->cur < reserve_size) {
       uint32_t new_size = MAX2(16384, reserve_size * sizeof(uint32_t));
@@ -115,7 +116,6 @@ tu_cs_begin(struct tu_device *dev, struct tu_cs *cs, uint32_t reserve_size)
       if (result != VK_SUCCESS)
          return result;
    }
-   cs->start = cs->cur;
 
    return VK_SUCCESS;
 }
@@ -153,6 +153,8 @@ tu_cs_end(struct tu_cs *cs)
       .offset = (cs->start - (uint32_t *) bo->map) * sizeof(uint32_t),
    };
 
+   cs->start = cs->cur;
+
    return VK_SUCCESS;
 }