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:
shenlei
2026-09-30 13:31:21 +09:00
co-authored by Claude Opus 5.5
parent 32c5a09d6e
commit 75ea2703c6
10 changed files with 2758 additions and 152 deletions
@@ -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"
]
}
}
}
+143
View File
@@ -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"
]
}
}
}