Appearance
aowlspt_overlay.h
Source: abi/aowlspt_overlay.h — 12318 lines, 214 file-scope functions.
What this header owns
Reproduced verbatim from the header's own banner comment — these notes are frequently the only written record of why the subsystem is shaped the way it is.
text
aowlspt_overlay.h — an in-game overlay for post-1.0 Tarkov, drawn by hand.
Pre-1.0, an in-game menu was `OnGUI` and Unity's IMGUI drew it for you. That
route is gone: IL2CPP has no managed assemblies, so there is no `MonoBehaviour`
to attach and no `GUI.Window` to call. Every BepInEx-era overlay — including
every "config manager" mod — is built on that and none of them can load.
The honest replacement is to draw the panel ourselves. The game renders
through D3D11, so a hook on `IDXGISwapChain::Present` gives a callback once
per frame with the device, the immediate context and the back buffer in hand
— after the game has finished its frame and before the flip. That is exactly
where an overlay belongs, and it is what Steam, Discord and RivaTuner all do.
------------------------------------------------------------------------
How the vtable is found, and why not by pattern scan
------------------------------------------------------------------------
A COM interface pointer is a pointer to a vtable, and every `IDXGISwapChain`
created by the same `dxgi.dll` shares one. So the address of the real
`Present` can be read out of *any* swap chain — including a 1x1 one we create
ourselves on a hidden window, use for nothing, and release immediately. That
is the whole trick: no signature scan, no version-specific offsets, nothing
that breaks when the game or the driver updates. `aowl_ov_capture_vtable`
below is ten lines and is correct by construction.
A pattern scan for the Present prologue would also work and is what a lot of
cheat-adjacent code does. It is strictly worse: it depends on the bytes of a
Microsoft DLL that Windows Update changes underneath you, and when it goes
wrong it detours the middle of an unrelated function.
The detour itself is `abi/aowlspt_detour.h` — the same engine `AowlHostApi.patch`
uses on IL2CPP methods, unmodified. It is used through `aowl_hook_install`
rather than `aowl_hook_attach`, because attach claims a slot in the fixed
thunk pool that mods' patches draw from; the overlay has its own detour
functions with the right signatures already, so it needs no thunk and takes
nothing from that pool.
------------------------------------------------------------------------
Render state: what is touched and what is put back
------------------------------------------------------------------------
Drawing inside Present means drawing on a context whose entire state belongs
to the game. Everything below is backed up before the overlay's draw and
restored after it, and every `*Get*` call is paired with a `Release` because
the D3D11 getters AddRef what they hand back — the classic version of this
bug leaks one device object per frame and takes the process down after a few
hours, which reads as "the game leaks memory in raid".
IA: input layout, vertex buffer 0, index buffer, primitive topology
VS: shader + class instances, constant buffer 0
PS: shader + class instances, shader resource 0, sampler 0
GS: shader + class instances; HS/DS: shader only — see below
RS: rasteriser state, viewports, scissor rects
OM: blend state + factor + mask, depth-stencil state + ref,
all 8 render targets + depth-stencil view
The GS/HS/DS entry is the one that is easy to skip and fatal to skip. We do
not *set* those stages, but the game's last draw may have left a geometry or
tessellation shader bound, and it would then run on our two triangles with an
input signature it was never written for. So they are explicitly nulled and
then restored.
Not covered, and said plainly rather than left to be discovered: stream
output targets (`SOSetTargets`), unordered access views bound through
`OMSetRenderTargetsAndUnorderedAccessViews`, and compute state. None of the
three affects our draw; a game that has stream output bound across Present
would see it survive, because we never touch it.
------------------------------------------------------------------------
Failure policy
------------------------------------------------------------------------
A crash in a Present hook takes the game down mid-raid, so every failure here
latches instead. `g_ov.broken` is set on any unrecoverable error and from
that point both detours are a straight tail call to the original — the hook
stays installed (removing it from inside itself is its own hazard) and the
game renders exactly as it would with no overlay at all. `aowl_ov_status`
reports why, so it shows up in the host log rather than as a black screen.
------------------------------------------------------------------------
Threads
------------------------------------------------------------------------
render thread the hooked Present. Draws. Reads the mod list under a lock.
Never blocks: no HTTP, no file IO, no allocation after the
first frame.
window thread the hooked WndProc. Records input into atomics.
worker thread polls the backend over HTTP and posts toggles. Owns every
blocking call on the steady-state path. The exception is
teardown: `aowl_ov_stop` runs on the host thread and both
waits on the worker and sleeps out the render thread.
Most of what is shared between them -- the `AowlOvMod` table, the lists,
entries, issues and results tables, the wrapper scalars and the mod-sync body
-- is under `g_ov.cs`, and the command queue with it. The key ring is the one
deliberate exception, single-producer/single-consumer between the window and
render threads and outside the lock; see the note above it for why.Constants
AOWLSPT_OVERLAY_HAOWL_CUR_PUREAOWL_LOG_FACET_ALLAOWL_LOG_FACET_SYSTEMAOWL_OV_ACCENTAOWL_OV_ATHAOWL_OV_ATWAOWL_OV_BGAOWL_OV_BTN_WAOWL_OV_CHAOWL_OV_COST_SETTLEAOWL_OV_CWAOWL_OV_DETAIL_HAOWL_OV_DIMAOWL_OV_EDGEAOWL_OV_ERRAOWL_OV_FAINTAOWL_OV_GHDR_HAOWL_OV_GOODAOWL_OV_HEAD_HAOWL_OV_HINT_FADEAOWL_OV_HINT_HOLDAOWL_OV_HINT_LATESTAOWL_OV_HOTAOWL_OV_HTTP_BUFAOWL_OV_KEYSAOWL_OV_LEGEND_HAOWL_OV_LEGEND_MAXAOWL_OV_LINE_HAOWL_OV_LOG_CHUNKAOWL_OV_LOG_FACETLENAOWL_OV_LOG_FACETSAOWL_OV_LOG_MAXAOWL_OV_LOG_MAXFAILAOWL_OV_LOG_POLL_MSAOWL_OV_LOG_TAILAOWL_OV_LOG_TEXTAOWL_OV_MAX_CMDSAOWL_OV_MAX_DEPTHAOWL_OV_MAX_ENTRIESAOWL_OV_MAX_ISSUESAOWL_OV_MAX_LISTSAOWL_OV_MAX_MODSAOWL_OV_MAX_NAVAOWL_OV_MAX_RESULTSAOWL_OV_MAX_SCATSAOWL_OV_MAX_SITEMSAOWL_OV_MAX_SPAGESAOWL_OV_MAX_SPANSAOWL_OV_MAX_THEMESAOWL_OV_MAX_VERTSAOWL_OV_OFFAOWL_OV_ONAOWL_OV_PADAOWL_OV_PANEBGAOWL_OV_PANEL_HAOWL_OV_PANEL_PAGEAOWL_OV_PANEL_WAOWL_OV_PANEL_XAOWL_OV_PANEL_YAOWL_OV_PEND_MAXAOWL_OV_POST_BODYAOWL_OV_ROWALTAOWL_OV_ROW_HAOWL_OV_SDETAIL_HAOWL_OV_SEARCH_BOXAOWL_OV_SEARCH_HAOWL_OV_SELBGAOWL_OV_SLIDER_MAX_STEPSAOWL_OV_SLOT_PRESENTAOWL_OV_SLOT_RESIZEAOWL_OV_SOPT_MAXAOWL_OV_STAT_HAOWL_OV_SYNC_MAXAOWL_OV_TABS_HAOWL_OV_TEXTAOWL_OV_TEX_MAXAOWL_OV_TITLEBGAOWL_OV_TITLE_HAOWL_OV_VERIFY_LOCAL_TRIESAOWL_OV_VERIFY_PUSHESAOWL_OV_VERIFY_SLICEAOWL_OV_VERIFY_TRIESAOWL_OV_VERIFY_WAITAOWL_OV_WARNAOWL_OV_WHITE_UAOWL_OV_WHITE_VAOWL_OV_WRITE_QUIET_MSAOWL_RGBA
Types
struct AowlOvCmdstruct AowlOvEntrystruct AowlOvIssuestruct AowlOvListstruct AowlOvLogLinestruct AowlOvModstruct AowlOvPendstruct AowlOvResultstruct AowlOvSCatstruct AowlOvSItemstruct AowlOvSPagestruct AowlOvSavedstruct AowlOvSpanstruct AowlOvStatestruct AowlOvTexEntrystruct AowlOvThemestruct AowlOvVert
Functions
| Signature | Line |
|---|---|
void aowl_ov_set_pre_present(void* fn) | 1631 |
void aowl_ov_set_pre_resize(void* fn) | 1632 |
void aowl_ov_fail(const char* why) | 1634 |
void aowl_ov_note(const char* what) | 1643 |
int32_t aowl_ov_running(void) | 1650 |
int32_t aowl_ov_visible(void) | 1651 |
void aowl_ov_set_visible(int32_t on) | 1652 |
int32_t aowl_ov_frames(void) | 1655 |
int32_t aowl_ov_frame_ns(void) | 1656 |
int32_t aowl_ov_scale(void) | 1657 |
int32_t aowl_ov_frame_ns_max(void) | 1658 |
int32_t aowl_ov_status(char* buf, int32_t cap) | 1659 |
void aowl_ov_on_toggle(AowlOvToggleFn fn, void* user) | 1667 |
void aowl_ov_fmt(char* out, int32_t cap, const char* fmt, ...) | 1689 |
void aowl_ov_copy(char* dst, int32_t cap, const char* src) | 1701 |
int32_t aowl_ov_hexnib(char c) | 1794 |
int32_t aowl_ov_parse_hex(const char* s, uint32_t* out) | 1804 |
void aowl_ov_theme_kv(AowlOvTheme* T, const char* k, const char* v) | 1822 |
void aowl_ov_theme_parse(AowlOvTheme* T, const char* body) | 1862 |
int32_t aowl_ov_theme_find(const char* name) | 1891 |
void aowl_ov_theme_apply(const char* name) | 1901 |
void aowl_ov_themes_load(void) | 1913 |
AowlOvMod aowl_ov_row(const char* guid) | 1981 |
void aowl_ov_set_mod(const char* guid, const char* name, const char* version, int32_t enabled) | 2005 |
void aowl_ov_clear_mods(void) | 2036 |
int32_t aowl_ov_http_init(void) | 2087 |
int32_t aowl_ov_http(const wchar_t* verb, const wchar_t* path, const char* body, char* out, int32_t cap) | 2127 |
char aowl_ov_jws(const char* p, const char* e) | 2284 |
char aowl_ov_jstr_end(const char* p, const char* e) | 2290 |
char aowl_ov_jval_end(const char* p, const char* e) | 2301 |
char aowl_ov_jmem(const char* o, const char* e, const char* key) | 2329 |
char aowl_ov_jarr(const char* p, const char* e) | 2352 |
char aowl_ov_jnext(const char* p, const char* e) | 2362 |
void aowl_ov_jtext(const char* v, const char* e, char* out, int32_t cap) | 2372 |
int32_t aowl_ov_jbool(const char* v, const char* end, int32_t dflt) | 2416 |
int32_t aowl_ov_jisnull(const char* v, const char* end) | 2425 |
int32_t aowl_ov_jint(const char* v, const char* end, int32_t dflt) | 2431 |
void aowl_ov_jjoin(const char* v, const char* end, char* out, int32_t cap) | 2442 |
int32_t aowl_ov_intoken(const char* joined, const char* id) | 2463 |
int32_t aowl_ov_jwhole(const char* body, int32_t len) | 2484 |
void aowl_ov_jput(const char* o, const char* e, const char* key, char* dst, int32_t cap) | 2504 |
void aowl_ov_read_row_live(const char* it, const char* end, AowlOvMod* m) | 2537 |
void aowl_ov_read_panel(const char* body, int32_t len) | 2573 |
void aowl_ov_read_list(const char* body, int32_t len) | 2654 |
void aowl_ov_read_lists(const char* body, int32_t len) | 2684 |
void aowl_ov_read_conflicts(const char* body, int32_t len) | 2730 |
void aowl_ov_read_apply(const char* o, const char* end, const char* what) | 2763 |
void aowl_ov_read_reply(const char* body, int32_t len, const char* what) | 2793 |
char aowl_ov_jraw(const char* v, const char* end, char* out, int32_t cap) | 2912 |
int32_t aowl_ov_finite(float f) | 2931 |
float aowl_ov_jfloat(const char* v, const char* end, float dflt) | 2940 |
int32_t aowl_ov_skind(const char* t) | 2953 |
void aowl_ov_sval_text(AowlOvSItem* si) | 2969 |
void aowl_ov_sval_display(AowlOvSItem* si) | 2982 |
void aowl_ov_pend_clear(void) | 2995 |
int32_t aowl_ov_pend_find(const char* page, const char* key) | 3007 |
int32_t aowl_ov_pend_begin(const char* page, const char* key, const char* raw) | 3028 |
void aowl_ov_pend_settle(const char* skey, int32_t state) | 3059 |
void aowl_ov_pend_apply(void) | 3118 |
int32_t aowl_ov_path_add(char* out, int32_t cap, int32_t depth, const char* seg) | 3144 |
void aowl_ov_path_prefix(const char* path, int32_t d, char* out, int32_t cap) | 3164 |
char aowl_ov_path_leaf(const char* path) | 3175 |
int32_t aowl_ov_path_under(const char* path, const char* pre) | 3182 |
int32_t aowl_ov_read_one_item(const char* it, const char* end, AowlOvSItem* si) | 3189 |
int32_t aowl_ov_scmp(const AowlOvSItem* a, const AowlOvSItem* b) | 3314 |
void aowl_ov_sort_items(void) | 3325 |
void aowl_ov_build_cats(void) | 3356 |
int32_t aowl_ov_cats_wellformed(char* why, int32_t cap) | 3419 |
void aowl_ov_read_items(const char* body, int32_t len) | 3457 |
void aowl_ov_read_spt_index(const char* body, int32_t len) | 3563 |
void aowl_ov_read_settings_index(const char* body, int32_t len) | 3589 |
int32_t aowl_ov_page_all_hidden(const AowlOvSPage* P) | 3639 |
void aowl_ov_rebuild_pages(void) | 3644 |
int32_t aowl_ov_fetch(const wchar_t* verb, const wchar_t* path, const char* body, char* out, int32_t cap) | 3669 |
void aowl_ov_jsafe(const char* s, char* out, int32_t cap) | 3732 |
void aowl_ov_panel_schema(char* out, int32_t cap) | 3739 |
int32_t aowl_ov_panel_set(const char* key, const char* val) | 3818 |
void aowl_ov_settings_load(const char* pageId, int32_t isMod, char* buf, int32_t cap) | 3915 |
int32_t aowl_ov_settings_stage(const char* guid, const char* key, char* buf, int32_t cap, int32_t* known, int32_t* pending, int32_t* pushes) | 4064 |
int32_t aowl_ov_verify_match(const char* key, const char* sent, int32_t* found, const char** last) | 4099 |
void aowl_ov_settings_verify(const char* guid, const char* key, const char* sent, int32_t isMod, char* buf, int32_t cap) | 4123 |
void aowl_ov_settings_set(const AowlOvCmd* cmd, char* buf, int32_t cap) | 4243 |
void aowl_ov_log_paths(void) | 4293 |
int32_t aowl_ov_log_lvl(const char* w, int32_t n) | 4330 |
char aowl_ov_log_lvl_name(int32_t l) | 4339 |
uint32_t aowl_ov_log_lvl_col(int32_t l) | 4347 |
int32_t aowl_ov_log_intern(const char* name, int32_t n) | 4358 |
int32_t aowl_ov_log_facet(const char* msg, int32_t n) | 4383 |
void aowl_ov_log_append(int32_t src, const char* line, int32_t n) | 4407 |
void aowl_ov_log_pull(int32_t src, char* scratch, int32_t cap) | 4457 |
DWORD WINAPI aowl_ov_worker(LPVOID unused) | 4565 |
void aowl_ov_sync_start(const char* path, int32_t intervalMs) | 5001 |
int32_t aowl_ov_sync_pending(void) | 5014 |
int32_t aowl_ov_sync_attempts(void) | 5023 |
int32_t aowl_ov_sync_take(char* out, int32_t cap) | 5037 |
void aowl_ov_post_start(const char* path, const char* body) | 5059 |
int32_t aowl_ov_take_edit_kick(void) | 5075 |
int32_t aowl_ov_post_pending(void) | 5079 |
int32_t aowl_ov_post_stage(void) | 5090 |
void aowl_ov_pump_post(void) | 5119 |
int32_t aowl_ov_post_take(char* out, int32_t cap, int32_t* ok) | 5170 |
void aowl_ov_queue_cmd(int32_t kind, const char* arg, int32_t enabled) | 5193 |
void aowl_ov_queue(const char* guid, int32_t enabled) | 5223 |
void aowl_ov_queue_spage(const char* pageId, int32_t isMod) | 5231 |
void aowl_ov_queue_sset(const char* pageId, const char* key, const char* val) | 5244 |
void aowl_ov_vert(float x, float y, float u, float v, uint32_t col) | 5299 |
void aowl_ov_quad_uv(float x, float y, float w, float h, float u0, float v0, float u1, float v1, uint32_t col) | 5317 |
void aowl_ov_rect(float x, float y, float w, float h, uint32_t col) | 5328 |
void aowl_ov_frame_rect(float x, float y, float w, float h, float t, uint32_t col) | 5333 |
float aowl_ov_text(float x, float y, const char* s, uint32_t col) | 5344 |
void aowl_ov_release_targets(void) | 5369 |
void aowl_ov_release_all(void) | 5373 |
int32_t aowl_ov_make_font(void) | 5411 |
int32_t aowl_ov_make_device_objects(void) | 5452 |
int32_t aowl_ov_make_rtv(IDXGISwapChain* sc) | 5553 |
void aowl_ov_save(ID3D11DeviceContext* c, AowlOvSaved* s) | 5607 |
void aowl_ov_restore(ID3D11DeviceContext* c, AowlOvSaved* s) | 5636 |
int32_t aowl_ov_hit(float x, float y, float w, float h) | 5738 |
void aowl_ov_prefs_path(void) | 5762 |
void aowl_ov_prefs_default(void) | 5792 |
void aowl_ov_prefs_kv(const char* k, const char* v) | 5822 |
void aowl_ov_prefs_load(void) | 5836 |
void aowl_ov_prefs_save(void) | 5898 |
void aowl_ov_textn(float x, float y, const char* s, uint32_t col, int32_t cols) | 5937 |
int32_t aowl_ov_wrap_ex(float x, float y, const char* s, uint32_t col, int32_t cols, int32_t maxLines, int32_t draw) | 5962 |
int32_t aowl_ov_wrap(float x, float y, const char* s, uint32_t col, int32_t cols, int32_t maxLines) | 6007 |
int32_t aowl_ov_wrap_lines(const char* s, int32_t cols, int32_t maxLines) | 6015 |
void aowl_ov_snapshot(void) | 6028 |
char aowl_ov_filter_name(int32_t f) | 6082 |
int32_t aowl_ov_passes(const AowlOvMod* m, int32_t f) | 6089 |
int32_t aowl_ov_visible_rows(int32_t* out) | 6099 |
int32_t aowl_ov_protected(const char* guid) | 6134 |
void aowl_ov_act_toggle(const char* guid) | 6141 |
void aowl_ov_act_clear(const char* guid) | 6201 |
void aowl_ov_push_key(LONG vk) | 6219 |
int32_t aowl_ov_pop_key(LONG* vk) | 6227 |
int32_t aowl_ov_row_count(int32_t view, const int32_t* vis, int32_t visN) | 6236 |
void aowl_ov_move(int32_t view, int32_t delta, int32_t count) | 6248 |
void aowl_ov_keys(int32_t page, const int32_t* vis, int32_t visN) | 6274 |
void aowl_ov_health(char* out, int32_t cap, uint32_t* col) | 6451 |
void aowl_ov_tabs(float x, float y, float w, int32_t counts[AOWL_VIEW_COUNT]) | 6476 |
char aowl_ov_run_word(const AowlOvMod* m) | 6525 |
char aowl_ov_client_why(const char* code) | 6540 |
void aowl_ov_client_line(const AowlOvMod* m, char* buf, int32_t cap, uint32_t* col) | 6571 |
void aowl_ov_view_mods(float x, float y, float w, float bodyH, const int32_t* vis, int32_t visN, int32_t rows) | 6631 |
void aowl_ov_view_lists(float x, float y, float w, float bodyH, int32_t rows) | 6823 |
void aowl_ov_view_issues(float x, float y, float w, float bodyH, int32_t rows) | 6912 |
void aowl_ov_view_apply(float x, float y, float w, float bodyH, int32_t rows) | 6969 |
int32_t aowl_ov_num_decimals(const AowlOvSItem* si) | 7122 |
void aowl_ov_num_str(const AowlOvSItem* si, float v, int32_t cols, char* out, int32_t cap) | 7158 |
void aowl_ov_s_fmt_num(AowlOvSItem* si, float v) | 7193 |
void aowl_ov_s_flush_now(void) | 7210 |
void aowl_ov_s_commit(AowlOvSItem* si) | 7221 |
void aowl_ov_s_flush_tick(void) | 7235 |
void aowl_ov_s_num_box(AowlOvSItem* si, int32_t at, float bx, float by, float bw, int32_t canEdit) | 7261 |
void aowl_ov_s_toggle_bool(AowlOvSItem* si) | 7329 |
void aowl_ov_s_cycle_enum(AowlOvSItem* si, int32_t dir) | 7336 |
void aowl_ov_s_adjust(AowlOvSItem* si, int32_t dir) | 7347 |
void aowl_ov_vk_name(LONG vk, char* out, int32_t cap) | 7363 |
char aowl_ov_vk_char(LONG vk) | 7385 |
char aowl_ov_vk_numchar(LONG vk) | 7409 |
int32_t aowl_ov_settings_rows(float bodyH) | 7444 |
int32_t aowl_ov_settings_page(float bodyH, int32_t rows) | 7460 |
int32_t aowl_ov_ci_find(const char* hay, const char* needle) | 7508 |
int32_t aowl_ov_smatch(const AowlOvSItem* si, const char* term) | 7524 |
void aowl_ov_search_refresh(void) | 7532 |
int32_t aowl_ov_searching(void) | 7548 |
int32_t aowl_ov_filt_pos(int32_t item) | 7554 |
int32_t aowl_ov_nav_open(int32_t ci, const char* selFull) | 7565 |
void aowl_ov_nav_reset_if_page_changed(void) | 7576 |
void aowl_ov_group_title(const AowlOvSItem* si, const char* base, char* out, int32_t cap) | 7597 |
int32_t aowl_ov_same_group(const AowlOvSItem* a, const AowlOvSItem* b) | 7622 |
void aowl_ov_settings_key(LONG vk, int32_t page) | 7630 |
void aowl_ov_view_settings(float x, float y, float w, float bodyH) | 8045 |
char aowl_ov_log_src_name(int32_t f) | 9285 |
char aowl_ov_log_lvlf_name(int32_t f) | 9296 |
char aowl_ov_log_facet_name(int32_t f) | 9306 |
int32_t aowl_ov_log_hit(const AowlOvLogLine* L, const char* term) | 9316 |
int32_t aowl_ov_log_pass(const AowlOvLogLine* L) | 9325 |
uint32_t aowl_ov_log_stamp(void) | 9352 |
void aowl_ov_log_refilter(void) | 9363 |
int32_t aowl_ov_log_searching(void) | 9382 |
void aowl_ov_log_cycle_facet(int32_t dir) | 9386 |
int32_t aowl_ov_logs_key(LONG vk, int32_t page, int32_t count) | 9406 |
void aowl_ov_view_logs(float x, float y, float w, float bodyH, int32_t rows) | 9453 |
void aowl_ov_refresh_display(void) | 9676 |
void aowl_ov_sig_add(uint32_t* h, int32_t v) | 9687 |
uint32_t aowl_ov_signature(void) | 9703 |
void aowl_ov_build(void) | 9828 |
void aowl_ov_draw(IDXGISwapChain* sc) | 10488 |
LRESULT CALLBACK aowl_ov_wndproc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) | 10604 |
void aowl_ov_attach_window(HWND hwnd) | 10911 |
int32_t aowl_ov_bind(IDXGISwapChain* sc) | 10935 |
uint32_t aowl_ov_admin_side_col(int32_t side) | 11000 |
int32_t aowl_ov_admin_active(void) | 11013 |
void aowl_ov_publish_cursor_panels(void) | 11070 |
void aowl_ov_span_begin(ID3D11ShaderResourceView* srv) | 11125 |
void aowl_ov_span_close(void) | 11156 |
DXGI_FORMAT aowl_ov_tex_dxgi(int32_t fmt) | 11163 |
ID3D11ShaderResourceView aowl_ov_tex_srv(uint64_t key, int64_t frame) | 11181 |
void aowl_ov_tex_quad(float x, float y, float w, float h, float u0, float v0, float u1, float v1, uint32_t tint) | 11268 |
void aowl_ov_tex_quad_rot(float x, float y, float w, float h, float u0, float v0, float u1, float v1, float rcos, float rsin, float px, float py, float clipX, float clipY, float clipW, float clipH, uint32_t tint) | 11292 |
void aowl_ov_region_append(void) | 11355 |
void aowl_ov_admin_append(void) | 11470 |
int32_t aowl_ov_hint_alpha(void) | 11658 |
void aowl_ov_hint_append(int32_t a) | 11702 |
int32_t aowl_ov_hint_state(void) | 11727 |
void aowl_ov_panel_rect(float* px, float* py, float* pw, float* ph) | 11738 |
int32_t aowl_ov_hint_frames(void) | 11767 |
HRESULT STDMETHODCALLTYPE aowl_ov_present(IDXGISwapChain* sc, UINT sync, UINT flags) | 11769 |
HRESULT STDMETHODCALLTYPE aowl_ov_resize(IDXGISwapChain* sc, UINT count, UINT w, UINT h, DXGI_FORMAT fmt, UINT flags) | 11924 |
int32_t aowl_ov_capture_vtable(void** outPresent, void** outResize) | 11964 |
int32_t aowl_ov_start(int32_t toggleVk, int32_t backendPort) | 12049 |
void aowl_ov_stop(void) | 12280 |

