blob: d5f3646178bb6421e3625144937210deede71fe2 [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef VKBENCH_DRAWSIZETEST_H
#define VKBENCH_DRAWSIZETEST_H
#include "../testBase.h"
namespace vkbench {
class DrawSizeTest : public testBase {
public:
DrawSizeTest(uint64_t size, vkBase* base) {
vk = base;
img_size_.setHeight(size).setWidth(size);
snprintf(name_, 100, "DrawSizeTest_%u", img_size_.height);
snprintf(desp_, 1024, "Time to draw %ux%u image.", img_size_.height,
img_size_.width);
}
~DrawSizeTest() override = default;
static std::vector<testBase*> GenTests() {
return std::vector<testBase*>{
new vkbench::DrawSizeTest(16, vkBase::GetInstance()),
new vkbench::DrawSizeTest(64, vkBase::GetInstance()),
new vkbench::DrawSizeTest(128, vkBase::GetInstance()),
new vkbench::DrawSizeTest(512, vkBase::GetInstance()),
new vkbench::DrawSizeTest(1024, vkBase::GetInstance()),
};
}
const char* Name() const override { return name_; }
const char* Desp() const override { return desp_; }
const char* Unit() const override { return "us"; }
Image GetImage() const override;
protected:
void Initialize() override;
void Run() override;
void Destroy() override;
private:
void CreateRenderPass();
void CreateGraphicsPipeline();
void CreateFrameBuffers();
char name_[100];
char desp_[1024];
std::vector<vk::SubmitInfo> smt_infos_;
std::vector<vk::CommandBuffer> cmd_buffers_;
vk::Extent2D img_size_;
vk::Format img_format_ = vk::Format::eR8G8B8A8Unorm;
vk::RenderPass render_pass_;
vk::Pipeline graphics_pipeline_;
vk::PipelineLayout pipeline_layout_;
vk::Framebuffer frame_buffer_;
vkImage* img_;
vk::ImageView img_view_;
DISALLOW_COPY_AND_ASSIGN(DrawSizeTest);
};
} // namespace vkbench
#endif // VKBENCH_DRAWSIZETEST_H