MCPcopy Create free account
hub / github.com/SakuraEngine/SakuraEngine / provider_main

Function provider_main

samples/render_graph/cross-process/provider.cpp:270–438  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

268}
269
270int provider_main(int argc, char* argv[])
271{
272 // report process information
273 auto id = skr_get_current_process_id();
274 SKR_LOG_DEBUG(u8"exec_mode: %s, process id: %lld", argv[1], id);
275 const SProcessId provider_id = skr_get_current_process_id();
276 SKR_LOG_TRACE(u8"provider id: %d", provider_id);
277
278 // initialize db
279 MDB_env* env = nullptr;
280 env_create(&env);
281 MDB_dbi dbi;
282 dbi_create(env, &dbi, false);
283 SKR_LOG_TRACE(u8"db id: %u", dbi);
284
285 // initialize renderer
286 if (SDL_Init(SDL_INIT_EVERYTHING) != 0) return -1;
287 auto renderer = SkrNew<ProviderRenderer>();
288 if (argc >= 3)
289 {
290 renderer->backend = (strcmp(argv[2], "--d3d12") == 0) ? CGPU_BACKEND_D3D12 : renderer->backend;
291 renderer->backend = (strcmp(argv[2], "--vulkan") == 0) ? CGPU_BACKEND_VULKAN : renderer->backend;
292 }
293 renderer->create_window();
294 renderer->create_api_objects();
295 renderer->create_render_pipeline();
296 renderer->create_blit_pipeline();
297
298 // initialize render graph
299 namespace render_graph = skr::render_graph;
300 auto graph = render_graph::RenderGraph::create(
301 [=](render_graph::RenderGraphBuilder& builder) {
302 builder.with_device(renderer->device)
303 .with_gfx_queue(renderer->gfx_queue);
304 });
305
306 // loop
307 bool quit = false;
308 while (!quit)
309 {
310 SDL_Event event;
311 while (SDL_PollEvent(&event))
312 {
313 if (SDL_GetWindowID(renderer->sdl_window) == event.window.windowID)
314 {
315 if (!SDLEventHandler(&event, renderer->sdl_window))
316 {
317 quit = true;
318 }
319 }
320 if (event.type == SDL_WINDOWEVENT)
321 {
322 Uint8 window_event = event.window.event;
323 if (window_event == SDL_WINDOWEVENT_SIZE_CHANGED)
324 {
325 cgpu_wait_queue_idle(renderer->gfx_queue);
326 cgpu_free_swapchain(renderer->swapchain);
327 int width = 0, height = 0;

Callers 1

mainFunction · 0.85

Calls 15

env_createFunction · 0.85
dbi_createFunction · 0.85
cgpu_wait_queue_idleFunction · 0.85
cgpu_free_swapchainFunction · 0.85
cgpu_create_swapchainFunction · 0.85
cgpu_wait_fencesFunction · 0.85
cgpu_acquire_next_imageFunction · 0.85
cgpu_render_encoder_drawFunction · 0.85

Tested by

no test coverage detected