Skip to content
This repository was archived by the owner on Nov 27, 2025. It is now read-only.
This repository was archived by the owner on Nov 27, 2025. It is now read-only.

Tracking issue: Ports / Services #2

@GasInfinity

Description

@GasInfinity

A service/port in the list is considered completed when it is fully implemented (i.e: all commands and wrapper methods are defined).

Example of how commands for a service/port are defined:

pub const command = struct {
pub const WriteHwRegs = ipc.Command(Id, .write_hw_regs, struct {
offset: usize,
size: usize,
data: ipc.StaticSlice(0),
}, struct {});
pub const WriteHwRegsWithMask = ipc.Command(Id, .write_hw_regs_with_mask, struct {
offset: usize,
size: usize,
data: ipc.StaticSlice(0),
mask: ipc.StaticSlice(1),
}, struct {});
pub const WriteHwRegRepeat = ipc.Command(Id, .write_hw_reg_repeat, struct {
offset: usize,
size: usize,
data: ipc.StaticSlice(0),
}, struct {});
pub const ReadHwRegs = ipc.Command(Id, .read_hw_regs, struct {
pub const static_buffers = 1;
offset: usize,
size: usize,
}, struct {
output: ipc.StaticSlice(0),
});
pub const SetBufferSwap = ipc.Command(Id, .set_buffer_swap, struct { screen: Screen, info: FramebufferInfo }, struct {});
// SetCommandList stubbed
// RequestDma stubbed
pub const FlushDataCache = ipc.Command(Id, .flush_data_cache, struct { address: usize, size: usize, process: horizon.Process }, struct {});
pub const InvalidateDataCache = ipc.Command(Id, .invalidate_data_cache, struct { address: usize, size: usize, process: horizon.Process }, struct {});
// RegisterInterruptEvents stubbed
pub const SetLcdForceBlack = ipc.Command(Id, .set_lcd_force_black, struct { fill: bool }, struct {});
pub const TriggerCmdReqQueue = ipc.Command(Id, .trigger_cmd_req_queue, struct {}, struct {});
// SetDisplayTransfer stubbed
// SetTextureCopy stubbed
// SetMemoryFill stubbed
pub const SetAxiConfigQosMode = ipc.Command(Id, .set_axi_config_qos_mode, struct { qos: u32 }, struct {});
pub const SetPerfLogMode = ipc.Command(Id, .set_perf_log_mode, struct { enabled: bool }, struct {});
pub const GetPerfLog = ipc.Command(Id, .get_perf_log, struct {}, struct { info: PerfLogInfo });
pub const RegisterInterruptRelayQueue = ipc.Command(Id, .register_interrupt_relay_queue, struct {
flags: u32,
ev: Event,
}, struct {
thread_index: u32,
gsp_memory: MemoryBlock,
});
pub const UnregisterInterruptRelayQueue = ipc.Command(Id, .unregister_interrupt_relay_queue, struct {}, struct {});
pub const TryAcquireRight = ipc.Command(Id, .try_acquire_right, struct { process: horizon.Process }, struct {});
pub const AcquireRight = ipc.Command(Id, .acquire_right, struct { init_hw: u32, process: horizon.Process }, struct {});
pub const ReleaseRight = ipc.Command(Id, .release_right, struct {}, struct {});
pub const ImportDisplayCaptureInfo = ipc.Command(Id, .import_display_capture_info, struct {}, struct { capture: ScreenCapture });
pub const SaveVRamSysArea = ipc.Command(Id, .save_vram_sys_area, struct {}, struct {});
pub const RestoreVRamSysArea = ipc.Command(Id, .restore_vram_sys_area, struct {}, struct {});
pub const ResetGpuCore = ipc.Command(Id, .reset_gpu_core, struct {}, struct {});
pub const SetLedForceOff = ipc.Command(Id, .set_led_force_off, struct { disable: bool }, struct {});
// SetTestCommand stubbed
pub const SetInternalPriorities = ipc.Command(Id, .set_internal_priorities, struct { session_thread: u6, command_queue: u6 }, struct {});
pub const StoreDataCache = ipc.Command(Id, .store_data_cache, struct { address: usize, size: usize, process: horizon.Process }, struct {});
pub const Id = enum(u16) {
write_hw_regs = 0x0001,
write_hw_regs_with_mask,
write_hw_reg_repeat,
read_hw_regs,
set_buffer_swap,
set_command_list,
request_dma,
flush_data_cache,
invalidate_data_cache,
register_interrupt_events,
set_lcd_force_black,
trigger_cmd_req_queue,
set_display_transfer,
set_texture_copy,
set_memory_fill,
set_axi_config_qos_mode,
set_perf_log_mode,
get_perf_log,
register_interrupt_relay_queue,
unregister_interrupt_relay_queue,
try_acquire_right,
acquire_right,
release_right,
import_display_capture_info,
save_vram_sys_area,
restore_vram_sys_area,
reset_gpu_core,
set_led_force_off,
set_test_command,
set_internal_priorities,
store_data_cache,
};
};

list of all services and ports

Ports

Services (not exhaustive)

Metadata

Metadata

Assignees

No one assigned

    Labels

    contributor friendlyeasy to get into it / doesn't need a lot of knowledge about the internals

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions