From 5bde33f856dfeeacbb7e9b6719c8ccc07a8bebbc Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz Date: Mon, 17 Nov 2025 18:33:40 +0000 Subject: [PATCH] ipc: Split protocol json into separate files Part-of: --- src/xrt/ipc/CMakeLists.txt | 23 +- src/xrt/ipc/shared/proto.json | 671 ------------------ src/xrt/ipc/shared/proto.json.license | 3 - src/xrt/ipc/shared/proto/10-instance.json | 19 + .../ipc/shared/proto/10-instance.json.license | 3 + src/xrt/ipc/shared/proto/50-compositor.json | 119 ++++ .../shared/proto/50-compositor.json.license | 3 + src/xrt/ipc/shared/proto/50-device.json | 245 +++++++ .../ipc/shared/proto/50-device.json.license | 3 + src/xrt/ipc/shared/proto/50-future.json | 33 + .../ipc/shared/proto/50-future.json.license | 3 + src/xrt/ipc/shared/proto/50-session.json | 22 + .../ipc/shared/proto/50-session.json.license | 3 + src/xrt/ipc/shared/proto/50-space.json | 122 ++++ .../ipc/shared/proto/50-space.json.license | 3 + src/xrt/ipc/shared/proto/50-swapchain.json | 66 ++ .../shared/proto/50-swapchain.json.license | 3 + src/xrt/ipc/shared/proto/50-system.json | 66 ++ .../ipc/shared/proto/50-system.json.license | 3 + 19 files changed, 733 insertions(+), 680 deletions(-) delete mode 100644 src/xrt/ipc/shared/proto.json delete mode 100644 src/xrt/ipc/shared/proto.json.license create mode 100644 src/xrt/ipc/shared/proto/10-instance.json create mode 100644 src/xrt/ipc/shared/proto/10-instance.json.license create mode 100644 src/xrt/ipc/shared/proto/50-compositor.json create mode 100644 src/xrt/ipc/shared/proto/50-compositor.json.license create mode 100644 src/xrt/ipc/shared/proto/50-device.json create mode 100644 src/xrt/ipc/shared/proto/50-device.json.license create mode 100644 src/xrt/ipc/shared/proto/50-future.json create mode 100644 src/xrt/ipc/shared/proto/50-future.json.license create mode 100644 src/xrt/ipc/shared/proto/50-session.json create mode 100644 src/xrt/ipc/shared/proto/50-session.json.license create mode 100644 src/xrt/ipc/shared/proto/50-space.json create mode 100644 src/xrt/ipc/shared/proto/50-space.json.license create mode 100644 src/xrt/ipc/shared/proto/50-swapchain.json create mode 100644 src/xrt/ipc/shared/proto/50-swapchain.json.license create mode 100644 src/xrt/ipc/shared/proto/50-system.json create mode 100644 src/xrt/ipc/shared/proto/50-system.json.license diff --git a/src/xrt/ipc/CMakeLists.txt b/src/xrt/ipc/CMakeLists.txt index babb29497..21ad6031e 100644 --- a/src/xrt/ipc/CMakeLists.txt +++ b/src/xrt/ipc/CMakeLists.txt @@ -1,6 +1,19 @@ # Copyright 2020-2021, Collabora, Ltd. +# Copyright 2025, NVIDIA CORPORATION. # SPDX-License-Identifier: BSL-1.0 +### +# Merge split protocol JSON files into single proto.json +file(GLOB PROTO_JSON_FILES "${CMAKE_CURRENT_SOURCE_DIR}/shared/proto/*.json") + +merge_json_files( + OUTPUT + "${CMAKE_CURRENT_BINARY_DIR}/proto.json" + SOURCES + ${PROTO_JSON_FILES} + IGNORE_SCHEMA + ) + ### # Generator @@ -16,13 +29,12 @@ foreach( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${fn}" COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/shared/proto.py - ${CMAKE_CURRENT_SOURCE_DIR}/shared/proto.json - "${CMAKE_CURRENT_BINARY_DIR}/${fn}" + ${CMAKE_CURRENT_BINARY_DIR}/proto.json "${CMAKE_CURRENT_BINARY_DIR}/${fn}" VERBATIM DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/shared/proto.py ${CMAKE_CURRENT_SOURCE_DIR}/shared/ipcproto/common.py - ${CMAKE_CURRENT_SOURCE_DIR}/shared/proto.json + ${CMAKE_CURRENT_BINARY_DIR}/proto.json ${CMAKE_CURRENT_SOURCE_DIR}/shared/ipc_protocol_generated.h.template COMMENT "Generating ${fn} from protocol JSON description" ) @@ -33,13 +45,12 @@ add_custom_command( OUTPUT "${CMAKE_BINARY_DIR}/ipc-structs.txt" COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/shared/proto.py - ${CMAKE_CURRENT_SOURCE_DIR}/shared/proto.json - "${CMAKE_BINARY_DIR}/ipc-structs.txt" + ${CMAKE_CURRENT_BINARY_DIR}/proto.json "${CMAKE_BINARY_DIR}/ipc-structs.txt" VERBATIM DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/shared/proto.py ${CMAKE_CURRENT_SOURCE_DIR}/shared/ipcproto/common.py - ${CMAKE_CURRENT_SOURCE_DIR}/shared/proto.json + ${CMAKE_CURRENT_BINARY_DIR}/proto.json COMMENT "Generating ipc-structs.txt from protocol JSON description" ) diff --git a/src/xrt/ipc/shared/proto.json b/src/xrt/ipc/shared/proto.json deleted file mode 100644 index b8033ec3e..000000000 --- a/src/xrt/ipc/shared/proto.json +++ /dev/null @@ -1,671 +0,0 @@ -{ - "$schema": "./proto.schema.json", - - "instance_get_shm_fd": { - "out_handles": {"type": "xrt_shmem_handle_t"} - }, - - "instance_describe_client": { - "in": [ - {"name": "desc", "type": "struct ipc_client_description"} - ] - }, - - "instance_is_system_available": { - "out": [ - {"name": "available", "type": "bool"} - ] - }, - - "system_get_properties": { - "out": [ - {"name": "properties", "type": "struct xrt_system_properties"} - ] - }, - - "system_get_client_info": { - "in": [ - {"name": "id", "type": "uint32_t"} - ], - "out": [ - {"name": "ias", "type": "struct ipc_app_state"} - ] - }, - - "system_get_clients": { - "out": [ - {"name": "clients", "type": "struct ipc_client_list"} - ] - }, - - "system_set_primary_client": { - "in": [ - {"name": "id", "type": "uint32_t"} - ] - }, - - "system_set_focused_client": { - "in": [ - {"name": "id", "type": "uint32_t"} - ] - }, - - "system_toggle_io_client": { - "in": [ - {"name": "id", "type": "uint32_t"} - ] - }, - - "system_devices_get_roles": { - "out": [ - {"name": "system_roles", "type": "struct xrt_system_roles"} - ] - }, - - "system_devices_begin_feature": { - "in": [ - {"name": "type", "type": "enum xrt_device_feature_type"} - ] - }, - - "system_devices_end_feature": { - "in": [ - {"name": "type", "type": "enum xrt_device_feature_type"} - ] - }, - - "system_compositor_get_info": { - "out": [ - {"name": "info", "type": "struct xrt_system_compositor_info"} - ] - }, - - "session_create": { - "in": [ - {"name": "xsi", "type": "struct xrt_session_info"}, - {"name": "create_native_compositor", "type": "bool"} - ] - }, - - "session_poll_events": { - "out": [ - {"name": "event", "type": "union xrt_session_event"} - ] - }, - - "session_begin": {}, - - "session_end": {}, - - "session_destroy": {}, - - "space_create_semantic_ids": { - "out": [ - {"name": "root_id", "type": "uint32_t"}, - {"name": "view_id", "type": "uint32_t"}, - {"name": "local_id", "type": "uint32_t"}, - {"name": "local_floor_id", "type": "uint32_t"}, - {"name": "stage_id", "type": "uint32_t"}, - {"name": "unbounded_id", "type": "uint32_t"} - ] - }, - - "space_create_offset": { - "in": [ - {"name": "parent_id", "type": "uint32_t"}, - {"name": "offset", "type": "struct xrt_pose"} - ], - "out": [ - {"name": "space_id", "type": "uint32_t"} - ] - }, - - "space_create_pose": { - "in": [ - {"name": "xdev_id", "type": "uint32_t"}, - {"name": "name", "type": "enum xrt_input_name"} - ], - "out": [ - {"name": "space_id", "type": "uint32_t"} - ] - }, - - "space_locate_space": { - "in": [ - {"name": "base_space_id", "type": "uint32_t"}, - {"name": "base_offset", "type": "struct xrt_pose"}, - {"name": "at_timestamp", "type": "int64_t"}, - {"name": "space_id", "type": "uint32_t"}, - {"name": "offset", "type": "struct xrt_pose"} - ], - "out": [ - {"name": "relation", "type": "struct xrt_space_relation"} - ] - }, - - "space_locate_spaces": { - "varlen": true, - "in": [ - {"name": "base_space_id", "type": "uint32_t"}, - {"name": "base_offset", "type": "struct xrt_pose"}, - {"name": "space_count", "type": "uint32_t"}, - {"name": "at_timestamp", "type": "int64_t"} - ] - }, - - "space_locate_device": { - "in": [ - {"name": "base_space_id", "type": "uint32_t"}, - {"name": "base_offset", "type": "struct xrt_pose"}, - {"name": "at_timestamp", "type": "int64_t"}, - {"name": "xdev_id", "type": "uint32_t"} - ], - "out": [ - {"name": "relation", "type": "struct xrt_space_relation"} - ] - }, - - "space_destroy": { - "in": [ - {"name": "space_id", "type": "uint32_t"} - ] - }, - - "space_mark_ref_space_in_use": { - "in": [ - {"name": "type", "type": "enum xrt_reference_space_type"} - ] - }, - - "space_unmark_ref_space_in_use": { - "in": [ - {"name": "type", "type": "enum xrt_reference_space_type"} - ] - }, - - "space_recenter_local_spaces": { - }, - - "space_get_tracking_origin_offset": { - "in": [ - {"name": "origin_id", "type": "uint32_t"} - ], - "out": [ - {"name": "offset", "type": "struct xrt_pose"} - ] - }, - - "space_set_tracking_origin_offset": { - "in": [ - {"name": "origin_id", "type": "uint32_t"}, - {"name": "offset", "type": "struct xrt_pose"} - ] - }, - - "space_get_reference_space_offset": { - "in": [ - {"name": "type", "type": "enum xrt_reference_space_type"} - ], - "out": [ - {"name": "offset", "type": "struct xrt_pose"} - ] - }, - - "space_set_reference_space_offset": { - "in": [ - {"name": "type", "type": "enum xrt_reference_space_type"}, - {"name": "offset", "type": "struct xrt_pose"} - ] - }, - - "compositor_get_info": { - "out": [ - {"name": "info", "type": "struct xrt_compositor_info"} - ] - }, - - "compositor_predict_frame": { - "out": [ - {"name": "frame_id", "type": "int64_t"}, - {"name": "wake_up_time", "type": "int64_t"}, - {"name": "predicted_display_time", "type": "int64_t"}, - {"name": "predicted_display_period", "type": "int64_t"} - ] - }, - - "compositor_wait_woke": { - "in": [ - {"name": "frame_id", "type": "int64_t"} - ] - }, - - "compositor_begin_frame": { - "in": [ - {"name": "frame_id", "type": "int64_t"} - ] - }, - - "compositor_discard_frame": { - "in": [ - {"name": "frame_id", "type": "int64_t"} - ] - }, - - "compositor_layer_sync": { - "in": [ - {"name": "slot_id", "type": "uint32_t"} - ], - "in_handles": {"type": "xrt_graphics_sync_handle_t"}, - "out": [ - {"name": "free_slot_id", "type": "uint32_t"} - ] - }, - - "compositor_layer_sync_with_semaphore": { - "in": [ - {"name": "slot_id", "type": "uint32_t"}, - {"name": "semaphore_id", "type": "uint32_t"}, - {"name": "semaphore_value", "type": "uint64_t"} - ], - "out": [ - {"name": "free_slot_id", "type": "uint32_t"} - ] - }, - - "compositor_set_performance_level": { - "in": [ - {"name": "domain", "type": "enum xrt_perf_domain"}, - {"name": "level", "type": "enum xrt_perf_set_level"} - ] - }, - - "compositor_set_thread_hint": { - "in": [ - {"name": "hint", "type": "enum xrt_thread_hint"}, - {"name": "thread_id", "type": "uint32_t"} - ] - }, - - "compositor_get_display_refresh_rate": { - "out": [ - {"name": "out_display_refresh_rate_hz", "type": "float"} - ] - }, - - "compositor_request_display_refresh_rate": { - "in": [ - {"name": "display_refresh_rate_hz", "type": "float"} - ] - }, - - "compositor_get_reference_bounds_rect": { - "in": [ - {"name": "reference_space_type", "type": "enum xrt_reference_space_type"} - ], - "out": [ - {"name": "bounds", "type": "struct xrt_vec2"} - ] - }, - - "swapchain_get_properties": { - "in": [ - {"name": "info", "type": "struct xrt_swapchain_create_info"} - ], - "out": [ - {"name": "xsccp", "type": "struct xrt_swapchain_create_properties"} - ] - }, - - "swapchain_create": { - "in": [ - {"name": "info", "type": "struct xrt_swapchain_create_info"} - ], - "out": [ - {"name": "id", "type": "uint32_t"}, - {"name": "image_count", "type": "uint32_t"}, - {"name": "size", "type": "uint64_t"}, - {"name": "use_dedicated_allocation", "type": "bool"} - ], - "out_handles": {"type": "xrt_graphics_buffer_handle_t"} - }, - - "compositor_create_passthrough": { - "in": [ - {"name": "info", "type": "struct xrt_passthrough_create_info"} - ] - }, - - "compositor_create_passthrough_layer": { - "in": [ - {"name": "info", "type": "struct xrt_passthrough_layer_create_info"} - ] - }, - - "compositor_destroy_passthrough": {}, - - "swapchain_import": { - "in": [ - {"name": "info", "type": "struct xrt_swapchain_create_info"}, - {"name": "args", "type": "struct ipc_arg_swapchain_from_native"} - ], - "out": [ - {"name": "id", "type": "uint32_t"} - ], - "in_handles": {"type": "xrt_graphics_buffer_handle_t"} - }, - - "swapchain_wait_image": { - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "timeout_ns", "type": "int64_t"}, - {"name": "index", "type": "uint32_t"} - ] - }, - - "swapchain_acquire_image": { - "in": [ - {"name": "id", "type": "uint32_t"} - ], - "out": [ - {"name": "index", "type": "uint32_t"} - ] - }, - - "swapchain_release_image": { - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "index", "type": "uint32_t"} - ] - }, - - "swapchain_destroy": { - "in": [ - {"name": "id", "type": "uint32_t"} - ] - }, - - "compositor_semaphore_create": { - "out": [ - {"name": "id", "type": "uint32_t"} - ], - "out_handles": {"type": "xrt_graphics_sync_handle_t"} - }, - - "compositor_semaphore_destroy": { - "in": [ - {"name": "id", "type": "uint32_t"} - ] - }, - - "device_update_input": { - "in": [ - {"name": "id", "type": "uint32_t"} - ] - }, - - "device_get_tracked_pose": { - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "name", "type": "enum xrt_input_name"}, - {"name": "at_timestamp", "type": "int64_t"} - ], - "out": [ - {"name": "relation", "type": "struct xrt_space_relation"} - ] - }, - - "device_get_hand_tracking": { - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "name", "type": "enum xrt_input_name"}, - {"name": "at_timestamp", "type": "int64_t"} - ], - "out": [ - {"name": "value", "type": "struct xrt_hand_joint_set"}, - {"name": "timestamp", "type": "int64_t"} - ] - }, - - "device_get_view_poses": { - "varlen": true, - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "fallback_eye_relation", "type": "struct xrt_vec3"}, - {"name": "at_timestamp_ns", "type": "int64_t"}, - {"name": "view_type", "type": "enum xrt_view_type"}, - {"name": "view_count", "type": "uint32_t"} - ], - "out": [ - {"name": "head_relation", "type": "struct xrt_space_relation"}, - {"name": "view_count", "type": "uint32_t"} - ] - }, - - "device_get_view_poses_2": { - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "fallback_eye_relation", "type": "struct xrt_vec3"}, - {"name": "at_timestamp_ns", "type": "int64_t"}, - {"name": "view_type", "type": "enum xrt_view_type"}, - {"name": "view_count", "type": "uint32_t"} - ], - "out": [ - {"name": "info", "type": "struct ipc_info_get_view_poses_2"} - ] - }, - - "device_compute_distortion": { - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "view", "type": "uint32_t"}, - {"name": "u", "type": "float"}, - {"name": "v", "type": "float"} - ], - "out": [ - {"name": "triplet", "type": "struct xrt_uv_triplet"} - ] - }, - - "device_begin_plane_detection_ext": { - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "plane_detection_id", "type": "uint64_t"} - ], - "out": [ - {"name": "out_plane_detection_id", "type": "uint64_t"} - ] - }, - - "device_destroy_plane_detection_ext": { - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "plane_detection_id", "type": "uint64_t"} - ] - }, - - "device_get_plane_detection_state_ext": { - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "plane_detection_id", "type": "uint64_t"} - ], - "out": [ - {"name": "state", "type": "enum xrt_plane_detector_state_ext"} - ] - }, - - "device_get_plane_detections_ext": { - "varlen": true, - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "plane_detection_id", "type": "uint64_t"} - ], - "out": [ - {"name": "location_size", "type": "uint32_t"}, - {"name": "polygon_size", "type": "uint32_t"}, - {"name": "vertex_size", "type": "uint32_t"} - ] - }, - - "device_get_presence": { - "in": [ - {"name": "id", "type": "uint32_t"} - ], - "out": [ - {"name": "presence", "type": "bool"} - ] - }, - - "device_set_output": { - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "name", "type": "enum xrt_output_name"}, - {"name": "value", "type": "struct xrt_output_value"} - ] - }, - - "device_set_haptic_output": { - "varlen": true, - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "name", "type": "enum xrt_output_name"}, - {"name": "samples", "type": "struct ipc_pcm_haptic_buffer"} - ], - "out":[ - {"name": "samples_consumed", "type": "uint32_t"} - ] - }, - - "device_get_output_limits": { - "in": [ - {"name": "id", "type": "uint32_t"} - ], - "out":[ - {"name": "limits", "type": "struct xrt_output_limits"} - ] - }, - - "device_get_visibility_mask": { - "varlen": true, - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "type", "type": "enum xrt_visibility_mask_type"}, - {"name": "view_index", "type": "uint32_t"} - ], - "out": [ - {"name": "mask_size", "type": "uint32_t"} - ] - }, - - "device_is_form_factor_available": { - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "form_factor", "type": "enum xrt_form_factor"} - ], - "out": [ - {"name": "available", "type": "bool"} - ] - }, - - "device_get_face_tracking": { - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "facial_expression_type", "type": "enum xrt_input_name"}, - {"name": "at_timestamp_ns", "type": "int64_t"} - ], - "out": [ - {"name": "value", "type": "struct xrt_facial_expression_set"} - ] - }, - - "device_get_body_skeleton": { - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "body_tracking_type", "type": "enum xrt_input_name"} - ], - "out": [ - {"name": "value", "type": "struct xrt_body_skeleton"} - ] - }, - - "device_get_body_joints": { - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "body_tracking_type", "type": "enum xrt_input_name"}, - {"name": "desired_timestamp_ns", "type": "int64_t"} - ], - "out": [ - {"name": "value", "type": "struct xrt_body_joint_set"} - ] - }, - - "device_reset_body_tracking_calibration_meta": { - "in": [ - {"name": "id", "type": "uint32_t"} - ] - }, - - "device_set_body_tracking_calibration_override_meta": { - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "new_body_height", "type": "float"} - ] - }, - - "device_get_battery_status": { - "in": [ - {"name": "id", "type": "uint32_t"} - ], - "out": [ - {"name": "present", "type": "bool"}, - {"name": "charging", "type": "bool"}, - {"name": "charge", "type": "float"} - ] - }, - - "device_get_brightness": { - "in": [ - {"name": "id", "type": "uint32_t"} - ], - "out": [ - {"name": "brightness", "type": "float"} - ] - }, - - "device_set_brightness": { - "in": [ - {"name": "id", "type": "uint32_t"}, - {"name": "brightness", "type": "float"}, - {"name": "relative", "type": "bool"} - ] - }, - - "future_get_state": { - "in": [ - {"name": "future_id", "type": "uint32_t"} - ], - "out": [ - {"name": "out_state", "type": "enum xrt_future_state"} - ] - }, - - "future_cancel": { - "in": [ - {"name": "future_id", "type": "uint32_t"} - ] - }, - - "future_destroy": { - "in": [ - {"name": "future_id", "type": "uint32_t"} - ] - }, - - "future_get_result": { - "in": [ - {"name": "future_id", "type": "uint32_t"} - ], - "out": [ - {"name": "out_ft_result", "type": "struct xrt_future_result"} - ] - } -} diff --git a/src/xrt/ipc/shared/proto.json.license b/src/xrt/ipc/shared/proto.json.license deleted file mode 100644 index 237108040..000000000 --- a/src/xrt/ipc/shared/proto.json.license +++ /dev/null @@ -1,3 +0,0 @@ -Copyright 2018-2023, Collabora, Ltd. - -SPDX-License-Identifier: BSL-1.0 diff --git a/src/xrt/ipc/shared/proto/10-instance.json b/src/xrt/ipc/shared/proto/10-instance.json new file mode 100644 index 000000000..aeab6fb24 --- /dev/null +++ b/src/xrt/ipc/shared/proto/10-instance.json @@ -0,0 +1,19 @@ +{ + "$schema": "../proto.schema.json", + + "instance_get_shm_fd": { + "out_handles": {"type": "xrt_shmem_handle_t"} + }, + + "instance_describe_client": { + "in": [ + {"name": "desc", "type": "struct ipc_client_description"} + ] + }, + + "instance_is_system_available": { + "out": [ + {"name": "available", "type": "bool"} + ] + } +} diff --git a/src/xrt/ipc/shared/proto/10-instance.json.license b/src/xrt/ipc/shared/proto/10-instance.json.license new file mode 100644 index 000000000..188bb0978 --- /dev/null +++ b/src/xrt/ipc/shared/proto/10-instance.json.license @@ -0,0 +1,3 @@ +Copyright 2018-2025, Collabora, Ltd. + +SPDX-License-Identifier: BSL-1.0 diff --git a/src/xrt/ipc/shared/proto/50-compositor.json b/src/xrt/ipc/shared/proto/50-compositor.json new file mode 100644 index 000000000..95c65bf67 --- /dev/null +++ b/src/xrt/ipc/shared/proto/50-compositor.json @@ -0,0 +1,119 @@ +{ + "$schema": "../proto.schema.json", + + "compositor_get_info": { + "out": [ + {"name": "info", "type": "struct xrt_compositor_info"} + ] + }, + + "compositor_predict_frame": { + "out": [ + {"name": "frame_id", "type": "int64_t"}, + {"name": "wake_up_time", "type": "int64_t"}, + {"name": "predicted_display_time", "type": "int64_t"}, + {"name": "predicted_display_period", "type": "int64_t"} + ] + }, + + "compositor_wait_woke": { + "in": [ + {"name": "frame_id", "type": "int64_t"} + ] + }, + + "compositor_begin_frame": { + "in": [ + {"name": "frame_id", "type": "int64_t"} + ] + }, + + "compositor_discard_frame": { + "in": [ + {"name": "frame_id", "type": "int64_t"} + ] + }, + + "compositor_layer_sync": { + "in": [ + {"name": "slot_id", "type": "uint32_t"} + ], + "in_handles": {"type": "xrt_graphics_sync_handle_t"}, + "out": [ + {"name": "free_slot_id", "type": "uint32_t"} + ] + }, + + "compositor_layer_sync_with_semaphore": { + "in": [ + {"name": "slot_id", "type": "uint32_t"}, + {"name": "semaphore_id", "type": "uint32_t"}, + {"name": "semaphore_value", "type": "uint64_t"} + ], + "out": [ + {"name": "free_slot_id", "type": "uint32_t"} + ] + }, + + "compositor_set_performance_level": { + "in": [ + {"name": "domain", "type": "enum xrt_perf_domain"}, + {"name": "level", "type": "enum xrt_perf_set_level"} + ] + }, + + "compositor_set_thread_hint": { + "in": [ + {"name": "hint", "type": "enum xrt_thread_hint"}, + {"name": "thread_id", "type": "uint32_t"} + ] + }, + + "compositor_get_display_refresh_rate": { + "out": [ + {"name": "out_display_refresh_rate_hz", "type": "float"} + ] + }, + + "compositor_request_display_refresh_rate": { + "in": [ + {"name": "display_refresh_rate_hz", "type": "float"} + ] + }, + + "compositor_get_reference_bounds_rect": { + "in": [ + {"name": "reference_space_type", "type": "enum xrt_reference_space_type"} + ], + "out": [ + {"name": "bounds", "type": "struct xrt_vec2"} + ] + }, + + "compositor_create_passthrough": { + "in": [ + {"name": "info", "type": "struct xrt_passthrough_create_info"} + ] + }, + + "compositor_create_passthrough_layer": { + "in": [ + {"name": "info", "type": "struct xrt_passthrough_layer_create_info"} + ] + }, + + "compositor_destroy_passthrough": {}, + + "compositor_semaphore_create": { + "out": [ + {"name": "id", "type": "uint32_t"} + ], + "out_handles": {"type": "xrt_graphics_sync_handle_t"} + }, + + "compositor_semaphore_destroy": { + "in": [ + {"name": "id", "type": "uint32_t"} + ] + } +} diff --git a/src/xrt/ipc/shared/proto/50-compositor.json.license b/src/xrt/ipc/shared/proto/50-compositor.json.license new file mode 100644 index 000000000..188bb0978 --- /dev/null +++ b/src/xrt/ipc/shared/proto/50-compositor.json.license @@ -0,0 +1,3 @@ +Copyright 2018-2025, Collabora, Ltd. + +SPDX-License-Identifier: BSL-1.0 diff --git a/src/xrt/ipc/shared/proto/50-device.json b/src/xrt/ipc/shared/proto/50-device.json new file mode 100644 index 000000000..6037547c1 --- /dev/null +++ b/src/xrt/ipc/shared/proto/50-device.json @@ -0,0 +1,245 @@ +{ + "$schema": "../proto.schema.json", + + "device_update_input": { + "in": [ + {"name": "id", "type": "uint32_t"} + ] + }, + + "device_get_tracked_pose": { + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "name", "type": "enum xrt_input_name"}, + {"name": "at_timestamp", "type": "int64_t"} + ], + "out": [ + {"name": "relation", "type": "struct xrt_space_relation"} + ] + }, + + "device_get_hand_tracking": { + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "name", "type": "enum xrt_input_name"}, + {"name": "at_timestamp", "type": "int64_t"} + ], + "out": [ + {"name": "value", "type": "struct xrt_hand_joint_set"}, + {"name": "timestamp", "type": "int64_t"} + ] + }, + + "device_get_view_poses": { + "varlen": true, + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "fallback_eye_relation", "type": "struct xrt_vec3"}, + {"name": "at_timestamp_ns", "type": "int64_t"}, + {"name": "view_type", "type": "enum xrt_view_type"}, + {"name": "view_count", "type": "uint32_t"} + ], + "out": [ + {"name": "head_relation", "type": "struct xrt_space_relation"}, + {"name": "view_count", "type": "uint32_t"} + ] + }, + + "device_get_view_poses_2": { + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "fallback_eye_relation", "type": "struct xrt_vec3"}, + {"name": "at_timestamp_ns", "type": "int64_t"}, + {"name": "view_type", "type": "enum xrt_view_type"}, + {"name": "view_count", "type": "uint32_t"} + ], + "out": [ + {"name": "info", "type": "struct ipc_info_get_view_poses_2"} + ] + }, + + "device_compute_distortion": { + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "view", "type": "uint32_t"}, + {"name": "u", "type": "float"}, + {"name": "v", "type": "float"} + ], + "out": [ + {"name": "triplet", "type": "struct xrt_uv_triplet"} + ] + }, + + "device_begin_plane_detection_ext": { + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "plane_detection_id", "type": "uint64_t"} + ], + "out": [ + {"name": "out_plane_detection_id", "type": "uint64_t"} + ] + }, + + "device_destroy_plane_detection_ext": { + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "plane_detection_id", "type": "uint64_t"} + ] + }, + + "device_get_plane_detection_state_ext": { + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "plane_detection_id", "type": "uint64_t"} + ], + "out": [ + {"name": "state", "type": "enum xrt_plane_detector_state_ext"} + ] + }, + + "device_get_plane_detections_ext": { + "varlen": true, + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "plane_detection_id", "type": "uint64_t"} + ], + "out": [ + {"name": "location_size", "type": "uint32_t"}, + {"name": "polygon_size", "type": "uint32_t"}, + {"name": "vertex_size", "type": "uint32_t"} + ] + }, + + "device_get_presence": { + "in": [ + {"name": "id", "type": "uint32_t"} + ], + "out": [ + {"name": "presence", "type": "bool"} + ] + }, + + "device_set_output": { + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "name", "type": "enum xrt_output_name"}, + {"name": "value", "type": "struct xrt_output_value"} + ] + }, + + "device_set_haptic_output": { + "varlen": true, + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "name", "type": "enum xrt_output_name"}, + {"name": "samples", "type": "struct ipc_pcm_haptic_buffer"} + ], + "out":[ + {"name": "samples_consumed", "type": "uint32_t"} + ] + }, + + "device_get_output_limits": { + "in": [ + {"name": "id", "type": "uint32_t"} + ], + "out":[ + {"name": "limits", "type": "struct xrt_output_limits"} + ] + }, + + "device_get_visibility_mask": { + "varlen": true, + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "type", "type": "enum xrt_visibility_mask_type"}, + {"name": "view_index", "type": "uint32_t"} + ], + "out": [ + {"name": "mask_size", "type": "uint32_t"} + ] + }, + + "device_is_form_factor_available": { + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "form_factor", "type": "enum xrt_form_factor"} + ], + "out": [ + {"name": "available", "type": "bool"} + ] + }, + + "device_get_face_tracking": { + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "facial_expression_type", "type": "enum xrt_input_name"}, + {"name": "at_timestamp_ns", "type": "int64_t"} + ], + "out": [ + {"name": "value", "type": "struct xrt_facial_expression_set"} + ] + }, + + "device_get_body_skeleton": { + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "body_tracking_type", "type": "enum xrt_input_name"} + ], + "out": [ + {"name": "value", "type": "struct xrt_body_skeleton"} + ] + }, + + "device_get_body_joints": { + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "body_tracking_type", "type": "enum xrt_input_name"}, + {"name": "desired_timestamp_ns", "type": "int64_t"} + ], + "out": [ + {"name": "value", "type": "struct xrt_body_joint_set"} + ] + }, + + "device_reset_body_tracking_calibration_meta": { + "in": [ + {"name": "id", "type": "uint32_t"} + ] + }, + + "device_set_body_tracking_calibration_override_meta": { + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "new_body_height", "type": "float"} + ] + }, + + "device_get_battery_status": { + "in": [ + {"name": "id", "type": "uint32_t"} + ], + "out": [ + {"name": "present", "type": "bool"}, + {"name": "charging", "type": "bool"}, + {"name": "charge", "type": "float"} + ] + }, + + "device_get_brightness": { + "in": [ + {"name": "id", "type": "uint32_t"} + ], + "out": [ + {"name": "brightness", "type": "float"} + ] + }, + + "device_set_brightness": { + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "brightness", "type": "float"}, + {"name": "relative", "type": "bool"} + ] + } +} diff --git a/src/xrt/ipc/shared/proto/50-device.json.license b/src/xrt/ipc/shared/proto/50-device.json.license new file mode 100644 index 000000000..188bb0978 --- /dev/null +++ b/src/xrt/ipc/shared/proto/50-device.json.license @@ -0,0 +1,3 @@ +Copyright 2018-2025, Collabora, Ltd. + +SPDX-License-Identifier: BSL-1.0 diff --git a/src/xrt/ipc/shared/proto/50-future.json b/src/xrt/ipc/shared/proto/50-future.json new file mode 100644 index 000000000..015c6deb6 --- /dev/null +++ b/src/xrt/ipc/shared/proto/50-future.json @@ -0,0 +1,33 @@ +{ + "$schema": "../proto.schema.json", + + "future_get_state": { + "in": [ + {"name": "future_id", "type": "uint32_t"} + ], + "out": [ + {"name": "out_state", "type": "enum xrt_future_state"} + ] + }, + + "future_cancel": { + "in": [ + {"name": "future_id", "type": "uint32_t"} + ] + }, + + "future_destroy": { + "in": [ + {"name": "future_id", "type": "uint32_t"} + ] + }, + + "future_get_result": { + "in": [ + {"name": "future_id", "type": "uint32_t"} + ], + "out": [ + {"name": "out_ft_result", "type": "struct xrt_future_result"} + ] + } +} diff --git a/src/xrt/ipc/shared/proto/50-future.json.license b/src/xrt/ipc/shared/proto/50-future.json.license new file mode 100644 index 000000000..188bb0978 --- /dev/null +++ b/src/xrt/ipc/shared/proto/50-future.json.license @@ -0,0 +1,3 @@ +Copyright 2018-2025, Collabora, Ltd. + +SPDX-License-Identifier: BSL-1.0 diff --git a/src/xrt/ipc/shared/proto/50-session.json b/src/xrt/ipc/shared/proto/50-session.json new file mode 100644 index 000000000..4b1b6e221 --- /dev/null +++ b/src/xrt/ipc/shared/proto/50-session.json @@ -0,0 +1,22 @@ +{ + "$schema": "../proto.schema.json", + + "session_create": { + "in": [ + {"name": "xsi", "type": "struct xrt_session_info"}, + {"name": "create_native_compositor", "type": "bool"} + ] + }, + + "session_poll_events": { + "out": [ + {"name": "event", "type": "union xrt_session_event"} + ] + }, + + "session_begin": {}, + + "session_end": {}, + + "session_destroy": {} +} diff --git a/src/xrt/ipc/shared/proto/50-session.json.license b/src/xrt/ipc/shared/proto/50-session.json.license new file mode 100644 index 000000000..188bb0978 --- /dev/null +++ b/src/xrt/ipc/shared/proto/50-session.json.license @@ -0,0 +1,3 @@ +Copyright 2018-2025, Collabora, Ltd. + +SPDX-License-Identifier: BSL-1.0 diff --git a/src/xrt/ipc/shared/proto/50-space.json b/src/xrt/ipc/shared/proto/50-space.json new file mode 100644 index 000000000..9315b3cdc --- /dev/null +++ b/src/xrt/ipc/shared/proto/50-space.json @@ -0,0 +1,122 @@ +{ + "$schema": "../proto.schema.json", + + "space_create_semantic_ids": { + "out": [ + {"name": "root_id", "type": "uint32_t"}, + {"name": "view_id", "type": "uint32_t"}, + {"name": "local_id", "type": "uint32_t"}, + {"name": "local_floor_id", "type": "uint32_t"}, + {"name": "stage_id", "type": "uint32_t"}, + {"name": "unbounded_id", "type": "uint32_t"} + ] + }, + + "space_create_offset": { + "in": [ + {"name": "parent_id", "type": "uint32_t"}, + {"name": "offset", "type": "struct xrt_pose"} + ], + "out": [ + {"name": "space_id", "type": "uint32_t"} + ] + }, + + "space_create_pose": { + "in": [ + {"name": "xdev_id", "type": "uint32_t"}, + {"name": "name", "type": "enum xrt_input_name"} + ], + "out": [ + {"name": "space_id", "type": "uint32_t"} + ] + }, + + "space_locate_space": { + "in": [ + {"name": "base_space_id", "type": "uint32_t"}, + {"name": "base_offset", "type": "struct xrt_pose"}, + {"name": "at_timestamp", "type": "int64_t"}, + {"name": "space_id", "type": "uint32_t"}, + {"name": "offset", "type": "struct xrt_pose"} + ], + "out": [ + {"name": "relation", "type": "struct xrt_space_relation"} + ] + }, + + "space_locate_spaces": { + "varlen": true, + "in": [ + {"name": "base_space_id", "type": "uint32_t"}, + {"name": "base_offset", "type": "struct xrt_pose"}, + {"name": "space_count", "type": "uint32_t"}, + {"name": "at_timestamp", "type": "int64_t"} + ] + }, + + "space_locate_device": { + "in": [ + {"name": "base_space_id", "type": "uint32_t"}, + {"name": "base_offset", "type": "struct xrt_pose"}, + {"name": "at_timestamp", "type": "int64_t"}, + {"name": "xdev_id", "type": "uint32_t"} + ], + "out": [ + {"name": "relation", "type": "struct xrt_space_relation"} + ] + }, + + "space_destroy": { + "in": [ + {"name": "space_id", "type": "uint32_t"} + ] + }, + + "space_mark_ref_space_in_use": { + "in": [ + {"name": "type", "type": "enum xrt_reference_space_type"} + ] + }, + + "space_unmark_ref_space_in_use": { + "in": [ + {"name": "type", "type": "enum xrt_reference_space_type"} + ] + }, + + "space_recenter_local_spaces": { + }, + + "space_get_tracking_origin_offset": { + "in": [ + {"name": "origin_id", "type": "uint32_t"} + ], + "out": [ + {"name": "offset", "type": "struct xrt_pose"} + ] + }, + + "space_set_tracking_origin_offset": { + "in": [ + {"name": "origin_id", "type": "uint32_t"}, + {"name": "offset", "type": "struct xrt_pose"} + ] + }, + + "space_get_reference_space_offset": { + "in": [ + {"name": "type", "type": "enum xrt_reference_space_type"} + ], + "out": [ + {"name": "offset", "type": "struct xrt_pose"} + ] + }, + + "space_set_reference_space_offset": { + "in": [ + {"name": "type", "type": "enum xrt_reference_space_type"}, + {"name": "offset", "type": "struct xrt_pose"} + ] + } +} diff --git a/src/xrt/ipc/shared/proto/50-space.json.license b/src/xrt/ipc/shared/proto/50-space.json.license new file mode 100644 index 000000000..188bb0978 --- /dev/null +++ b/src/xrt/ipc/shared/proto/50-space.json.license @@ -0,0 +1,3 @@ +Copyright 2018-2025, Collabora, Ltd. + +SPDX-License-Identifier: BSL-1.0 diff --git a/src/xrt/ipc/shared/proto/50-swapchain.json b/src/xrt/ipc/shared/proto/50-swapchain.json new file mode 100644 index 000000000..429e81c5f --- /dev/null +++ b/src/xrt/ipc/shared/proto/50-swapchain.json @@ -0,0 +1,66 @@ +{ + "$schema": "../proto.schema.json", + + "swapchain_get_properties": { + "in": [ + {"name": "info", "type": "struct xrt_swapchain_create_info"} + ], + "out": [ + {"name": "xsccp", "type": "struct xrt_swapchain_create_properties"} + ] + }, + + "swapchain_create": { + "in": [ + {"name": "info", "type": "struct xrt_swapchain_create_info"} + ], + "out": [ + {"name": "id", "type": "uint32_t"}, + {"name": "image_count", "type": "uint32_t"}, + {"name": "size", "type": "uint64_t"}, + {"name": "use_dedicated_allocation", "type": "bool"} + ], + "out_handles": {"type": "xrt_graphics_buffer_handle_t"} + }, + + "swapchain_import": { + "in": [ + {"name": "info", "type": "struct xrt_swapchain_create_info"}, + {"name": "args", "type": "struct ipc_arg_swapchain_from_native"} + ], + "out": [ + {"name": "id", "type": "uint32_t"} + ], + "in_handles": {"type": "xrt_graphics_buffer_handle_t"} + }, + + "swapchain_wait_image": { + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "timeout_ns", "type": "int64_t"}, + {"name": "index", "type": "uint32_t"} + ] + }, + + "swapchain_acquire_image": { + "in": [ + {"name": "id", "type": "uint32_t"} + ], + "out": [ + {"name": "index", "type": "uint32_t"} + ] + }, + + "swapchain_release_image": { + "in": [ + {"name": "id", "type": "uint32_t"}, + {"name": "index", "type": "uint32_t"} + ] + }, + + "swapchain_destroy": { + "in": [ + {"name": "id", "type": "uint32_t"} + ] + } +} diff --git a/src/xrt/ipc/shared/proto/50-swapchain.json.license b/src/xrt/ipc/shared/proto/50-swapchain.json.license new file mode 100644 index 000000000..188bb0978 --- /dev/null +++ b/src/xrt/ipc/shared/proto/50-swapchain.json.license @@ -0,0 +1,3 @@ +Copyright 2018-2025, Collabora, Ltd. + +SPDX-License-Identifier: BSL-1.0 diff --git a/src/xrt/ipc/shared/proto/50-system.json b/src/xrt/ipc/shared/proto/50-system.json new file mode 100644 index 000000000..72658ae8f --- /dev/null +++ b/src/xrt/ipc/shared/proto/50-system.json @@ -0,0 +1,66 @@ +{ + "$schema": "../proto.schema.json", + + "system_get_properties": { + "out": [ + {"name": "properties", "type": "struct xrt_system_properties"} + ] + }, + + "system_get_client_info": { + "in": [ + {"name": "id", "type": "uint32_t"} + ], + "out": [ + {"name": "ias", "type": "struct ipc_app_state"} + ] + }, + + "system_get_clients": { + "out": [ + {"name": "clients", "type": "struct ipc_client_list"} + ] + }, + + "system_set_primary_client": { + "in": [ + {"name": "id", "type": "uint32_t"} + ] + }, + + "system_set_focused_client": { + "in": [ + {"name": "id", "type": "uint32_t"} + ] + }, + + "system_toggle_io_client": { + "in": [ + {"name": "id", "type": "uint32_t"} + ] + }, + + "system_devices_get_roles": { + "out": [ + {"name": "system_roles", "type": "struct xrt_system_roles"} + ] + }, + + "system_devices_begin_feature": { + "in": [ + {"name": "type", "type": "enum xrt_device_feature_type"} + ] + }, + + "system_devices_end_feature": { + "in": [ + {"name": "type", "type": "enum xrt_device_feature_type"} + ] + }, + + "system_compositor_get_info": { + "out": [ + {"name": "info", "type": "struct xrt_system_compositor_info"} + ] + } +} diff --git a/src/xrt/ipc/shared/proto/50-system.json.license b/src/xrt/ipc/shared/proto/50-system.json.license new file mode 100644 index 000000000..188bb0978 --- /dev/null +++ b/src/xrt/ipc/shared/proto/50-system.json.license @@ -0,0 +1,3 @@ +Copyright 2018-2025, Collabora, Ltd. + +SPDX-License-Identifier: BSL-1.0