{ "reference": "EterLib/GrpImageTexture.cpp", "reference_sha256": "849e6b9106cd169d97687adbcea6faba8bb0dc2ef682b51993a47443f837c9ae", "priority": "P4", "contracts": [], "functions": { "CGraphicImageTexture::Lock": { "status": "TODO" }, "CGraphicImageTexture::Unlock": { "status": "TODO" }, "CGraphicImageTexture::Initialize": { "status": "TODO" }, "CGraphicImageTexture::Destroy": { "status": "TODO" }, "CGraphicImageTexture::CreateDeviceObjects": { "status": "TODO" }, "CGraphicImageTexture::Create": { "status": "TODO" }, "CGraphicImageTexture::CreateFromTexturePointer": { "status": "TODO" }, "CGraphicImageTexture::CreateDDSTexture": { "status": "ADAPTED", "impl": [ "extension/src/dxt.cpp:decode", "native_render/main.cpp:get_gpu_texture", "native_render/main.cpp:upload_texture" ], "test": "extension/tests/dxt_decode_test.cpp", "note": "The platform CreateDDSTexture member is a stub; its level logic lives in the texture decode/upload the renderer does. mipmapCount = max(1, min(dwMipMapCount, MAX_MIPLEVELS=12)), level i read at sum(dwLinearSize>>2k) with CDXTCImage::Copy's dwLinearSize>>2i bytes (the rest zero, uninitialised in 40250), decoded to RGBA8 (no GPU DXT) and uploaded as file levels, not regenerated. Divergence: without DDSD_MIPMAPCOUNT, or with DDSD_PITCH, 40250 creates the extra levels uninitialised; here that is one level. IsLowTextureMemory's uTexBias level skip is not applied (the port's ms_isLowTextureMemory is false). The far-terrain look NEEDS_LIVE." }, "CGraphicImageTexture::CreateFromMemoryFile": { "status": "ADAPTED", "impl": [ "extension/src/platform/EterLib/GrpImageTexture.cpp:CGraphicImageTexture::CreateFromMemoryFile", "native_render/main.cpp:get_gpu_texture" ], "test": "extension/tests/dxt_decode_test.cpp", "note": "The platform body records only the size and file name; the renderer decodes the bytes. 40250 dispatch is kept: a DXT DDS takes the CreateDDSTexture levels, anything else takes D3DXCreateTextureFromFileInMemoryEx(MipLevels=D3DX_DEFAULT), i.e. a full generated chain (vkCmdBlitImage linear, instead of D3DX's box filter). The invented is_ui_tex rule (no mips for icon/, ui/, locale/ and textures <=128px) was removed. Memory textures (mem:, 40250 CreateTexture levels=1) get one level. GRAPHICS_CAPS_HALF_SIZE_IMAGE/low-memory A4R4G4B4 re-encode is not applied." }, "CGraphicImageTexture::SetFileName": { "status": "TODO" }, "CGraphicImageTexture::CreateFromDiskFile": { "status": "TODO" }, "CGraphicImageTexture::CGraphicImageTexture": { "status": "TODO" }, "CGraphicImageTexture::~CGraphicImageTexture": { "status": "TODO" } } }