VulkanWindow's 3000-line TU becomes sdl_window.cpp (window, events, cursor, screenshot BMP), vk_device.cpp (device, swapchain, MSAA, framebuffers), vk_pipelines.cpp (render passes, pipelines), vk_resources.cpp (buffers, render targets, geometry), vk_textures.cpp (textures, samplers, descriptors), vk_frame.cpp (render) and ui_batches.cpp; vulkan_window.cpp keeps construction and timing stats. Function bodies move verbatim. render() now reads fence/acquire -> prepare_draws -> prepare_ui -> write_draw_states -> record_passes -> record_readbacks -> submit -> finish_readbacks -> present, with FrameDraws / Readback carrying the locals that used to live across 500 lines. Verified: login-screen screenshot byte-identical to HEAD; game-world draw/vertex/index/UI counts identical; ctest, port_gate macos+android, Android build pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
61 lines
2.8 KiB
JSON
61 lines
2.8 KiB
JSON
{
|
|
"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": [
|
|
"src/host/dxt.cpp:decode",
|
|
"src/host/vk_textures.cpp:get_gpu_texture",
|
|
"src/host/vk_textures.cpp:upload_texture"
|
|
],
|
|
"test": "tests/port/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": [
|
|
"src/platform/EterLib/GrpImageTexture.cpp:CGraphicImageTexture::CreateFromMemoryFile",
|
|
"src/host/vk_textures.cpp:get_gpu_texture"
|
|
],
|
|
"test": "tests/port/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"
|
|
}
|
|
}
|
|
}
|