aurora/lib/dolphin/gx/GXDispList.cpp
Dávid Balatoni 23522538e1
Support making simple display lists on the fly and more data formats (#5)
* Support making simple display lists on the fly and more data formats

* Add a macro for GXCallDisplayListLE

* Resolve conversations
2025-04-23 08:27:16 -06:00

30 lines
791 B
C++

#include "gx.hpp"
#include "../../gfx/model/shader.hpp"
#define ROUNDUP32(x) (((x) + 31) & ~31)
extern "C" {
void GXBeginDisplayList(void* list, u32 size) {
CHECK(!g_gxState.dynamicDlBuf, "Display list began twice!");
g_gxState.dynamicDlBuf.emplace(static_cast<u8*>(list), size);
}
u32 GXEndDisplayList() {
auto &dlBuf = g_gxState.dynamicDlBuf;
size_t size = dlBuf->size();
size_t paddedSize = ROUNDUP32(size);
dlBuf->append_zeroes(paddedSize - size);
dlBuf.reset();
return paddedSize;
}
void GXCallDisplayListLE(const void* data, u32 nbytes) {
aurora::gfx::model::queue_surface(static_cast<const u8*>(data), nbytes, false);
}
void GXCallDisplayList(const void* data, u32 nbytes) {
aurora::gfx::model::queue_surface(static_cast<const u8*>(data), nbytes, true);
}
}