ReXGlue SDK
Loading...
Searching...
No Matches
rex::gpu::IXenosGraphicsDriver Class Referenceabstract

#include <rex/gpu/xenos_graphics_driver.h>

Inheritance diagram for rex::gpu::IXenosGraphicsDriver:
[legend]

Public Member Functions

IXenosGraphicsDriver * AsXenos () final
virtual void InitializeRingBuffer (u32 address, u32 size_log2)=0
virtual void EnableReadPointerWriteBack (u32 address, u32 block_size_log2)=0
virtual u32 ReadRegister (u32 index)=0
virtual void WriteRegister (u32 index, u32 value)=0
Public Member Functions inherited from rex::gpu::IGraphicsDriver
virtual Result< void > SetSurface (const NativeWindow &window)
virtual Result< void > AttachTitle (const TitleInfo &info, IPhysicalMemory &memory, IPhysicalWriteWatch &watch, IGuestInterrupts &interrupts)
virtual void DetachTitle ()
virtual FrameStatus WaitForFrame (u32 timeout_ms)=0
virtual void ResizeSurface (u32 width, u32 height)=0
virtual bool BeginPresent ()=0
virtual void EndPresent ()=0
Public Member Functions inherited from rex::IDriver
virtual std::string_view GetName () const =0
virtual Result< void > Initialize (IDriverContext &context)=0
virtual void Shutdown ()=0
Public Member Functions inherited from rex::IOverlayRenderer
virtual void RenderOverlays (ImDrawData &draw_data)=0

Detailed Description

A Xenos GPU. It adds what the guest kernel needs beyond presenting. GraphicsSystem routes the kernel's calls here only when the title requires the Xenos family.

Member Function Documentation

◆ AsXenos()

IXenosGraphicsDriver * rex::gpu::IXenosGraphicsDriver::AsXenos ( )
inlinefinalvirtual

Casts to the Xenos driver. Works across a module boundary where dynamic_cast does not.

Returns
The Xenos driver, or nullptr for a native driver.

Reimplemented from rex::gpu::IGraphicsDriver.

◆ EnableReadPointerWriteBack()

virtual void rex::gpu::IXenosGraphicsDriver::EnableReadPointerWriteBack ( u32 address,
u32 block_size_log2 )
pure virtual

Writes the ring's read pointer to guest memory as commands complete. Guest thread.

Parameters
addressGuest physical address to write it to.
block_size_log2Log2 of the quadwords between writes.

◆ InitializeRingBuffer()

virtual void rex::gpu::IXenosGraphicsDriver::InitializeRingBuffer ( u32 address,
u32 size_log2 )
pure virtual

Starts reading commands from the guest ring buffer. Guest thread.

Parameters
size_log2Log2 of its size in quadwords.

◆ ReadRegister()

virtual u32 rex::gpu::IXenosGraphicsDriver::ReadRegister ( u32 index)
pure virtual

Reads a GPU register for the guest. Any guest thread.

◆ WriteRegister()

virtual void rex::gpu::IXenosGraphicsDriver::WriteRegister ( u32 index,
u32 value )
pure virtual

Writes a GPU register for the guest. Any guest thread.


The documentation for this class was generated from the following file: