summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDave Airlie <[email protected]>2017-03-20 09:00:36 +1000
committerDave Airlie <[email protected]>2017-03-20 14:17:43 +1000
commite70e7cc7ffcb40f2ac6844b19a2d9b1bb26693a7 (patch)
tree38b5ab446ec3ac53300637fb1610b9c7b75292ac /src
parentfcca6a83cddfdd7b82b9a7e0412c060d0830e3c3 (diff)
radv: fix logic for when to flush on multiple CS emission
The current code evaluated to always true, we only want to flush on the first submit. Rename the variable to do_flush, and only emit on the first iteration. Reviewed-by: Bas Nieuwenhuizen <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/amd/vulkan/radv_device.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 893dceae047..106f7064d43 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -1565,8 +1565,8 @@ VkResult radv_QueueSubmit(
for (uint32_t i = 0; i < submitCount; i++) {
struct radeon_winsys_cs **cs_array;
- bool has_flush = !submitCount;
- bool can_patch = !has_flush;
+ bool do_flush = !i;
+ bool can_patch = !do_flush;
uint32_t advance;
if (!pSubmits[i].commandBufferCount) {
@@ -1589,9 +1589,9 @@ VkResult radv_QueueSubmit(
}
cs_array = malloc(sizeof(struct radeon_winsys_cs *) *
- (pSubmits[i].commandBufferCount + has_flush));
+ (pSubmits[i].commandBufferCount + do_flush));
- if(has_flush)
+ if(do_flush)
cs_array[0] = queue->device->flush_cs[queue->queue_family_index];
for (uint32_t j = 0; j < pSubmits[i].commandBufferCount; j++) {
@@ -1599,16 +1599,16 @@ VkResult radv_QueueSubmit(
pSubmits[i].pCommandBuffers[j]);
assert(cmd_buffer->level == VK_COMMAND_BUFFER_LEVEL_PRIMARY);
- cs_array[j + has_flush] = cmd_buffer->cs;
+ cs_array[j + do_flush] = cmd_buffer->cs;
if ((cmd_buffer->usage_flags & VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT))
can_patch = false;
}
- for (uint32_t j = 0; j < pSubmits[i].commandBufferCount + has_flush; j += advance) {
+ for (uint32_t j = 0; j < pSubmits[i].commandBufferCount + do_flush; j += advance) {
advance = MIN2(max_cs_submission,
- pSubmits[i].commandBufferCount + has_flush - j);
+ pSubmits[i].commandBufferCount + do_flush - j);
bool b = j == 0;
- bool e = j + advance == pSubmits[i].commandBufferCount + has_flush;
+ bool e = j + advance == pSubmits[i].commandBufferCount + do_flush;
if (queue->device->trace_bo)
*queue->device->trace_id_ptr = 0;