sirit/tests/main.cpp

43 lines
1.1 KiB
C++
Raw Normal View History

2018-08-23 07:59:57 +00:00
/* This file is part of the sirit project.
* Copyright (c) 2018 ReinUsesLisp
* This software may be used and distributed according to the terms of the GNU
* General Public License version 2 or any later version.
*/
#include <sirit/sirit.h>
2018-08-25 23:16:37 +00:00
#include <cstdio>
#include <cstdlib>
class MyModule : public Sirit::Module {
public:
MyModule() {}
~MyModule() = default;
void Generate() {
AddCapability(spv::Capability::Shader);
SetMemoryModel(spv::AddressingModel::Logical, spv::MemoryModel::GLSL450);
auto main_type{TypeFunction(TypeVoid())};
2018-08-25 23:34:06 +00:00
auto main_func{Emit(Function(TypeVoid(), spv::FunctionControlMask::MaskNone, main_type))};
Emit(Label());
Emit(Return());
Emit(FunctionEnd());
2018-08-25 23:16:37 +00:00
AddEntryPoint(spv::ExecutionModel::Vertex, main_func, "main");
}
};
int main(int argc, char** argv) {
MyModule module;
module.Generate();
module.Optimize(2);
std::vector<std::uint8_t> code{module.Assembly()};
FILE* file = fopen("sirit.spv", "wb");
fwrite(code.data(), 1, code.size(), file);
fclose(file);
2018-08-23 07:59:57 +00:00
return 0;
}