port: GrpDetector verbatim 40250 over a host IDirect3D8 (Direct3DCreate8); GrpDevice::Create verbatim
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
65c43a84cd
commit
fd4d9a39df
@@ -638,3 +638,4 @@
|
||||
{"date": "2026-09-30", "unit": "EterLib/SkyBox.cpp", "action": "port", "evidence": "verbatim except native-terrain gate on Render/RenderCloud and qualified CSkyObject::Destroy in the destructor; port.login_flow (map teardown), live-client sky screenshot matches previous build"}
|
||||
{"date": "2026-09-30", "unit": "EterLib/GrpScreen.cpp", "action": "port", "evidence": "verbatim; 2d draws -> UIRender commands, Show without the web-page rects; D3D8 shim gains TestCooperativeLevel/Reset/Present/GetVertexShader + ID3DXMesh; port.app_loop (3D line/bar draws, device not lost), port.login_flow (picking/projection)"}
|
||||
{"date": "2026-09-30", "unit": "EterLib/GrpDevice.cpp", "action": "port", "evidence": "verbatim except Create (recording device in place of Direct3DCreate8/detector/CreateDevice, EL3D_ConfirmDevice on its caps); RecordingDevice decodes declaration-only vertex shaders to stream-0 FVFs; GrpScreen Show uses the GrpDevice browser globals; port.app_loop (PT/PNT/PNT2 FVFs, max texture 4096), full ctest, live-client screenshot matches"}
|
||||
{"date": "2026-09-30", "unit": "EterLib/GrpDetector.cpp", "action": "port", "evidence": "verbatim; IDirect3D8 shim completed (adapter count/caps/format checks/CreateDevice) and implemented once as the host adapter behind Direct3DCreate8 (RecordingDevice.cpp), which CPythonGraphic::GetD3D also returns; GrpDevice::Create now verbatim but for the D3DX debug meshes; port.app_loop (800x600x32 HWVP D16 mode, ms_lpd3d, GetString), full ctest, live-client screenshot matches"}
|
||||
|
||||
@@ -0,0 +1,251 @@
|
||||
{
|
||||
"reference": "EterLib/GrpDetector.cpp",
|
||||
"reference_sha256": "91699012029ee35c85e22aaad1ad6732b3c5dcf1dfde38dd5f57fca5a1ca543b",
|
||||
"priority": "P4",
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"CompareD3DDisplayModeOrder": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:CompareD3DDisplayModeOrder"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CAdapterDisplayModeList::GetDisplayModeNum": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CAdapterDisplayModeList::GetDisplayModeNum"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CAdapterDisplayModeList::GetPixelFormatNum": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CAdapterDisplayModeList::GetPixelFormatNum"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CAdapterDisplayModeList::GetDisplayModer": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CAdapterDisplayModeList::GetDisplayModer"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CAdapterDisplayModeList::GetPixelFormatr": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CAdapterDisplayModeList::GetPixelFormatr"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CAdapterDisplayModeList::Build": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CAdapterDisplayModeList::Build"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_SModeInfo::GetString": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_SModeInfo::GetString"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CDeviceInfo::GetD3DModeInfoNum": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CDeviceInfo::GetD3DModeInfoNum"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CDeviceInfo::GetD3DModeInfop": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CDeviceInfo::GetD3DModeInfop"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CDeviceInfo::FindDepthStencilFormat": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CDeviceInfo::FindDepthStencilFormat"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CDeviceInfo::Build": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CDeviceInfo::Build"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CDeviceInfo::Find": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CDeviceInfo::Find"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CDeviceInfo::GetString": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CDeviceInfo::GetString"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CAdapterInfo::GetDesktopD3DDisplayModer": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CAdapterInfo::GetDesktopD3DDisplayModer"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CAdapterInfo::GetDesktopD3DDisplayModep": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CAdapterInfo::GetDesktopD3DDisplayModep"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CAdapterInfo::GetD3DDeviceInfop": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CAdapterInfo::GetD3DDeviceInfop"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CAdapterInfo::GetD3DModeInfop": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CAdapterInfo::GetD3DModeInfop"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CAdapterInfo::Find": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CAdapterInfo::Find"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CAdapterInfo::Build": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CAdapterInfo::Build"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CAdapterInfo::GetString": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CAdapterInfo::GetString"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CDisplayModeAutoDetector::D3D_CDisplayModeAutoDetector": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CDisplayModeAutoDetector::D3D_CDisplayModeAutoDetector"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CDisplayModeAutoDetector::~D3D_CDisplayModeAutoDetector": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CDisplayModeAutoDetector::~D3D_CDisplayModeAutoDetector"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CDisplayModeAutoDetector::GetD3DAdapterInfop": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CDisplayModeAutoDetector::GetD3DAdapterInfop"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CDisplayModeAutoDetector::GetD3DModeInfop": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CDisplayModeAutoDetector::GetD3DModeInfop"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CDisplayModeAutoDetector::Find": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CDisplayModeAutoDetector::Find"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CDisplayModeAutoDetector::Build": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CDisplayModeAutoDetector::Build"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
},
|
||||
"D3D_CDisplayModeAutoDetector::GetString": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"src/platform/EterLib/GrpDetector.cpp:D3D_CDisplayModeAutoDetector::GetString"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -221,7 +221,7 @@
|
||||
"tests/port/port_app_loop_test.cpp",
|
||||
"tests/port/port_login_flow_test.cpp"
|
||||
],
|
||||
"note": "40250: GetDC, Direct3DCreate8, D3D_CDisplayModeAutoDetector Build/Find (EL3D_ConfirmDevice per device), driver black list, CreateDevice with a refresh-rate retry, DXT CheckDeviceFormat, SetWindowPos, D3DXCreateSphere/Cylinder, SIS/3dfx caps. Port: MtCreateRecordingDevice in place of the Direct3D object and detection; the present parameters the detector does not choose are set as 40250; EL3D_ConfirmDevice runs on the one device's caps; no debug meshes; no adapter identifier. Invariant: same state manager, matrix stack, screen matrices, stream shaders, default IB/PDT VB and texture-memory/border caps after Create."
|
||||
"note": "40250: also makes the debug sphere/cylinder meshes (D3DXCreateSphere/D3DXCreateCylinder). Port: verbatim over the host adapter (Direct3DCreate8 in RecordingDevice.cpp: one HAL adapter, CreateDevice makes the recording device); no D3DX mesh builders, so ms_lpSphereMesh/ms_lpCylinderMesh stay NULL. Invariant: same detection, present parameters, state manager, matrices, stream shaders, default buffers and caps flags."
|
||||
},
|
||||
"CGraphicDevice::__InitializePDTVertexBufferList": {
|
||||
"status": "PORTED",
|
||||
|
||||
@@ -17,9 +17,10 @@
|
||||
"src/platform/EterPythonLib/PythonGraphic.cpp:CPythonGraphic::GetD3D"
|
||||
],
|
||||
"test": [
|
||||
"tests/port/port_app_loop_test.cpp",
|
||||
"tests/port/port_login_flow_test.cpp"
|
||||
],
|
||||
"note": "40250 returns the IDirect3D8 it created; the port has no D3D8 object, so a CDummyDirect3D8 answers the only caller (CPythonSystem::GetDisplaySettings) with adapter modes 800x600/1024x768/1280x1024 X8R8G8B8 @60. Invariant: systemSetting.GetResolutionCount() > 0 and every mode passes the >=800x600 filter."
|
||||
"note": "40250 returns ms_lpd3d, which CPythonApplication::Create made before GetDisplaySettings. Port: PythonBoot::Start runs GetDisplaySettings before app.Create, so it returns Direct3DCreate8's host adapter (RecordingDevice.cpp), the object CGraphicDevice::Create later keeps in ms_lpd3d; modes 800x600/1024x768/1280x1024 X8R8G8B8 @60. Invariant: systemSetting.GetResolutionCount() > 0 and every mode passes the >=800x600 filter."
|
||||
},
|
||||
"CPythonGraphic::GetOrthoDepth": {
|
||||
"status": "PORTED",
|
||||
|
||||
Reference in New Issue
Block a user