| 3567 | } |
| 3568 | |
| 3569 | bool init(const Init& _userInit) |
| 3570 | { |
| 3571 | if (NULL != s_ctx) |
| 3572 | { |
| 3573 | BX_TRACE("bgfx is already initialized."); |
| 3574 | return false; |
| 3575 | } |
| 3576 | |
| 3577 | Init init = _userInit; |
| 3578 | |
| 3579 | init.limits.maxEncoders = bx::clamp<uint16_t>(init.limits.maxEncoders, 1, (0 != BGFX_CONFIG_MULTITHREADED) ? 128 : 1); |
| 3580 | init.limits.minResourceCbSize = bx::min<uint32_t>(init.limits.minResourceCbSize, BGFX_CONFIG_MIN_RESOURCE_COMMAND_BUFFER_SIZE); |
| 3581 | |
| 3582 | struct ErrorState |
| 3583 | { |
| 3584 | enum Enum |
| 3585 | { |
| 3586 | Default, |
| 3587 | ContextAllocated, |
| 3588 | }; |
| 3589 | }; |
| 3590 | |
| 3591 | ErrorState::Enum errorState = ErrorState::Default; |
| 3592 | |
| 3593 | if (NULL != init.allocator) |
| 3594 | { |
| 3595 | g_allocator = init.allocator; |
| 3596 | } |
| 3597 | else |
| 3598 | { |
| 3599 | bx::DefaultAllocator allocator; |
| 3600 | g_allocator = |
| 3601 | s_allocatorStub = BX_NEW(&allocator, AllocatorStub); |
| 3602 | } |
| 3603 | |
| 3604 | if (NULL != init.callback) |
| 3605 | { |
| 3606 | g_callback = init.callback; |
| 3607 | } |
| 3608 | else |
| 3609 | { |
| 3610 | g_callback = |
| 3611 | s_callbackStub = BX_NEW(g_allocator, CallbackStub); |
| 3612 | } |
| 3613 | |
| 3614 | bx::memSet(&g_caps, 0, sizeof(g_caps) ); |
| 3615 | g_caps.limits.maxDrawCalls = BGFX_CONFIG_MAX_DRAW_CALLS; |
| 3616 | g_caps.limits.maxBlits = BGFX_CONFIG_MAX_BLIT_ITEMS; |
| 3617 | g_caps.limits.maxTextureSize = 0; |
| 3618 | g_caps.limits.maxTextureLayers = 1; |
| 3619 | g_caps.limits.maxViews = BGFX_CONFIG_MAX_VIEWS; |
| 3620 | g_caps.limits.maxFrameBuffers = BGFX_CONFIG_MAX_FRAME_BUFFERS; |
| 3621 | g_caps.limits.maxPrograms = BGFX_CONFIG_MAX_PROGRAMS; |
| 3622 | g_caps.limits.maxShaders = BGFX_CONFIG_MAX_SHADERS; |
| 3623 | g_caps.limits.maxTextures = BGFX_CONFIG_MAX_TEXTURES; |
| 3624 | g_caps.limits.maxTextureSamplers = BGFX_CONFIG_MAX_TEXTURE_SAMPLERS; |
| 3625 | g_caps.limits.maxComputeBindings = 0; |
| 3626 | g_caps.limits.maxVertexLayouts = BGFX_CONFIG_MAX_VERTEX_LAYOUTS; |
no test coverage detected