port: GrpImageInstance/GrpExpandedImageInstance verbatim; fix SCREEN blend factor
Both units are the 40250 bodies; only the PDT-stream draw becomes UIRenderAddImage (with the rendering mode). SCREEN/COLOR_DODGE were packed as 0x28 (INVDESTALPHA+ONE); 40250 uses INVDESTCOLOR+ONE (0x2A). OnIsType calls the base OnIsType instead of 40250's recursing IsType. port.grp_resource covers the quads, UVs, colour and blend mode. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
010e99f070
commit
65777331f7
@@ -631,3 +631,5 @@
|
||||
{"date": "2026-09-30", "unit": "EterLib/GrpImageTexture.cpp", "action": "port", "evidence": "40250 flow: pack reload in CreateDeviceObjects, CDXTCImage header check + CreateDDSTexture size/mip bias, CreateFromDiskFile; handles stay platform textures; port.grp_resource"}
|
||||
{"date": "2026-09-30", "unit": "EterLib/GrpIndexBuffer.cpp", "action": "port", "evidence": "CPU buffers, bodies otherwise 40250; port.grp_resource"}
|
||||
{"date": "2026-09-30", "unit": "EterLib/GrpVertexBuffer.cpp", "action": "port", "evidence": "CPU buffers, bodies otherwise 40250; port.grp_resource"}
|
||||
{"date": "2026-09-30", "unit": "EterLib/GrpImageInstance.cpp", "action": "port", "evidence": "verbatim; draw via UIRenderAddImage; port.grp_resource quad/uv/colour"}
|
||||
{"date": "2026-09-30", "unit": "EterLib/GrpExpandedImageInstance.cpp", "action": "port", "evidence": "verbatim; draw + blend mode via UIRenderAddImage, SCREEN/COLOR_DODGE blend fixed to INVDESTCOLOR (0x2A); OnIsType recursion avoided; port.grp_resource"}
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
{
|
||||
"reference": "EterLib/GrpExpandedImageInstance.cpp",
|
||||
"reference_sha256": "1e3eb000f12b2ab0658da06ff55843874a2fa70619d249d9246c545746396a78",
|
||||
"priority": "P4",
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"CGraphicExpandedImageInstance::CreateSystem": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::CreateSystem"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicExpandedImageInstance::DestroySystem": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::DestroySystem"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicExpandedImageInstance::New": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::New"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicExpandedImageInstance::Delete": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::Delete"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicExpandedImageInstance::OnRender": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::OnRender"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
],
|
||||
"note": "40250: CULLMODE CCW for a mirrored scale, Save/RestoreRenderState SRCBLEND/DESTBLEND per RENDERING_MODE, PDT-stream fill-rect draw. Port: the verbatim vertices plus m_iRenderingMode go to UIRenderAddImage; the Vulkan UI pipeline (cull none) maps SCREEN/COLOR_DODGE to INVDESTCOLOR+ONE and MODULATE to ZERO+SRCCOLOR (ui_batches.cpp). Invariant: same corners, UVs and blend factors."
|
||||
},
|
||||
"CGraphicExpandedImageInstance::SetDepth": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::SetDepth"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicExpandedImageInstance::SetOrigin": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::SetOrigin"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicExpandedImageInstance::SetRotation": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::SetRotation"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicExpandedImageInstance::SetScale": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::SetScale"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicExpandedImageInstance::SetRenderingRect": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::SetRenderingRect"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicExpandedImageInstance::SetRenderingMode": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::SetRenderingMode"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicExpandedImageInstance::Type": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::Type"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicExpandedImageInstance::OnSetImagePointer": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::OnSetImagePointer"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicExpandedImageInstance::OnIsType": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::OnIsType"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
],
|
||||
"note": "40250: falls back to CGraphicImageInstance::IsType, which re-dispatches to this override and recurses until stack overflow for a foreign type. Port: calls the base OnIsType. Invariant: TRUE for its own and CGraphicImageInstance type, FALSE otherwise."
|
||||
},
|
||||
"CGraphicExpandedImageInstance::Initialize": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::Initialize"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicExpandedImageInstance::Destroy": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::Destroy"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicExpandedImageInstance::CGraphicExpandedImageInstance": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::CGraphicExpandedImageInstance"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicExpandedImageInstance::~CGraphicExpandedImageInstance": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpExpandedImageInstance.cpp:CGraphicExpandedImageInstance::~CGraphicExpandedImageInstance"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"reference": "EterLib/GrpFontTexture.cpp",
|
||||
"reference_sha256": "d50b85e6e494b2e2a10289f40a5ebc518be03e1e73d60cd7463fd2dc5032ba00",
|
||||
"priority": "P4",
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"CGraphicFontTexture::CGraphicFontTexture": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CGraphicFontTexture::~CGraphicFontTexture": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CGraphicFontTexture::Initialize": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CGraphicFontTexture::IsEmpty": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CGraphicFontTexture::Destroy": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CGraphicFontTexture::CreateDeviceObjects": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CGraphicFontTexture::DestroyDeviceObjects": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CGraphicFontTexture::Create": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CGraphicFontTexture::GetFont": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CGraphicFontTexture::AppendTexture": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CGraphicFontTexture::UpdateTexture": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CGraphicFontTexture::GetCharacterInfomation": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CGraphicFontTexture::UpdateCharacterInfomation": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CGraphicFontTexture::CheckTextureIndex": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CGraphicFontTexture::SelectTexture": {
|
||||
"status": "TODO"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,225 @@
|
||||
{
|
||||
"reference": "EterLib/GrpImageInstance.cpp",
|
||||
"reference_sha256": "59c2dd35bca5a7ad3cf517070a6188ee37ac41cb1fd53ef3ee65437b737b622c",
|
||||
"priority": "P4",
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"CGraphicImageInstance::CreateSystem": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::CreateSystem"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::DestroySystem": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::DestroySystem"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::New": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::New"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::Delete": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::Delete"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::Render": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::Render"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::OnRender": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::OnRender"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
],
|
||||
"note": "40250: SetPDTStream + DEFAULT_IB_FILL_RECT + stage-0 texture, DrawIndexedPrimitive. Port: the same four TPDTVertex corners/UVs/diffuse go to UIRenderAddImage. Invariant: quad = image rect at m_v2Position-0.5, UVs = rect/texture size."
|
||||
},
|
||||
"CGraphicImageInstance::GetTextureReference": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::GetTextureReference"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::GetTexturePointer": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::GetTexturePointer"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::GetGraphicImagePointer": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::GetGraphicImagePointer"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::GetWidth": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::GetWidth"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::GetHeight": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::GetHeight"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::SetDiffuseColor": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::SetDiffuseColor"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::SetPosition": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::SetPosition"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::SetImagePointer": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::SetImagePointer"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::ReloadImagePointer": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::ReloadImagePointer"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::IsEmpty": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::IsEmpty"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::Type": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::Type"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::IsType": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::IsType"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::OnIsType": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::OnIsType"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::OnSetImagePointer": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::OnSetImagePointer"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::Initialize": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::Initialize"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::Destroy": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::Destroy"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::CGraphicImageInstance": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::CGraphicImageInstance"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
},
|
||||
"CGraphicImageInstance::~CGraphicImageInstance": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpImageInstance.cpp:CGraphicImageInstance::~CGraphicImageInstance"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_grp_resource_test.cpp"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user