Move OpenGL runtime classification into renderer backend
This commit is contained in:
@@ -50,16 +50,7 @@ void App::initShaders()
|
||||
LOG("EXT: %s", extension_storage.back().c_str());
|
||||
}
|
||||
|
||||
pp::renderer::gl::OpenGlRuntime runtime;
|
||||
#if __GL__
|
||||
runtime.desktop_gl = true;
|
||||
#endif
|
||||
#if __GLES__
|
||||
runtime.gles = true;
|
||||
#endif
|
||||
#if __WEB__
|
||||
runtime.web = true;
|
||||
#endif
|
||||
const auto runtime = pp::renderer::gl::opengl_runtime_for_current_build();
|
||||
const auto capabilities = pp::renderer::gl::detect_opengl_capabilities(extension_views, runtime);
|
||||
ShaderManager::ext_framebuffer_fetch = capabilities.framebuffer_fetch;
|
||||
ShaderManager::ext_map_aligned = capabilities.map_buffer_alignment;
|
||||
@@ -69,12 +60,12 @@ void App::initShaders()
|
||||
ShaderManager::set_render_device_features(pp::renderer::gl::render_device_features(capabilities));
|
||||
});
|
||||
|
||||
#if __GL__
|
||||
// In OpenGL 3.3 these should be already available
|
||||
ShaderManager::ext_float32_linear = true;
|
||||
ShaderManager::ext_float32 = true;
|
||||
ShaderManager::ext_float16 = true;
|
||||
#endif
|
||||
if (pp::renderer::gl::opengl_runtime_for_current_build().desktop_gl) {
|
||||
// In OpenGL 3.3 these should be already available.
|
||||
ShaderManager::ext_float32_linear = true;
|
||||
ShaderManager::ext_float32 = true;
|
||||
ShaderManager::ext_float16 = true;
|
||||
}
|
||||
ShaderManager::set_render_device_features(
|
||||
pp::renderer::gl::render_device_features(shader_manager_capabilities()));
|
||||
|
||||
|
||||
@@ -201,6 +201,21 @@ OpenGlCapabilities detect_opengl_capabilities(
|
||||
return capabilities;
|
||||
}
|
||||
|
||||
OpenGlRuntime opengl_runtime_for_current_build() noexcept
|
||||
{
|
||||
OpenGlRuntime runtime;
|
||||
#if defined(PP_RENDERER_GL_RUNTIME_DESKTOP)
|
||||
runtime.desktop_gl = true;
|
||||
#endif
|
||||
#if defined(PP_RENDERER_GL_RUNTIME_GLES)
|
||||
runtime.gles = true;
|
||||
#endif
|
||||
#if defined(PP_RENDERER_GL_RUNTIME_WEB)
|
||||
runtime.web = true;
|
||||
#endif
|
||||
return runtime;
|
||||
}
|
||||
|
||||
pp::renderer::RenderDeviceFeatures render_device_features(OpenGlCapabilities capabilities) noexcept
|
||||
{
|
||||
return pp::renderer::RenderDeviceFeatures {
|
||||
|
||||
@@ -678,6 +678,7 @@ struct OpenGlMeshDeleteDispatch {
|
||||
[[nodiscard]] OpenGlCapabilities detect_opengl_capabilities(
|
||||
std::span<const std::string_view> extensions,
|
||||
OpenGlRuntime runtime) noexcept;
|
||||
[[nodiscard]] OpenGlRuntime opengl_runtime_for_current_build() noexcept;
|
||||
[[nodiscard]] pp::renderer::RenderDeviceFeatures render_device_features(
|
||||
OpenGlCapabilities capabilities) noexcept;
|
||||
[[nodiscard]] OpenGlInitialState panopainter_initial_state() noexcept;
|
||||
|
||||
Reference in New Issue
Block a user