| 2773 | } |
| 2774 | |
| 2775 | RendererContextI* rendererCreate(const Init& _init) |
| 2776 | { |
| 2777 | int32_t scores[RendererType::Count]; |
| 2778 | uint32_t numScores = 0; |
| 2779 | |
| 2780 | for (uint32_t ii = 0; ii < RendererType::Count; ++ii) |
| 2781 | { |
| 2782 | RendererType::Enum renderer = RendererType::Enum(ii); |
| 2783 | if (s_rendererCreator[ii].supported) |
| 2784 | { |
| 2785 | int32_t score = 0; |
| 2786 | if (_init.type == renderer) |
| 2787 | { |
| 2788 | score += 1000; |
| 2789 | } |
| 2790 | |
| 2791 | score += RendererType::Noop != renderer ? 1 : 0; |
| 2792 | |
| 2793 | if (BX_ENABLED(BX_PLATFORM_WINDOWS) ) |
| 2794 | { |
| 2795 | if (windowsVersionIs(Condition::GreaterEqual, 0x0602) ) |
| 2796 | { |
| 2797 | score += RendererType::Direct3D11 == renderer ? 20 : 0; |
| 2798 | score += RendererType::Direct3D12 == renderer ? 10 : 0; |
| 2799 | } |
| 2800 | else if (windowsVersionIs(Condition::GreaterEqual, 0x0601) ) |
| 2801 | { |
| 2802 | score += RendererType::Direct3D11 == renderer ? 20 : 0; |
| 2803 | score += RendererType::Direct3D12 == renderer ? -100 : 0; |
| 2804 | } |
| 2805 | else |
| 2806 | { |
| 2807 | score += RendererType::Direct3D12 == renderer ? -100 : 0; |
| 2808 | } |
| 2809 | } |
| 2810 | else if (BX_ENABLED(BX_PLATFORM_LINUX) ) |
| 2811 | { |
| 2812 | score += RendererType::Vulkan == renderer ? 50 : 0; |
| 2813 | score += RendererType::OpenGL == renderer ? 40 : 0; |
| 2814 | score += RendererType::OpenGLES == renderer ? 30 : 0; |
| 2815 | score += RendererType::Direct3D12 == renderer ? 20 : 0; |
| 2816 | score += RendererType::Direct3D11 == renderer ? 10 : 0; |
| 2817 | } |
| 2818 | else if (BX_ENABLED(BX_PLATFORM_OSX) ) |
| 2819 | { |
| 2820 | score += RendererType::Metal == renderer ? 20 : 0; |
| 2821 | score += RendererType::Vulkan == renderer ? 10 : 0; |
| 2822 | } |
| 2823 | else if (BX_ENABLED(BX_PLATFORM_IOS) || BX_ENABLED(BX_PLATFORM_VISIONOS)) |
| 2824 | { |
| 2825 | score += RendererType::Metal == renderer ? 20 : 0; |
| 2826 | } |
| 2827 | else if (BX_ENABLED(0 |
| 2828 | || BX_PLATFORM_ANDROID |
| 2829 | || BX_PLATFORM_EMSCRIPTEN |
| 2830 | || BX_PLATFORM_RPI |
| 2831 | ) ) |
| 2832 | { |
no test coverage detected