On Fri Mar 8 17:52:04 2024 +0000, Stefan Dösinger wrote:
> The test passes on the HW device of my way newer Radeon Polaris card on
> Windows 11. As of now I am unsuccessful in getting my Radeon 9000 from
> 2002 to produce any pick results.
> On a quick test run it seems Lego Island is happy with setting *count =
> 0 in IDirect3DDevice::GetPickRecords. That prevents it from trying to
> essentially malloc a random amount of memory. But I am not entirely
> certain, the menu of this game is confusing. I was (intellectually)
> unable to start a game even on Windows...
> I am downloading FIGHTING to see if it works on my old machine and to
> see if it uses a HW device or just the RGB device. Judging by the
> screenshots it might just software render.
Ok, I got pick results out of my Radeon 9000. Let's just say, it is a bit ... picky.
What I had to do was call BeginScene(); Execute(); EndScene(); before calling Pick. But don't do it from the same stack frame, or it fails. And don't think of having some zeroes on the stack. (Same stack frame: If I move the Execute call into get_pickrecords_() picking fails again)
Lego Island works on this GPU though, with the HW device. I can select the lego plants at least, although clicking them is unreliable. Big thanks to itsmattkc for the video in bug 10729, comment 17. I would never have thought of drag and dropping the photo onto the track, or listening to the Lego dude blather forever.
Long story short? I guess this is yet another weirdo bug in my 20 years old GPU driver in a by then already outdated and rarely used feature. We should probably accept zero pick results as broken in a way that doesn't pollute the test too much.
I attached a diff that made parts of the test work:
[urk.diff](/uploads/749fcb673c6a758f7534046413d5e4c7/urk.diff)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3422#note_64049
They are substancially different from any other register type, so
it makes sense to have them stand out. Also, they help segmenting
visually the code into blocks, because labels are usually found
either at the beginning or at the end of a block.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/693
--
v3: vkd3d-shader/spirv: Handle the ORD and UNO instructions.
vkd3d-shader/dxil: Support FCMP_ORD and FCMP_UNO for CMP2.
tests/shader-runner: Add a test for FCMP_ORD (is ordered).
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/686
More commits in one MR than usual, but the implementations are quite short, and it's good to get them all in at once.
--
v2: vkd3d: Implement GetCopyableFootprints1().
vkd3d: Implement CreatePlacedResource1().
vkd3d: Implement CreateCommittedResource2().
vkd3d: Implement GetResourceAllocationInfo2().
tests/d3d12: Add tests for GetCopyableFootprints1().
tests/d3d12: Add tests for CreatePlacedResource1().
tests/d3d12: Add tests for CreateCommittedResource2().
tests/d3d12: Add tests for GetResourceAllocationInfo2().
vkd3d: Add ID3D12Device8 interface stubs.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/683
--
v4: vkd3d-shader: Refactor common code for vkd3d_shader_compile().
vkd3d-shader: Refactor common code for vkd3d_shader_scan().
vkd3d-shader: Treat the HLSL case specially in vkd3d_shader_compile().
vkd3d-shader: Treat the HLSL case specially in vkd3d_shader_scan().
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/679