On Mon Mar 4 19:03:27 2024 +0000, Stefan Dösinger wrote:
> What does clipped mean here? Outside of the 0.0;1.0 depth range?
> In the TLVERTEX case you get depth values -0.5, 6.5 and -3.0, suggesting
> that the near and far clip planes don't matter. If I understand this
> test here right they do matter for LVERTEX. That is consistent with
> later d3d versions where Z clipping is essentially disabled when drawing
> pretransformed geometry with the right settings.
> Another way to look at this is that Z clipping is done by
> D3DPROCESSVERTICES_TRANSFORM not the draw op (D3DOP_TRIANGLE).
Yes, depth-clipped.
If I'm understanding your last statement properly, it doesn't seem right. Two triangles could share one or two vertices and still be clipped independently. Further, several of the quads in this test have all vertices outside of [0,1] depth range, yet the portions passing through that depth range do result in successful picks.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3422#note_63433
On Mon Mar 4 19:03:26 2024 +0000, Stefan Dösinger wrote:
> I would expect it to write 3 pick records if the input size in
> record_count is larger than the number retrieved. I.e., if you set
> record_count = 4 and make the array large enough it should write 3 and
> leave the 4th untouched. That's the usual pattern for getters like this
> at least.
I checked this, and you are correct. I will improve the test to cover this as well.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3422#note_63430
Regarding dirty rectangles:<br>
Documentation for `ForceUpdate` states that "The system might update any region that is larger than the specified rectangle, including possibly the entire window". While native seems to use a sort of dirty-rectangle approach, for this MR, I am simply dirtying the entire surface. If someday someone did want to more-closely match the behavior of native, much can be learned from the rectangles passed to the update callbacks.
--
v5: d3drm: Add support for device update callbacks.
d3drm: Blit render target to primary surface on device update.
d3drm: Implement parameter validation for viewport force update.
d3drm/tests: Add tests for Direct3DRMDevice Update
https://gitlab.winehq.org/wine/wine/-/merge_requests/5161