feat(gx): add TextureAllocMippedImg

This commit is contained in:
fallenoak 2025-10-20 23:00:37 -05:00
parent a040fdbd5b
commit bcf6f34e81
No known key found for this signature in database
GPG Key ID: 7628F8E61AEA070D
2 changed files with 26 additions and 0 deletions

View File

@ -31,6 +31,19 @@ namespace Texture {
};
}
int32_t s_pixelFormatToMipBitsCache[NUM_PIXEL_FORMATS] = {
-1, // PIXEL_DXT1
-1, // PIXEL_DXT3
-1, // PIXEL_ARGB8888
0, // PIXEL_ARGB1555
0, // PIXEL_ARGB4444
0, // PIXEL_RGB565
-1, // PIXEL_A8
-1, // PIXEL_DXT5
-1, // PIXEL_UNSPECIFIED
1, // PIXEL_ARGB2565
};
static CImVector CRAPPY_GREEN = { 0x00, 0xFF, 0x00, 0xFF };
void AsyncTextureWait(CTexture* texture) {
@ -351,6 +364,17 @@ CGxTex* TextureAllocGxTex(EGxTexTarget target, uint32_t width, uint32_t height,
return nullptr;
}
MipBits* TextureAllocMippedImg(PIXEL_FORMAT pixelFormat, uint32_t width, uint32_t height) {
auto cache = s_pixelFormatToMipBitsCache[pixelFormat];
if (width < 8 || height < 8 || width > 256 || height > 256 || cache == -1) {
return MippedImgAllocA(pixelFormat, width, height, __FILE__, __LINE__);
}
// TODO
return nullptr;
}
void GxTexUpdate(CGxTex* texId, int32_t minX, int32_t minY, int32_t maxX, int32_t maxY, int32_t immediate) {
CiRect rect = { minY, minX, maxY, maxX };
GxTexUpdate(texId, rect, immediate);

View File

@ -47,6 +47,8 @@ uint32_t MippedImgCalcSize(uint32_t, uint32_t, uint32_t);
CGxTex* TextureAllocGxTex(EGxTexTarget, uint32_t, uint32_t, uint32_t, EGxTexFormat, CGxTexFlags, void*, void (*userFunc)(EGxTexCommand, uint32_t, uint32_t, uint32_t, uint32_t, void*, uint32_t&, const void*&), EGxTexFormat);
MipBits* TextureAllocMippedImg(PIXEL_FORMAT pixelFormat, uint32_t width, uint32_t height);
HTEXTURE TextureCacheGetTexture(char*, char*, CGxTexFlags);
HTEXTURE TextureCacheGetTexture(const CImVector&);