MCPcopy Create free account
hub / github.com/RavEngine/RavEngine / main

Function main

deps/LLGL/tests/Test_Compute.cpp:26–141  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24}
25
26int main()
27{
28 try
29 {
30 // Setup profiler and debugger
31 auto profiler = std::make_shared<LLGL::RenderingProfiler>();
32 auto debugger = std::make_shared<LLGL::RenderingDebugger>();
33
34 // Load render system module
35 auto renderer = LLGL::RenderSystem::Load("OpenGL", profiler.get(), debugger.get());
36
37 // Create render context
38 LLGL::RenderContextDescriptor contextDesc;
39 contextDesc.videoMode.resolution = { 800, 600 };
40
41 /*auto context = */renderer->CreateRenderContext(contextDesc);
42
43 // Create command buffer
44 auto commandQueue = renderer->GetCommandQueue();
45 auto commands = renderer->CreateCommandBuffer();
46
47 // Quit if compute shaders are not supported
48 const auto& renderCaps = renderer->GetRenderingCaps();
49 if (!renderCaps.features.hasComputeShaders)
50 throw std::runtime_error("compute shaders are not supported by renderer");
51
52 // Create storage buffer
53 static const unsigned int vecSize = 128;
54 auto vec = GetTestVector(vecSize);
55
56 LLGL::BufferDescriptor storageBufferDesc;
57 {
58 storageBufferDesc.size = sizeof(Gs::Vector4f)*vecSize;
59 storageBufferDesc.bindFlags = LLGL::BindFlags::Storage;
60 storageBufferDesc.cpuAccessFlags = LLGL::CPUAccessFlags::Read;
61 storageBufferDesc.miscFlags = LLGL::MiscFlags::DynamicUsage;
62 }
63 auto storageBuffer = renderer->CreateBuffer(storageBufferDesc, vec.data());
64
65 // Load shader
66 auto computeShader = renderer->CreateShader({ LLGL::ShaderType::Compute, "Shaders/ComputeShader.glsl" });
67
68 if (computeShader->HasErrors())
69 std::cerr << computeShader->GetReport() << std::endl;
70
71 // Create shader program
72 LLGL::ShaderProgramDescriptor shaderProgramDesc;
73 {
74 shaderProgramDesc.computeShader = computeShader;
75 }
76 auto shaderProgram = renderer->CreateShaderProgram(shaderProgramDesc);
77
78 if (shaderProgram->HasErrors())
79 std::cerr << shaderProgram->GetReport() << std::endl;
80
81 // Create timer query
82 LLGL::QueryHeapDescriptor queryDesc;
83 {

Callers

nothing calls this directly

Calls 15

GetTestVectorFunction · 0.85
getMethod · 0.45
CreateRenderContextMethod · 0.45
GetCommandQueueMethod · 0.45
CreateCommandBufferMethod · 0.45
CreateBufferMethod · 0.45
dataMethod · 0.45
CreateShaderMethod · 0.45
HasErrorsMethod · 0.45
GetReportMethod · 0.45
CreateShaderProgramMethod · 0.45
CreateQueryHeapMethod · 0.45

Tested by

no test coverage detected