mirror of
https://github.com/encounter/aurora.git
synced 2026-07-09 18:19:33 -07:00
111 lines
2.0 KiB
C++
111 lines
2.0 KiB
C++
#include "gx.hpp"
|
|
|
|
#include "../internal.hpp"
|
|
#include "gx_fmt.hpp"
|
|
|
|
static aurora::Module Log("aurora::gx");
|
|
|
|
namespace aurora::gx {
|
|
|
|
u8 comp_type_size(GXAttr attr, GXCompType type) noexcept {
|
|
switch (attr) {
|
|
case GX_VA_PNMTXIDX:
|
|
case GX_VA_TEX0MTXIDX:
|
|
case GX_VA_TEX1MTXIDX:
|
|
case GX_VA_TEX2MTXIDX:
|
|
case GX_VA_TEX3MTXIDX:
|
|
case GX_VA_TEX4MTXIDX:
|
|
case GX_VA_TEX5MTXIDX:
|
|
case GX_VA_TEX6MTXIDX:
|
|
case GX_VA_TEX7MTXIDX:
|
|
return 1;
|
|
case GX_VA_CLR0:
|
|
case GX_VA_CLR1:
|
|
switch (type) {
|
|
case GX_RGB565:
|
|
case GX_RGBA4:
|
|
return 2;
|
|
case GX_RGB8:
|
|
case GX_RGBA6:
|
|
return 3;
|
|
case GX_RGBX8:
|
|
case GX_RGBA8:
|
|
return 4;
|
|
}
|
|
default:
|
|
switch (type) {
|
|
case GX_U8:
|
|
case GX_S8:
|
|
return 1;
|
|
case GX_U16:
|
|
case GX_S16:
|
|
return 2;
|
|
case GX_F32:
|
|
return 4;
|
|
default:
|
|
Log.fatal("comp_type_size: Unsupported component type {}", type);
|
|
}
|
|
}
|
|
}
|
|
|
|
u8 comp_cnt_count(GXAttr attr, GXCompCnt cnt) noexcept {
|
|
switch (attr) {
|
|
case GX_VA_PNMTXIDX:
|
|
case GX_VA_TEX0MTXIDX:
|
|
case GX_VA_TEX1MTXIDX:
|
|
case GX_VA_TEX2MTXIDX:
|
|
case GX_VA_TEX3MTXIDX:
|
|
case GX_VA_TEX4MTXIDX:
|
|
case GX_VA_TEX5MTXIDX:
|
|
case GX_VA_TEX6MTXIDX:
|
|
case GX_VA_TEX7MTXIDX:
|
|
return 1;
|
|
case GX_VA_POS:
|
|
switch (cnt) {
|
|
case GX_POS_XY:
|
|
return 2;
|
|
case GX_POS_XYZ:
|
|
return 3;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case GX_VA_NRM:
|
|
switch (cnt) {
|
|
case GX_NRM_XYZ:
|
|
return 3;
|
|
case GX_NRM_NBT:
|
|
case GX_NRM_NBT3:
|
|
return 9;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case GX_VA_CLR0:
|
|
case GX_VA_CLR1:
|
|
return 1;
|
|
case GX_VA_TEX0:
|
|
case GX_VA_TEX1:
|
|
case GX_VA_TEX2:
|
|
case GX_VA_TEX3:
|
|
case GX_VA_TEX4:
|
|
case GX_VA_TEX5:
|
|
case GX_VA_TEX6:
|
|
case GX_VA_TEX7:
|
|
switch (cnt) {
|
|
case GX_TEX_S:
|
|
return 1;
|
|
case GX_TEX_ST:
|
|
return 2;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
Log.fatal("comp_cnt_count: Unsupported attr/cnt {} {}", attr, cnt);
|
|
}
|
|
|
|
} // namespace aurora::gx
|