From 07e292bc6b563e49cefffd4a413929a469112b55 Mon Sep 17 00:00:00 2001 From: Haroon Qureshi Date: Thu, 25 Jun 2026 23:41:16 -0700 Subject: [PATCH] Make mjrf types opaque in header. PiperOrigin-RevId: 938409081 Change-Id: I8b9680dcb04f56aadf9ffd601b08025fc624c656 --- include/mujoco/mjrfilament.h | 14 ++++----- src/render/filament/CMakeLists.txt | 1 + src/render/filament/core/light.h | 1 + src/render/filament/core/mesh.h | 1 + src/render/filament/core/render_target.h | 1 + src/render/filament/core/renderable.h | 1 + src/render/filament/core/scene_view.h | 1 + src/render/filament/core/texture.h | 1 + src/render/filament/core/types.h | 36 ++++++++++++++++++++++++ 9 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 src/render/filament/core/types.h diff --git a/include/mujoco/mjrfilament.h b/include/mujoco/mjrfilament.h index 61be7d15..8758786a 100644 --- a/include/mujoco/mjrfilament.h +++ b/include/mujoco/mjrfilament.h @@ -52,13 +52,13 @@ extern "C" { // values are assumed to be 0/NULL unless otherwise specified. // // For now, we'll just define opaque handles for each of our components. -typedef struct mjrfContext_ {} mjrfContext; -typedef struct mjrfTexture_ {} mjrfTexture; -typedef struct mjrfMesh_ {} mjrfMesh; -typedef struct mjrfScene_ {} mjrfScene; -typedef struct mjrfLight_ {} mjrfLight; -typedef struct mjrfRenderable_ {} mjrfRenderable; -typedef struct mjrfRenderTarget_ {} mjrfRenderTarget; +typedef struct mjrfContext_ mjrfContext; +typedef struct mjrfTexture_ mjrfTexture; +typedef struct mjrfMesh_ mjrfMesh; +typedef struct mjrfScene_ mjrfScene; +typedef struct mjrfLight_ mjrfLight; +typedef struct mjrfRenderable_ mjrfRenderable; +typedef struct mjrfRenderTarget_ mjrfRenderTarget; // ## Rendering Context (mjrfContext) // diff --git a/src/render/filament/CMakeLists.txt b/src/render/filament/CMakeLists.txt index 3ff818cb..f0e565f2 100644 --- a/src/render/filament/CMakeLists.txt +++ b/src/render/filament/CMakeLists.txt @@ -52,6 +52,7 @@ target_sources(${MUJOCO_FILAMENT_TARGET_NAME} core/scene_view.h core/texture.cc core/texture.h + core/types.h support/filament_util.h support/filament_util.cc support/light_manager.h diff --git a/src/render/filament/core/light.h b/src/render/filament/core/light.h index cab666e9..acc885e7 100644 --- a/src/render/filament/core/light.h +++ b/src/render/filament/core/light.h @@ -21,6 +21,7 @@ #include #include #include +#include "render/filament/core/types.h" namespace mujoco { diff --git a/src/render/filament/core/mesh.h b/src/render/filament/core/mesh.h index 4a5a7737..f7077a66 100644 --- a/src/render/filament/core/mesh.h +++ b/src/render/filament/core/mesh.h @@ -29,6 +29,7 @@ #include #include #include +#include "render/filament/core/types.h" namespace mujoco { diff --git a/src/render/filament/core/render_target.h b/src/render/filament/core/render_target.h index f9a8e187..fd07ce90 100644 --- a/src/render/filament/core/render_target.h +++ b/src/render/filament/core/render_target.h @@ -23,6 +23,7 @@ #include #include #include "render/filament/core/texture.h" +#include "render/filament/core/types.h" namespace mujoco { diff --git a/src/render/filament/core/renderable.h b/src/render/filament/core/renderable.h index 137d4f4b..adf7cecc 100644 --- a/src/render/filament/core/renderable.h +++ b/src/render/filament/core/renderable.h @@ -32,6 +32,7 @@ #include "render/filament/core/material_manager.h" #include "render/filament/core/mesh.h" #include "render/filament/core/reflection_manager.h" +#include "render/filament/core/types.h" namespace mujoco { diff --git a/src/render/filament/core/scene_view.h b/src/render/filament/core/scene_view.h index 53f9b160..71a2ac5f 100644 --- a/src/render/filament/core/scene_view.h +++ b/src/render/filament/core/scene_view.h @@ -34,6 +34,7 @@ #include "render/filament/core/reflection_manager.h" #include "render/filament/core/renderable.h" #include "render/filament/core/texture.h" +#include "render/filament/core/types.h" namespace mujoco { diff --git a/src/render/filament/core/texture.h b/src/render/filament/core/texture.h index 230f12e0..5a9177dd 100644 --- a/src/render/filament/core/texture.h +++ b/src/render/filament/core/texture.h @@ -20,6 +20,7 @@ #include #include #include +#include "render/filament/core/types.h" // Functions for creating filament textures. namespace mujoco { diff --git a/src/render/filament/core/types.h b/src/render/filament/core/types.h new file mode 100644 index 00000000..b301ad73 --- /dev/null +++ b/src/render/filament/core/types.h @@ -0,0 +1,36 @@ +// Copyright 2026 DeepMind Technologies Limited +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef MUJOCO_SRC_RENDER_FILAMENT_CORE_TYPES_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_CORE_TYPES_H_ + +#if defined(__cplusplus) +extern "C" { +#endif + +// These types are only forward declared in the API. We define them concretely +// here to allow us to use them in the core classes. +struct mjrfContext_ {}; +struct mjrfTexture_ {}; +struct mjrfMesh_ {}; +struct mjrfScene_ {}; +struct mjrfLight_ {}; +struct mjrfRenderable_ {}; +struct mjrfRenderTarget_ {}; + +#if defined(__cplusplus) +} // extern "C" +#endif + +#endif // MUJOCO_SRC_RENDER_FILAMENT_CORE_TYPES_H_