blob: 72228b702b81bbe09225d5fe11739bcc71bee860 [file] [log] [blame]
Po-Hsien Wang00777b22019-04-24 16:37:09 -07001// Copyright 2019 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "submitTest.h"
Po-Hsien Wang00777b22019-04-24 16:37:09 -07006
7namespace vkbench {
Po-Hsien Wang42e116c2020-06-09 16:10:27 -07008void SubmitTest::Initialize() {
9 fences_.push_back(
10 vk->GetDevice().createFence({vk::FenceCreateFlagBits::eSignaled}));
Po-Hsien Wang00777b22019-04-24 16:37:09 -070011 // Create empty cmdBuffer
Po-Hsien Wang42e116c2020-06-09 16:10:27 -070012 cmd_buffers_ = vk->GetDevice().allocateCommandBuffers(
13 {vk->GetCommandPool(), vk::CommandBufferLevel::ePrimary, 1});
14 cmd_buffers_[0].begin({});
Po-Hsien Wang00777b22019-04-24 16:37:09 -070015 cmd_buffers_[0].end();
16
17 for (auto& t : smt_infos_) {
18 t.setCommandBufferCount(1);
19 t.setPCommandBuffers(&cmd_buffers_[0]);
20 }
21}
22
Po-Hsien Wang42e116c2020-06-09 16:10:27 -070023void SubmitTest::Run() {
24 // TODO(pwang): Consider using multiple set of command buffers to minimize
25 // the CPU idle time of waiting the fences.
26 vk->GetDevice().waitForFences(fences_, VK_TRUE,
27 std::numeric_limits<uint64_t>::max());
28 vk->GetDevice().resetFences(fences_);
29 vk->GetGFXQueue().submit(smt_infos_, fences_[0], {});
Po-Hsien Wang00777b22019-04-24 16:37:09 -070030}
31
Po-Hsien Wang42e116c2020-06-09 16:10:27 -070032void SubmitTest::Cleanup() {
33 vk->GetDevice().waitForFences(fences_, VK_TRUE,
34 std::numeric_limits<uint64_t>::max());
Po-Hsien Wang00777b22019-04-24 16:37:09 -070035}
36
Po-Hsien Wang42e116c2020-06-09 16:10:27 -070037void SubmitTest::Destroy() {
38 vk->GetDevice().freeCommandBuffers(vk->GetCommandPool(), cmd_buffers_);
39 for (auto& fence : fences_) {
40 vk->GetDevice().destroyFence(fence);
Po-Hsien Wang00777b22019-04-24 16:37:09 -070041 }
Po-Hsien Wang42e116c2020-06-09 16:10:27 -070042 fences_.clear();
Po-Hsien Wang00777b22019-04-24 16:37:09 -070043}
44} // namespace vkbench