From 64597f45d3f173a2d14c06e34a1f87127aa12d47 Mon Sep 17 00:00:00 2001 From: Haroon Qureshi Date: Wed, 4 Mar 2026 07:29:59 -0800 Subject: [PATCH] Move function that parses the graphics mode from a string into graphics_mode.cc. PiperOrigin-RevId: 878482669 Change-Id: I8b713bc740c5711b9c7cc9ea63c21bad42cd2943 --- src/experimental/platform/graphics_mode.cc | 25 ++++++++++++++++++++++ src/experimental/platform/graphics_mode.h | 5 +++++ src/experimental/studio/main.cc | 16 ++------------ 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/src/experimental/platform/graphics_mode.cc b/src/experimental/platform/graphics_mode.cc index 37c2e110..011cd79d 100644 --- a/src/experimental/platform/graphics_mode.cc +++ b/src/experimental/platform/graphics_mode.cc @@ -14,6 +14,9 @@ #include "experimental/platform/graphics_mode.h" +#include +#include + namespace mujoco::platform { bool IsClassic(GraphicsMode gfx_mode) { @@ -48,4 +51,26 @@ bool IsHeadless(GraphicsMode gfx_mode) { gfx_mode == GraphicsMode::FilamentOpenGlHeadless; } +GraphicsMode GraphicsModeFromString(std::string_view str, + GraphicsMode default_mode) { + if (str == "classic") { + return GraphicsMode::ClassicOpenGl; + } else if (str == "classic_headless") { + return GraphicsMode::ClassicOpenGlHeadless; + } else if (str == "opengl") { + return GraphicsMode::FilamentOpenGl; + } else if (str == "vulkan") { + return GraphicsMode::FilamentVulkan; + } else if (str == "webgl") { + return GraphicsMode::FilamentWebGl; + } else if (str == "opengl_headless") { + return GraphicsMode::FilamentOpenGlHeadless; + } else if (str.empty()) { + return default_mode; + } else { + mju_error("Unsupported graphics mode: %s", str.data()); + return default_mode; + } +} + } // namespace mujoco::platform diff --git a/src/experimental/platform/graphics_mode.h b/src/experimental/platform/graphics_mode.h index 1e6ba796..009f36ad 100644 --- a/src/experimental/platform/graphics_mode.h +++ b/src/experimental/platform/graphics_mode.h @@ -15,6 +15,8 @@ #ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_GRAPHICS_MODE_H_ #define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_GRAPHICS_MODE_H_ +#include + namespace mujoco::platform { // Describes the configuration of the graphics and rendering systems. @@ -45,6 +47,9 @@ bool IsVulkan(GraphicsMode gfx_mode); bool IsWebGl(GraphicsMode gfx_mode); bool IsHeadless(GraphicsMode gfx_mode); +GraphicsMode GraphicsModeFromString(std::string_view str, + GraphicsMode default_mode); + } // namespace mujoco::platform #endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_GRAPHICS_MODE_H_ diff --git a/src/experimental/studio/main.cc b/src/experimental/studio/main.cc index 312883e6..36d05bb3 100644 --- a/src/experimental/studio/main.cc +++ b/src/experimental/studio/main.cc @@ -105,20 +105,8 @@ int main(int argc, char** argv, char** envp) { std::string gfx = absl::GetFlag(FLAGS_gfx); mujoco::platform::GraphicsMode gfx_mode = - mujoco::platform::GraphicsMode::FilamentVulkan; - if (gfx == "classic") { - gfx_mode = mujoco::platform::GraphicsMode::ClassicOpenGl; - } else if (gfx == "classic_headless") { - gfx_mode = mujoco::platform::GraphicsMode::ClassicOpenGlHeadless; - } else if (gfx == "opengl") { - gfx_mode = mujoco::platform::GraphicsMode::FilamentOpenGl; - } else if (gfx == "opengl_headless") { - gfx_mode = mujoco::platform::GraphicsMode::FilamentOpenGlHeadless; - } else if (gfx == "vulkan" || gfx.empty()) { - gfx_mode = mujoco::platform::GraphicsMode::FilamentVulkan; - } else { - mju_error("Unsupported graphics API: %s", gfx.c_str()); - } + mujoco::platform::GraphicsModeFromString( + gfx, mujoco::platform::GraphicsMode::FilamentVulkan); const int width = absl::GetFlag(FLAGS_window_width); const int height = absl::GetFlag(FLAGS_window_height);