port: EterImageLib Image/TGAImage/DXTCImage verbatim (+ d3d.h ddraw shim)
-fno-strict-aliasing on the port targets: 40250 relies on MSVC's lack of type-based alias analysis (DXTCImage reads Color8888 through DWORD*). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
32c5a09d6e
commit
75ea2703c6
@@ -622,3 +622,6 @@
|
||||
{"date": "2026-09-30", "unit": "EterLib/MSWindow.cpp", "action": "port", "evidence": "verbatim over new winuser.h shim (platform/Win32User.cpp); 64-bit pointer casts ADAPTED; port.ms_window"}
|
||||
{"date": "2026-09-30", "unit": "EterLib/MSApplication.cpp", "action": "port", "evidence": "verbatim over new winuser.h shim (platform/Win32User.cpp); 64-bit pointer casts ADAPTED; port.ms_window"}
|
||||
{"date": "2026-09-30", "unit": "EterLib/Input.cpp", "action": "port", "evidence": "host key events instead of DirectInput polling; IsPressed/Reset verbatim; port.input"}
|
||||
{"date": "2026-09-30", "unit": "EterImageLib/Image.cpp", "action": "port", "evidence": "verbatim; port.eter_image"}
|
||||
{"date": "2026-09-30", "unit": "EterImageLib/TGAImage.cpp", "action": "port", "evidence": "verbatim; raw save/load flips (desc 0x08), RLE load; port.eter_image"}
|
||||
{"date": "2026-09-30", "unit": "EterImageLib/DXTCImage.cpp", "action": "port", "evidence": "verbatim + DWORD_PTR casts + <d3d.h> ddraw shim; -fno-strict-aliasing for MSVC type punning; port.eter_image"}
|
||||
|
||||
@@ -0,0 +1,192 @@
|
||||
{
|
||||
"reference": "EterImageLib/DXTCImage.cpp",
|
||||
"reference_sha256": "7e1c9d4a562441aea08b89892ab74907a582c6e0c2c8fd1ccce7fe7a300eead2",
|
||||
"priority": "P4",
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"CDXTCImage::CDXTCImage": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:CDXTCImage::CDXTCImage"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CDXTCImage::~CDXTCImage": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:CDXTCImage::~CDXTCImage"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CDXTCImage::Initialize": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:CDXTCImage::Initialize"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CDXTCImage::Clear": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:CDXTCImage::Clear"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CDXTCImage::LoadFromFile": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:CDXTCImage::LoadFromFile"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CDXTCImage::LoadHeaderFromMemory": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:CDXTCImage::LoadHeaderFromMemory"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CDXTCImage::LoadFromMemory": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:CDXTCImage::LoadFromMemory"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CDXTCImage::Copy": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:CDXTCImage::Copy"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CDXTCImage::Unextract": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:CDXTCImage::Unextract"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CDXTCImage::Decompress": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:CDXTCImage::Decompress"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"GetColorBlockColors": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:GetColorBlockColors"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"DecodeColorBlock": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:DecodeColorBlock"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
],
|
||||
"note": "verbatim; reads Color8888 through DWORD* (MSVC aliasing) — port targets build with -fno-strict-aliasing"
|
||||
},
|
||||
"DecodeAlphaExplicit": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:DecodeAlphaExplicit"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"DecodeAlpha3BitLinear": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:DecodeAlpha3BitLinear"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CDXTCImage::DecompressDXT1": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:CDXTCImage::DecompressDXT1"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
],
|
||||
"note": "40250: block/pixel addresses via (DWORD) pointer casts. Port: (DWORD_PTR). Invariant: the same byte offsets; a DWORD would truncate a 64-bit pointer."
|
||||
},
|
||||
"CDXTCImage::DecompressDXT3": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:CDXTCImage::DecompressDXT3"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
],
|
||||
"note": "40250: block/pixel addresses via (DWORD) pointer casts. Port: (DWORD_PTR). Invariant: the same byte offsets; a DWORD would truncate a 64-bit pointer."
|
||||
},
|
||||
"CDXTCImage::DecompressDXT5": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:CDXTCImage::DecompressDXT5"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
],
|
||||
"note": "40250: block/pixel addresses via (DWORD) pointer casts. Port: (DWORD_PTR). Invariant: the same byte offsets; a DWORD would truncate a 64-bit pointer."
|
||||
},
|
||||
"CDXTCImage::DecompressARGB": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:CDXTCImage::DecompressARGB"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"GetNumberOfBits": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:GetNumberOfBits"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CDXTCImage::DecodePixelFormat": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/DXTCImage.cpp:CDXTCImage::DecodePixelFormat"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,143 @@
|
||||
{
|
||||
"reference": "EterImageLib/Image.cpp",
|
||||
"reference_sha256": "4117eebaa0f98aa4d5b75da728c824d148155fb27084ca0b95ea479b113ef204",
|
||||
"priority": "P4",
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"CImage::CImage": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/Image.cpp:CImage::CImage"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CImage::SetFileName": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/Image.cpp:CImage::SetFileName"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CImage::GetFileNameString": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/Image.cpp:CImage::GetFileNameString"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CImage::PutImage": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/Image.cpp:CImage::PutImage"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CImage::GetBasePointer": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/Image.cpp:CImage::GetBasePointer"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CImage::GetLinePointer": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/Image.cpp:CImage::GetLinePointer"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CImage::GetWidth": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/Image.cpp:CImage::GetWidth"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CImage::GetHeight": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/Image.cpp:CImage::GetHeight"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CImage::Clear": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/Image.cpp:CImage::Clear"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CImage::Create": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/Image.cpp:CImage::Create"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CImage::Destroy": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/Image.cpp:CImage::Destroy"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CImage::Initialize": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/Image.cpp:CImage::Initialize"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CImage::IsEmpty": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/Image.cpp:CImage::IsEmpty"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CImage::FlipTopToBottom": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/Image.cpp:CImage::FlipTopToBottom"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CImage::~CImage": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/Image.cpp:CImage::~CImage"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
{
|
||||
"reference": "EterImageLib/TGAImage.cpp",
|
||||
"reference_sha256": "e60338a6416259f5abe9ab8541ba0bbe0790295aadd09794f31c8ccaba3e0c44",
|
||||
"priority": "P4",
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"CTGAImage::CTGAImage": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/TGAImage.cpp:CTGAImage::CTGAImage"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CTGAImage::~CTGAImage": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/TGAImage.cpp:CTGAImage::~CTGAImage"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CTGAImage::Create": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/TGAImage.cpp:CTGAImage::Create"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CTGAImage::LoadFromMemory": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/TGAImage.cpp:CTGAImage::LoadFromMemory"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CTGAImage::LoadFromDiskFile": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/TGAImage.cpp:CTGAImage::LoadFromDiskFile"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CTGAImage::GetRLEPixelCount": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/TGAImage.cpp:CTGAImage::GetRLEPixelCount"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CTGAImage::GetRawPixelCount": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/TGAImage.cpp:CTGAImage::GetRawPixelCount"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CTGAImage::SetCompressed": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/TGAImage.cpp:CTGAImage::SetCompressed"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CTGAImage::SetAlphaChannel": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/TGAImage.cpp:CTGAImage::SetAlphaChannel"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
},
|
||||
"CTGAImage::SaveToDiskFile": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/TGAImage.cpp:CTGAImage::SaveToDiskFile"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
],
|
||||
"note": "verbatim; the RLE branch reads m_pdwEndPtr, which 40250 never sets (no caller saves compressed; TargaResource only loads)"
|
||||
},
|
||||
"CTGAImage::GetHeader": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterImageLib/TGAImage.cpp:CTGAImage::GetHeader"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_eter_image_test.cpp"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user