mirror of
https://github.com/mitch030504/Wiicompiled_VR_Frame.git
synced 2026-10-06 08:00:25 +02:00
30 lines
1.2 KiB
C++
30 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include "common.hpp"
|
|
#include "texture.hpp"
|
|
|
|
#include <dolphin/gx/GXEnum.h>
|
|
|
|
namespace aurora::gfx::efb_ram {
|
|
|
|
void schedule(void* dest, uint32_t width, uint32_t height, GXTexFmt format, TextureHandle texture) noexcept;
|
|
bool has_pending(void* dest = nullptr) noexcept;
|
|
bool prepare_downloads(void* dest = nullptr) noexcept;
|
|
void encode_downloads(const wgpu::CommandEncoder& encoder, void* dest = nullptr) noexcept;
|
|
bool complete_downloads() noexcept;
|
|
void cancel() noexcept;
|
|
|
|
// Frame-latent readbacks for probe-sized CPU-consumed copies: they ride the frame's own encode and
|
|
// retain completed pixels in host memory. The producer publishes a compatible
|
|
// result only when schedule() is called again for that destination, while the
|
|
// game still owns it as a copy buffer. Per frame, from the worker: seal, encode,
|
|
// then after_submit. GPU callbacks must never write to guest RAM.
|
|
void seal_async_downloads() noexcept;
|
|
void encode_async_downloads(const wgpu::CommandEncoder& encoder) noexcept;
|
|
void after_submit() noexcept;
|
|
// Drops requests sealed for a frame that will never be encoded.
|
|
void abort_async() noexcept;
|
|
void shutdown() noexcept;
|
|
|
|
} // namespace aurora::gfx::efb_ram
|