Add flag for software rendering.

This flag is currently unused.

PiperOrigin-RevId: 885453938
Change-Id: Ia2112410ff12c7b18ad154f18887d4d795bafa3d
This commit is contained in:
Haroon Qureshi
2026-03-18 01:47:21 -07:00
committed by Copybara-Service
parent 60be42e83c
commit bc1f9513be
5 changed files with 27 additions and 3 deletions
+12 -3
View File
@@ -28,14 +28,16 @@ bool IsFilament(GraphicsMode gfx_mode) {
return gfx_mode == GraphicsMode::FilamentOpenGl ||
gfx_mode == GraphicsMode::FilamentVulkan ||
gfx_mode == GraphicsMode::FilamentWebGl ||
gfx_mode == GraphicsMode::FilamentOpenGlHeadless;
gfx_mode == GraphicsMode::FilamentOpenGlHeadless ||
gfx_mode == GraphicsMode::FilamentOpenGlSoftware;
}
bool IsOpenGl(GraphicsMode gfx_mode) {
return gfx_mode == GraphicsMode::ClassicOpenGl ||
gfx_mode == GraphicsMode::ClassicOpenGlHeadless ||
gfx_mode == GraphicsMode::FilamentOpenGl ||
gfx_mode == GraphicsMode::FilamentOpenGlHeadless;
gfx_mode == GraphicsMode::FilamentOpenGlHeadless ||
gfx_mode == GraphicsMode::FilamentOpenGlSoftware;
}
bool IsVulkan(GraphicsMode gfx_mode) {
@@ -48,7 +50,12 @@ bool IsWebGl(GraphicsMode gfx_mode) {
bool IsHeadless(GraphicsMode gfx_mode) {
return gfx_mode == GraphicsMode::ClassicOpenGlHeadless ||
gfx_mode == GraphicsMode::FilamentOpenGlHeadless;
gfx_mode == GraphicsMode::FilamentOpenGlHeadless ||
gfx_mode == GraphicsMode::FilamentOpenGlSoftware;
}
bool IsSoftware(GraphicsMode gfx_mode) {
return gfx_mode == GraphicsMode::FilamentOpenGlSoftware;
}
GraphicsMode GraphicsModeFromString(std::string_view str,
@@ -65,6 +72,8 @@ GraphicsMode GraphicsModeFromString(std::string_view str,
return GraphicsMode::FilamentWebGl;
} else if (str == "opengl_headless") {
return GraphicsMode::FilamentOpenGlHeadless;
} else if (str == "opengl_software") {
return GraphicsMode::FilamentOpenGlSoftware;
} else if (str.empty()) {
return default_mode;
} else {
@@ -38,6 +38,9 @@ enum class GraphicsMode {
// Similar to FilamentOpenGl, but assumes "headless" rendering.
FilamentOpenGlHeadless,
// Similar to FilamentOpenGl, but forces software rendering.
FilamentOpenGlSoftware,
};
bool IsClassic(GraphicsMode gfx_mode);
@@ -46,6 +49,7 @@ bool IsOpenGl(GraphicsMode gfx_mode);
bool IsVulkan(GraphicsMode gfx_mode);
bool IsWebGl(GraphicsMode gfx_mode);
bool IsHeadless(GraphicsMode gfx_mode);
bool IsSoftware(GraphicsMode gfx_mode);
GraphicsMode GraphicsModeFromString(std::string_view str,
GraphicsMode default_mode);
+1
View File
@@ -88,6 +88,7 @@ void Renderer::Init(const mjModel* model) {
mjrFilamentConfig render_config;
mjrf_defaultFilamentConfig(&render_config);
render_config.native_window = native_window_;
render_config.force_software_rendering = IsSoftware(gfx_);
render_config.graphics_api =
IsOpenGl(gfx_) || IsWebGl(gfx_) ? mjGFX_OPENGL : mjGFX_VULKAN;
mjrf_makeFilamentContext(model, &render_context_, &render_config);